手把手教你学会 Xilinx PCIE/XDMA 读写DDR系列(二) ——XDMA详细配置步...

发布网友 发布时间:2024-10-24 03:31

我来回答

1个回答

热心网友 时间:2024-11-02 23:27

上一期介绍了如何配置DDR的IP,相信各位已经掌握。现在,我们将进入PCIE的IP配置环节。

完整工程文件下载: 提取码:4sxh

PCIE的IP在vivado中通常通过XDMA实现,XDMA拥有诸多优势。

Xllinx提供的DMASubsystem for PCIExpressIP,是一个高性能、可配置的IP,适用于PCle2.0、PCle3.0的SG模式,提供用户可选的AX 4接口或AX-Stream接口。在SG模式下,主机将数据组成群表,并将销表首地址通过BAR传给XDMA,XDMA根据链表结构依次完成任务。

支持XDMA的系列包括7系列、UltraScale系列、UltraScale+系列等,界面配置基本相同。以KU040的板子为例,其他系列可参考。Vivado使用2018.3版本,推荐使用新版本,详情参考Xilinx文档PG195,这里主要摘取关键部分。

理论知识:XDMA传输流程图

H2C通道:在vivado配置中设定数量,负责主机到卡的DMA传输。它会根据最大读取请求大小和内部资源拆分请求,保留未完成请求,直到写入完成。读取和写入事务在数据FIFO空间内拆分,PCIe RC块会将完成数据返回给已分配的缓冲器,同时开始向用户接口发出写入请求。事务大小依赖于主机有效载荷大小、页面大小等设置。

C2H通道:负责卡到主机的DMA传输,数量在配置中控制,未完成传输数由参数配置。在AXI4-Stream配置中,先设置传输详情,数据通过DMA描述符接收。准备好请求ID并启用通道后,通道接口接收数据并向主机执行DMA。在AXI4 MM配置中,读取请求即分配请求ID。与H2C通道类似,请求保持未完成,直至写入完成。

多个通道启用时,传输事务在所有通道内交织,使用循环协议维护通道。事务粒度取决于主机有效载荷大小、页面大小等。

AXI4-Lite主接口:实现AXI4-Lite主接口总线协议,主机通过此接口生成读取和写入请求,数据通过PCIe到DMA旁路BAR返回。

AXI4-Lite从接口:用户逻辑负责对DMA内部寄存器的读写操作,无法访问PCIe集成块寄存器,不生成发射请求。

主机到DMA旁路主接口:接收主机请求,发送到模块,支持读写访问。

IRQ模块:接收中断连线,可配置中断类型,支持MSI-X、MSI和遗留中断。在配置期间选择中断类型,IP在任意时间仅生成1种中断,即使启用多个类型。

接下来,进入XDMA IP的配置环节:

1、在项目中添加XMDA IP

2、双击XDMA IP进行配置

Basic部分包括:选择DMA模式、基本模式、设备/端口类型、PCIe块位置、通道宽度、最大链路速度、参考时钟频率、AXI地址宽度、AXI数据宽度、AXI时钟频率、DMA接口选项和AXI4-Lite从接口。

PCIe ID部分保持默认无需配置。

PCIe BARs部分包括基址寄存器配置,支持最多6个32位BAR或3个位BAR以及ROM BAR。大小和标度需根据需求分配。

PCIe Misc部分包括中断请求数、遗留中断设置、MSI功能、扩展标签字段、配置管理接口和链路状态寄存器设置。

PCIe DMA部分涉及读取通道数、写入通道数、请求ID数、描述符旁路选项和AXI ID宽度。

配置完成之后,点击Run Block Automatic,选择配置信息,点击OK即可。

至此,XDMA IP配置已完成。

完整工程文件下载: 提取码:4sxh

接下来,将讲解如何连接XDMA和MIG两个IP,并进行下板验证。

感谢阅读,如果觉得文章对您有帮助,请三连支持,方便下次查找。再次感谢您的支持!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com