AN 690:PCI Express Avalon-MM DMA参考设计

ID 683824
日期 5/28/2016
Public

1.4. 参考设计

本参考设计使用FPGA架构中FPGA里的64-KB双端口存储器。读DMA把数据从系统存储器移动到64-KB双端口存储器。写DMA把数据从64-KB双端口移动到系统存储器。由于此存储器为双端口,所以读和写DMA可同时访问存储器。

图 1. DMA参考设计框图


图 2. DMA参考设计 Qsys® 连接


表 10.  AVMM DMA参考设计模块及端口说明
模块 端口 说明
Avalon-MM DMA pcie_256_dma 这是256-bit Avalon-MM DMA模块。其包含2个读和写data mover,1个RX Avalon-MM master,1个TX Avalon-MM slave,和1个内部描述符控制器。本参考设计使用1个内部描述符控制器;然而,还可使用参数编辑器指定1个外部描述符控制器。
RXM_BAR0 N/A 这个是Avalon-MM主端口。它提供到PCIe主机的存储器访问。主机通过该端口编程描述符控制器。由于本参考设计使用1个内部描述符控制器,所以该端口连接未出现在Qsys中。此连接在Avalon-MM DMA模块内进行。
RXM_BAR4 Rxm_BAR4 这个是Avalon-MM主端口。它提供到PCIe主机的存储器访问。本参考设计中,它与64-KB片上存储器的1个端口连接。

常见应用中,软件控制该端口以初始化片上存储器并读回数据用于结果验证。

TX Avalon-MM Slave Txs 这个是Avalon-MM从端口。常见应用中,Avalon-MM主端口驱动此端口以发送存储器读或写到PCIe域。

在DMA完成时,描述符控制器通过它将DMA状态写回PCIe域中描述符数据形式。描述符控制器还是用该端口发送上游MSI中断。

Read Data Mover dma_rd_master 这个是Avalon-MM主端口。

在正常读DMA操作期间,Read Data Mover通过端口s2将数据从PCIe域移动至片上存储器。Read Data Mover还把从PCIe域获取的描述符写入描述符控制器中的FIFO。由于存在两个独立的描述符组,一组用于写DMA,另一组用于读DMA;dma_rd_master端口与两个端口连接。连接wr_dts_slave用于写DMA描述符FIFO,以及连接rd_dts_slave用于读DMA描述符FIFO。

Write Data Mover dma_wr_master 这个是Avalon-MM主端口。

Write Data Mover生成读并从片上存储器读取数据然后把数据写入PCIe域中的目的地。本参考设计中,它使用另一端口访问双端口片上存储器。

FIFO in Descriptor Controller wr_dts_slaverd_dts_slave 这个Avalon-MM从端口用于描述符控制器中的FIFO。

当Read Data Mover从系统存储器获得描述符时,就通过该端口将描述符写入FIFO。

由于存在两个独立的描述符组用于读和写,因此有两个可用端口。

关于写DMA,FIFO的地址范围是0x0801_2000-0x0801_3FFF

关于读DMA,FIFO的地址范围是0x0801_0000-0x0801_1FFF

软件枚举DMA建立这些地址。

Control in Descriptor Controller wr_dcm_masterrd_dcm_master 描述符控制器的控制模块中有两个传输和接收端口。1个用于读DMA,另1个用于写DMA。接收端口连接到RXM_BAR0。传输端口连接到Txs

由于是内部连接来自RXM_BAR0的接收路径,所以该连接未出现在DMA 参考设计Qsys连接图示中。至于发送路径,读和写DMA端口都是外部连接到Txs。这些端口出现在DMA参考设计Qsys连接图示中。

64k-byte Dual Port RAM Onchip_memory2_0 这是64-KB双端口片上存储器。在Avalon-MM总线上的地址范围是0x0800_0000-0x0800_FFFF。该地址是写DMA的源地址或是读DMA的目的地址。

为了避免数据损坏,软件将存储器划分成独立的区域用于读和写。区域互不重叠。