1、前言
PCIE(PCI Express)采用了目前业内流行的点对点串行连接,比起 PCI 以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到 PCI 所不能提供的高带宽,是目前各行业高速接口的优先选择方向,具有很高的实用价值和学习价值;
本设计使用Xilinx官方的XDMA方案搭建基于Xilinx系列FPGA的PCIE通信平台,该方案只适用于Xilinx系列FPGA,一并提供了XDMA的安装驱动和QT上位机源代码,省去了使用XDMA繁琐的驱动寻找和上位机软件开发的不知所措,并以搭建好vivado工程,省去了不知道如何使用XDMA的尴尬,使得PCIE的使用变得简单易上手,而不用关心其复杂的PCIE协议;由于我的开发板只支持PCIE X8,所以提供的代码是PCIE X8架构,若需要PCIE X1、 X2、 X8、 X16、 X32的朋友,可自行修改本工程,也可关注我,我会实时发布新的工程。
本工程实现基础的PCIE采集AD9226试验上进行了修改,实时采集AD7606数据,缓存DDR3后,通过PCIE发送给QT上位机显示程序显示;属于FPGA图像采集领域的高端项目。。。
本文详细描述了基于XDMA搭建PCIE实时采集AD7606数据设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的高速接口和数据采集传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
2、我已有的PCIE方案
我的主页有PCIE通信专栏,既有基于RIFFA实现的PCIE方案,也有基于XDMA实现的PCIE方案;既有简单的数据交互、测速,也有应用级别的图像采集传输,以下是专栏地址:
点击直接前往
3、PCIE理论
这部分可自行百度或csdn或知乎学习理论知识,其实用了XDMA,已经不太需要直到PCIE复杂的协议和理论了。。。
4、总体设计思路和方案
总体设计思路和方案如下:
PCIe 通信例程由三部分组成:FPGA 端程序、PCIe 卡驱动、PCIe 上位机测试程序:
FPGA 端工程:负责建立与 PCIe 通信需具备的 FPGA 框架,PCIe 通信协议的构建;
PCIe 驱动:负责上位机测试程序与 PCIe 卡的数据交换;
PCIe 上位机测试程序:此处时PCIe 显示;
视频输入:示波器产生正弦波模拟输入源;
AD7606数据采集:
用示波器产生一个正弦波作为输入源给到AD7606,AD7606数据采集支持并行和串行模式,在工程代码的顶层文件里做了整合,如下:
数据缓存:使用AXI4总线实现了AD数据读写DDR3,此处做了3帧缓存;
输出2:PCIE X8;
QT测速上位机:提供源代码和可执行程序,发开版本为QT5.6.2;
5、vivado工程详解
开发板FPGA型号:Xilinx–xc7k325tffg900-2;
开发环境:Vivado2019.1;
输入:AD7606;
输出:PCIE X8;
应用:QT上位机显示试验;
工程BD如下:
综合后的代码架构如下:
综合编译完成后的FPGA资源消耗和功耗预估如下:
6、驱动安装
提供提供Win系统驱动,目录如下:
驱动的具体安装教程请参考我之前的文章:点击直接前往
7、QT上位机软件
QT测速上位机:提供源代码和可执行程序,发开版本为QT5.6.2;位置如下:
8、上板调试验证
开启上位机测程序进行 PCIe 速度测试,打开下图的测速软件 pciespeed,测速软件在如下位
置,实验结果如下:
9、福利:工程代码的获取
福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下: