1.4. 参考设计
本参考设计使用FPGA架构中FPGA里的64-KB双端口存储器。读DMA把数据从系统存储器移动到64-KB双端口存储器。写DMA把数据从64-KB双端口移动到系统存储器。由于此存储器为双端口,所以读和写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_slave和rd_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_master和rd_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的目的地址。 为了避免数据损坏,软件将存储器划分成独立的区域用于读和写。区域互不重叠。 |