如何解析vivadoxdma(pcie)核数据传输原理(双口ram)?

如题所述

上一期内容涉及了DDR配置的讲解,相信已有不少读者成功完成配置。接下来,我们将继续深入,探讨如何在Vivado中配置PCIE的IP,通过XDMA实现高性能数据传输。

完整工程文件下载:

提取码:4sxh

PCIE的实现通常依赖于XDMA,这是一种由Xilinx提供的高性能、可配置的DMA解决方案,适用于PCI Express 2.0与3.0的SG模式,并支持AX 4接口或AX-Stream接口。在SG模式下,主机通过构建链表来组织待传输数据,并通过BAR(Base Address Register)将链表首地址传递给XDMA。XDMA根据链表结构依次完成链表指定的传输任务。

XDMA在Vivado中适用于7系列、UltraScale系列、UltraScale+系列等不同产品线,其配置界面与操作基本一致。这里以KU040板为例进行演示,其他系列用户可参考Vivado文档PG195获取详细指导,建议使用较新版本的Vivado进行配置。

为了更好地理解XDMA的工作原理,下面将简要介绍其传输流程与关键组件。

H2C通道与C2H通道负责主机到卡与卡到主机的数据传输。H2C通道在Vivado IDE中进行配置,用于处理从主机至卡的DMA传输。它会根据最大读取请求大小与内部资源来拆分读取请求。未完成的请求数量通过RNUM_RIDS参数进行配置。从DMA通道向PCIe RQ块发出读取后开始传输,直至用户接口接收到已按顺序完成写入的确认为止。完成传输后,DMA通道会发出写回或中断以通知主机传输已完成。

在连接到主机的读取接口上,H2C通道会根据可用数据FIFO空间来拆分传输事务,确保满足最大读取请求大小的要求。完成数据返回到已分配的数据缓冲器位置,H2C通道在接收到任何完成数据时开始向用户接口发出写入请求,同时按最大有效载荷大小对写入请求进行分割。在AXI4-Stream用户接口配置中,此操作为透明处理。

对于C2H通道,其配置数量在Vivado IDE中进行控制,同样通过WNUM_RIDS参数配置未完成的传输数量。在AXI4-Stream配置中,先设置DMA传输细节,随后在AXI4-Stream接口上接收数据。这通常是通过接收DMA描述符来完成的。在准备好请求ID并启用通道后,通道的AXI4-Stream接口即可接收数据并执行DMA。在AXI4 MM接口配置中,通过向AXI4 MM接口发出读取请求来分配请求ID。C2H通道在接收到PCIe IP指示的写入请求后,写入请求即告完成。

在启用多个通道时,AXI4主接口上的传输事务将在所有选中的通道内交织进行,使用简单的循环协议维护通道间的同步。传输事务的粒度取决于主机最大有效载荷大小、页面大小及其他主机设置。

AXI4-Lite主接口用于实现AXI4-Lite主接口总线协议,允许主机生成32位读取与写入请求。这些请求通过PCIe到DMA旁路BAR接收,读取完成数据返回至主机。

AXI4-Lite从接口则负责用户逻辑对DMA内部寄存器的32位读取或写入操作,不支持对PCIe集成块寄存器的访问。

主机到DMA旁路主接口接收来自PCIe到DMA旁路BAR的主机请求,并将其发送至此模块。旁路主端口属于AXI4 MM接口,支持读写访问。

IRQ模块接收来自用户逻辑的中断连线,并可配置中断数量,每个DMA通道对应1条中断连线。该模块负责根据PCIe生成中断。用户在IP配置期间可从支持的中断列表中启用1个或多个中断类型。

在IP配置期间,主机可从支持的中断类型列表中启用1个或多个中断类型。IP在任意给定时间仅生成1种类型的中断,即使启用多个中断类型也是如此。MSI-X中断优先于MSI中断,MSI中断优先于遗留中断。

接下来,我们逐步介绍XDMA IP的配置流程:

1. 添加XMDA IP到项目中

2. 双击XDMA IP进行配置

基本配置包括:

(1)功能模式:选择DMA模式

(2)模式:选择基本模式,以保持默认配置与功能

(3)器件/端口类型:选择端点设备,保持默认配置

(4)PCIe块位置:从可用集成块中选择,启用生成特定位置的约束文件与输出,根据硬件选择,保持默认配置

(5)通道宽度:根据硬件接口选择,若不确定,选择X1,数字越大,传输速度越快

(6)最大链路速度:选择PCIe Gen速度

(7)参考时钟频率:默认值为100 MHz,支持125 MHz与250 MHz

(8)AXI地址宽度:当前仅支持64位宽度

(9)AXI数据宽度:选择64、128、256位或512位,接口宽度将根据通道宽度/速度自动调整

(10)AXI时钟频率:根据通道宽度/速度选择62.5 MHz、125 MHz或250 MHz

(11)DMA接口选项:选择AXI4存储器映射或AXI4-Stream

(12)AXI4-Lite从接口:启用AXI4-Lite从接口

PCIe ID配置保持默认设置无需调整

基址寄存器(PCIe BARs)提供关于地址空间的详细信息,支持最多6个32位BAR或3个64位BAR,以及扩展只读存储器(ROM)BAR。所有BAR寄存器共享相同选项。

(1)PCIe到AXI Lite主:启用此选项以允许PC与FPGA之间的信息传输或指令,根据需要分配寄存器大小

(2)PCIe到DMA旁路:启用此选项以实现DMA与主机接口之间的高效数据传输

(3)大小与标度:根据选择的BAR类型,调整大小与标度选项

(4)值:分配给BAR的值,根据当前选择进行调整

禁用未使用的基址寄存器以节省系统资源,取消选中未使用的BAR在自定义IP对话框中实现

PCIe Misc配置包含:

(1)用户中断请求数:最大数量为16

(2)遗留中断设置:选择INTA、INTB、INTC或INTD,保持默认设置

(3)MSI功能:默认启用,并启用1个矢量,最大数量为32。Linux通常仅针对MSI使用1个矢量,此选项可禁用

(4)扩展标签字段:默认使用6位完成标签,UltraScale与Virtex-7器件提供64个标签选项

(5)配置管理接口:选中该选项将PCIe配置管理接口置于顶层

(6)链路状态寄存器:默认启用时隙时钟配置,意味着在链路状态寄存器中启用时隙配置位

PCIe DMA部分涉及:

(1)DMA读取通道数:范围为1至4

(2)DMA写入通道数:同样范围为1至4

(3)读取通道请求ID数量:每个通道未完成请求的最大数量,范围为2至64

(4)写入通道请求ID数量:每个通道未完成请求的最大数量,范围为2至32

(5)读取描述符旁路(H2C):对于所有选定读取通道,每个二进制数字对应1个通道,LSB对应通道0,位位置值为1表示对应通道已启用描述符旁路

(6)写入描述符旁路(C2H):对于所有选定写入通道,每个二进制数字对应1个通道,LSB对应通道0,位位置值为1表示对应通道已启用描述符旁路

(7)AXI ID宽度:默认位宽为4位,也可选择2位

(8)DMA状态端口:可用于所有通道

配置XDMA端口时,点击Run Block Automatic,选择配置信息,点击OK,完成配置流程。至此,XDMA IP配置已基本完成。

完整工程文件下载:

提取码:4sxh

在接下来的内容中,我们将探讨连接XDMA与MIG(Memory Interface Generator)IP,并进行下板验证。如果读者觉得本文内容对您有所帮助,请考虑三连支持,这将帮助您在需要时快速找到相关资源,非常感谢您的支持与鼓励。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜