使用XDMA测试FPGA与PC通信

时间:2024-03-15 08:51:24

使用XDMA测试FPGA与PC通信

(PCIE学习应用教程)1.使用XDMA测试FPGA与PC通信

使用XDMA测试FPGA与PC通信

万物皆可卷积

武汉大学 电路与系统硕士在读

19 人赞同了该文章

Xilinx的Vivado中,有三种方式可以实现PCIE功能,分别为:

  1. 调用7 Series Integrated Block for PCI Express IP核,这是最基础的PCIE IP核,使用起来较复杂。
  2. 调用AXI Memory Mapped To PCI Express IP核,对7 Series Integrated Block for PCI Express进一步封装,可以使用Example Design直接运行;但需要添加DMA IP核实现DMA数据传输。
  3. 调用DMA/Bridge Subsystem for PCI Express (PCIe) IP核,别名XDMA,对PCIE和DMA一起进行了封装,也可以直接使用Example Design直接运行。

本系列由浅入深,逐步探讨学习PCIE在FPGA上的使用,涉及FPGA,Verilog,Systemverilog,时序约束,PCIE协议等内容。

本文介绍XDMA IP核的使用,首先使用XDMA搭建好测试环境,使用Xilinx的官方程序测试PCIE。


首先,在IP Catalog找到XDMA,使用简化设置

使用XDMA测试FPGA与PC通信

图1 PCIE通道设置

通道数选择4,AXI数据位宽选择128位,DMA Interface选择AXI Memory Mapped,PCIE参考时钟100MHz,AXI时钟125MHz。

 

使用XDMA测试FPGA与PC通信

图2 PCIE BAR

设置PCIE的BAR空间,勾中PCIe to AXI-Lite Master Interface,选择Size,然后一路默认生成好IP核。

 

IP核生成完成后,右键选择Open IP Example Design,进入Example Design项目。在xdc中约束PCIE的参考时钟和复位引脚的管脚和IO电平后,点击Generate Bitstream,等待bit文件生成。

解压xdma_driver_win_installers_x64_2018_2.zip,选择对应的Win版本的XDMADriverInstaller.msi安装。过程中可能会提醒驱动没有正确的数字签名,是否安装,点击是。

由于驱动没有有效的签名,所以windows7下需要使用禁用驱动强制签名的方式驱动才能生效,具体如何操作请百度。

等待bit文件下载进FPGA后,重启电脑进入禁用驱动强制签名模式,可以查看设备管理器,是否存在一个叫“Xilinx Device”的硬件存在;或者使用xdma_info.exe检查是否存在XDMA设备,exe在xdma_driver_win_bin_x64_2018_2.zip的bin文件里(在CMD运行xdma_info.exe)。

设备找好之后,可以进行各种测试工作了。这里需要使用一系列的exe去测试,具体有xdma_test.exe和simple_dma.exe。

xdma_rw.exe可以单独测试PCIE的读写功能,具体操作指令查看Xilinx_Answer_65444_Windows.pdf,通过读写可以测试DMA Bypass模式。

可以在图1的XDMA IP核中设置DMA Interface Option为AXI Stream,然后使用streaming_data.exe测试XDMA的stream模式,更多用法参考Xilinx_Answer_65444_Windows.pdf。

PCIE IP核所做的工作主要有两点,一个是将TLP包转换成AXI协议;另一个是支持DMA操作。那么AXI协议就不得不谈到了,AXI协议的具体内容将在后续谈到。

有一个疑惑的问题,XDMA的Example Design里,出现了时序不满足,这没有影响最终PCIE的功能,所以这里为什么会出现时序不满足,以及时序不满足对FPGA最终电路的影响。

使用XDMA测试FPGA与PC通信

图3 时序不满足截图

本文使用的相关驱动及测试程序可以从Xilinx官方网页获取,链接:Xilinx PCI Express DMA Drivers and Software Guide; 也可以关注BUG记录公众号,回复103获取已经收集好的XDMA资料。

欢迎关注