国产高速存储方案主要是使用nvme ip实现高速存储方案,nvme ip采用纯verilog语言实现,用户拿到nvme ip使用起来也很简单。
先看看效果如
zu7eg板子,这个芯片支持pcie3.0 x4.
zynq 7045板子只支持pcie 2.0 x4
速度测试,测试nvme ip的代码采用c语言,在zu板卡上再ps端跑测试代码,测试性能如下所示。
nvme ip bd工程如下所示,注意到这个bd工程搭建了arm核,这个核仅仅是用于测试nvme ip的测试代码,用户正式使用时可以换成自己的verilog代码。
zu7eg资源使用情况
zynq7035资源使用情况
nvme ip接口
nvme 提供了admin管理命令读写接口,用户通过填充admin sq buff实现发送命令,通过polling cq寄存器确认该命令是否完成。
nvme提供了io命令,io命令提供了lba,command id,len,opcode,prp地址等寄存器,用户填充这些命令后,通过trigger寄存器实现命令发送,nvme ip实现了qd128队列深度,用户通过polling寄存器找到空闲 的queue node实现sq的填充。通过polling cq完成寄存器确认 某个command id命令是否完成。
nvme ip支持如下命令