本博文主要交流设计思路,在本博客已给出相关博文九十多篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。若有NVME或RDMA 产品及项目需求,请看B站视频后联系。
在初始化结束后, NoP 逻辑加速引擎进入正常工作状态, 此时配置队列控制寄存器创建队列, 一方面测试 NVMe 的指令提交与完成机制, 另一方面也证实初始化功能的正确性。
配置地址为 0xA0000008 的队列控制寄存器波形如图 1 所示, 配置数据为0x10007 表示创建深度为 7 的 I/O 完成队列。 在配置寄存器一段时间后, NoP 逻辑加速引擎自动生成了 NVMe 指令写入 Admin 提交队列, 触发配置门铃请求, 由于无法获取 PCIe 信号波形, 抓取 PCIE 集成块接口信号。 这里的 axis_rq 接口发起了写 TLP请求, 写地址为0xB0001000, 写数据为 1, 表示向 Admin 提交门铃寄存器更新值为1 的门铃。
图1 队列控制寄存器波形图
如图 2 所示在随后的 231 时刻, NVMe 设备通过 axis_cq 接口发送了一个 TLP读请求, 请求地址为 Admin SQ 地址, 证明 NVMe 设备正确的收到了门铃信息。 在241 时刻, NoP 逻辑加速引擎通过 axis_cc 接口返回了 64B 长度的指令条目, 条目内容为创建 I/O 提交队列指令条目, NVMe 设备开始处理该条指令。
图2 NVMe 读指令请求响应波形图
B站已给出相关性能的视频,如想进一步了解,请搜索B站用户:专注与守望
链接:https://space.bilibili.com/58513 ... st.card_title.click
|