发布网友 发布时间: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,并进行下板验证。
感谢阅读,如果觉得文章对您有帮助,请三连支持,方便下次查找。再次感谢您的支持!