如何用 QDMA访问OCM

作者:Iris Yang,AMD工程师;文章来源:AMD开发者社区

介绍

       这篇博客文章将详细介绍如何通过NOC使用CPM访问片上内存(OCM)。该设计的主要重点是确保PCI接口的地址映射配置正确,使得其可以正确访问OCM地址范围。通过实现这一点,我们可以促进PCIe主接口和OCM之间的高效数据传输和通信。本博客将提供建立此连接所需的配置和步骤指南。

理解片上内存(OCM)

      片上内存(OCM)通过其128位AXI接口端口访问256 KB内存。可以通过LPD OCM交换机访问OCM。从RPU的内存访问优先级高于其他内存事务请求。具体的信息请参考am011。

On-Chip Memory • Versal Adaptive SoC Technical Reference Manual (AM011) • Reader • AMD Technical Information Portal

1.png

用 CPM生成访问OCM的设计

   要生成一个通过CPM(PCIe)访问片上内存(OCM)的设计,需要使用带PCIe连接 Versal CIPS IP,并确保正确的PCIe到AXI地址转换和配置,请按照以下步骤操作:

步骤

准备Versal器件

首先选择带 CPM 的Versal的开发板 (vck190/vpk120 等),并使用Vivado或相关工具设置设计环境。

CIPS IP配置:

  • 将CIPS 加入到设计中。

  • 配置PCIe控制器选择DMA模式运行。

  • 根据项目要求选择PCIe接口的所需速度和链路宽度。

2.png

CPM配置:

  • 使用CPM接口通过NOC访问OCM,选择QDMA ,桥接 bridge或XDMA模式的应用模式也类似)。

3.png

PCIe地址转换:

  • GUI中,配置PCIe到AXI的地址转换:

  • 启用BAR1(AXI master bridge)进行PCIe地址转换。

  • 将PCIe到AXI的地址转换设置为FFFC0000(与OCM地址范围一致)。将大小设置为256KB,并将方向设置为NOC1。

4.png

地址编辑器配置 (address editor):

确保在地址编辑器中为 PCIe 访问设置了正确的 OCM 地址(FFFC0000)。这个地址与下方所示的 am011 中的表 147 一致。

5.JPG

以下截图来自OCM Address Locations • Versal Adaptive SoC Technical Reference Manual (AM011) • Reader • AMD Technical Information Portal 表147

6.JPG

测试设计

配置 Versal FPGA、重新启动并运行 lspci,然后执行 devmem2 写命令以测试 OCM 访问,请按照以下步骤进行操作:

配置和测试步骤:

1. 配置 Versal FPGA:

  • 确保 Versal FPGA 配置了所需的设计,包括 PCIe 接口和 CPM 配置,符合您的要求。

2. 重新启动系统:

  • 重新启动系统。

3. 检查 PCIe 设备:

  • 查找与您的 Versal FPGA PCIe 接口对应的 PCIe 设备。设备的Device ID 应该和符合IP 配置的内容,这个例子用了默认的b03f

  • 注意:在此测试中,不需要 QDMA 驱动程序。

  • 重新启动后,使用 lspci 命令列出 PCIe 设备:

7.png

4. 使用 devmem2 访问 BAR1:

写入 BAR1:

使用 devmem2 向 BAR1 内的目标地址写入数据。将 <target_address> 和 <data> 替换为适当的值:

devmem2 <target_address> w <data>

读取 BAR1:

使用 devmem2 从 BAR1 内的目标地址读取数据。将 <target_address> 替换为适当的地址:

devmem2 <target_address>

结论:

通过遵循上述步骤和配置,应该可以通过 CPM 使用 CIPS IP 在具有 PCIe 连接的 Versal 设备上访问 OCM。用户需要确保地址转换和配置设置是正确的。

最新文章

最新文章