使用XDMA测试FPGA与PC通信的过程

通信网络

647人已加入

描述

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,使用简化设置

dma

图1 PCIE通道设置

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

dma

图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最终电路的影响。

dma

图3 时序不满足截图

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分