本文主要交流NVMe设计思路,在本博客已给出相关博文几十篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。
2) PCIe 初始化功能测试结果
PCIe 初始化是初始化功能的重要步骤之一, 这一过程中对 PCIe 链路上的所有设备进行枚举和初始化配置。 对 PCIe 初始化功能的验证主要考虑待测设计能否正确的遍历总线、 枚举设备和初始化配置空间。 在本例最小存储子系统模型中, 待测设计应能够正确地配置桥设备模型和 NVMe 设备模型的配置空间。

图2 PCIe 初始化测试仿真波形一
PCIe 初始化开始执行后, 首先配置位于总线号 0, 设备号 0 的桥设备模型, 配置过程波形如图2所示, 图中bus_no表示当前配置总线号, dev_no表示设备号, reg_no表示寄存器号, 也对应双字对齐的寄存器地址。 待测设计首先读取了配置空间 00h 寄存器获取设备与供应商 ID, 然后读取 0Ch 寄存器获取配置空间类型, 读取的数据显示配置空间类型为 TYPE1,然后分别向 BAR0( 10h)、 BAR1( 14h) 寄存器写入32’hFFFFFFFF, 然后读取获得可分配的空间大小, BAR0、 BAR1 读回数据为 0, 表示未使用, 与预先配置一致。 然后向 18h 寄存器配置当前节点信息, 向 20h、 24h、28h 寄存器配置当前节点地址信息, 配置的信息均与拓扑结构一致。
|