本文主要交流NVMe设计思路,在本博客已给出相关博文几十篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成可靠IP设计。
需要商用IP,请看最下面信息。
4) 完成指令处理测试结果
测试步骤 4 关键信号波形如图1 所示, 通过 axis_cc 接口获取 NVMe 指令后,NVMe 设备执行指令操作, 在操作完成后, 通过 axis_cq 接口向对应提交队列的完成队列写入完成指令条目。 完成指令条目的关键字段被提取写入队列管理模块, 完成条目数据(cq_wdata) 为 1, 表示指令正常完成, 指令 ID 为 0, 指令对应提交队列 ID为 0, 提交队列头门铃为 1。 队列管理模块随后将 Admin 提交队列头门铃(asq_head)更新为 1, 仿真行为符合设计预期, 测试通过。

图1 完成指令处理仿真波形图
5) 完成队列门铃请求测试结果
测试步骤 5 关键信号波形如图 2 所示, 处理完成条目后, Admin 完成队列头门铃(acq_h) 从 0 跳变到 1, 发起 Admin 完成队列门铃请求(acq_db_req), 得到仲裁后( acq_db_grant) 通过请求总线接口向 NVMe 设备发送写门铃请求。 请求地址(req_addr)为 0xB0001004, 对应 Admin 完成队列门铃地址; 请求写数据(req_wr_data)为 1, 对应 Admin 完成队列的头门铃当前值。 仿真行为符合设计预期, 测试通过。
图2 完成队列门铃请求仿真波形图
|