1、测试环境
FPGA NVMe Host控制器测试环境为Zynq45T FPGA +闪迪1T NVMe硬盘。
2、FPGA NVMe Host控制器结构
FPGA NVMe Host控制器采用纯PL 设计,设计语言为Verilog,支持NVMe硬盘PCie EP初始化,支持NVMe配置寄存器空间初始化,支持Admin指令管理,组要包括可识别命名空间和控制器数据结构,以及Namespace list ID的获取;同时支持IO队列的创建。
2.1FPGA NVMe Host控制器特性
- Admin队列支持256个entries;
- IO队列支持64个entries;
- 同时支持8个IO队列,每个队列时分复用,可执行写或者读NVme操作;
- 支持MSI中断和INTA中断,MSI中断支持9个向量或者1个向量号;
- 支持PRP List模式执行DMA数据搬移。
备注:目前的NVMe Host IO队列采用FPGA片上RAM,所以,属于简化的设计模式,最大读写速率每个通道是150MB/s;每个通道速率彼此独立,不会互相干扰。
3、FPGA NVMe Host控制器测试寄存器
3.1 通过Admin指令获取NVMe控制器数据结构
3.2 通过Admin指令获取NVMe 命名空间数据结构
3.3 通过初始化状态机获取NVMe EP配置空间数据结构
3.4 通过初始化状态机获取NVMe 控制器配置空间数据结构
3.5 通过初始化状态机获取ROOT配置空间数据结构
4、FPGA NVMe Host控制器测试数据
NVme 写操作波形如下,用户侧支持31bit的总扇区数进行读写,NVMe Host控制器内部惊醒指令拆分。
NVme 读操作波形如下,用户侧支持31bit的总扇区数进行读写,NVMe Host控制器内部惊醒指令拆分。