L-tile和H-tile Avalon® 存储器映射 Intel® FPGA IP PCI Express* 用户指南

ID 683667
日期 11/11/2021
Public
文档目录

7.2.2. DMA描述符控制器寄存器

DMA Descriptor Controller管理Read和Write DMA操作。DMA Descriptor Controller适用于Endpoint系列。Descriptor Controller支持最多128个描述符用于每个Read和Write Data Mover。Read和Write均以FPGA角度而言。“读”是从 PCIe* 地址空间到FPGA Avalon® -MM地址空间。“写”是从FPGA Avalon® -MM空间对 PCIe* 地址空间。

根据位于 PCIe* 地址空间中描述符列表中的位置和大小编程Descriptor Controller内部寄存器。DMA Descriptor Controller指示Read Data Mover将该列表复制到其内部FIFO。DMA Descriptor Controller被例化为单独组件时,会驱动RdDmaRxData_i[159:0]WrDmaRxData_i[159:0]总线上的列表条目。DMA Descriptor Controller内嵌于Avalon-MM DMA桥时,会驱动内部总线上的该信息。

Read Data Mover将数据从PCIe地址空间传送到Avalon-MM地址空间。并在PCIe链路上发布存储器读TLP。然后将返回数据写入 Avalon® -MM地址空间中的某个地方。源地址是PCIe地址空间中数据的地址。目的地址位于Avalon-MM地址空间中。

Write Data Mover从Avalon-MM地址空间读取数据然后写入PCIe地址空间。并在PCIe链路上发布存储器写TLP。源地址在Avalon-MM地址空间中。目的地址位于PCIe地址空间。

DMA Descriptor Controller将读写描述符完成状态记录在单独的状态列表中。每个列表有128个连续DWORD条目对应128个描述符。在值位于偏移0x200的状态条目被烧写到RC Read Descriptor BaseRC Write Descriptor Base寄存器后,实际描述符即刻被储存。状态和描述符列表必须位于 PCIe* 物理地址空间的32-byte边界上。

Descriptor Controller将1写入状态DWORD的Update位以表示成功完成。Descriptor Controller还为每次事务的最后一个描述符发送MSI中断,或每个描述符后,如果RD_CONTROLWR_CONTROL寄存器中的Update位被设置,也会发送MSI中断。接收该MSI后,主机软件轮询Update位以确定状态。存储器中状态列表优先于描述符列表。每个描述符完成时,Descriptor Controller既不写Update位也不发送MSI。除非设置RD_CONTROLWR_CONTROL寄存器中的Update位,否则其仅为ID储存于RD_DMA_LAST PTRWR_DMA_LAST_PTR寄存器的描述符写Update位或发送MSI。

注: 因为DMA Descriptor Controller使用FIFO储存描述符列表条目,所以一旦开始描述符列表中的指定传送就不可重编程DMA Descriptor Controller。