本博文主要交流设计思路,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。
这里进行实际环境中测试 DMA 读写功能, 测试过程中的数据传输在测试环境硬件平台的 DDR 与 NVMe SSD 之间发生。 测试程序与仿真测试程序不同点在于, 首先对 DDR 部分地址进行初始化数据的写入, 然后将该地址域数据通过 DMA 写功能写入 SSD, 再通过 DMA 读功能刚刚写入的地址域的数据读出到另一片 DDR 地址域,对比两片 DDR 地址域的数据是否一致, 判断 DMA 功能是否实现。

图 1DMA 功能测试串口打印信息
DMA 功能测试的部分串口打印信息如图 1 所示。 首先创建了 I/O 完成和提交队列, 然后请求 DMA 写, 长度为 8 即 4KB, 源地址为 32’h10000000, 该地址位于DDR 地址域中, 目的地址为 32’h1000, 该地址为 SSD 中的逻辑块地址。 然后请求DMA 读, 长度为 4KB, 源地址为 SSD 中的 32’h1000 逻辑块地址, 目的地址为位于DDR 中的 32’h20000000 地址。 最后对比 DDR 中的 32’h10000000 和 32’h20000000 两个地址域的 4KB 范围的数据, 对比结果表明数据一致, 符合设计预期。
B站已给出相关性能的视频,如想进一步了解,请搜索B站用户:专注与守望
链接:https://space.bilibili.com/585132944/dynamic?spm_id_from=333.1365.list.card_title.click
|