国产fpga nvme ip高速存储方案设计

国产高速存储方案主要是使用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支持如下命令