目录
1、前言
PCIE(PCIExpress)采用了目前业内流行的点对点串行联接红旗 linux,比起PCI以及更初期的计算机总线的共享并行构架linux驱动程序开发视频,每位设备都有自己的专用联接,不须要向整个总线恳求带宽,并且可以把数据传输率提升到一个很高的频度,达到PCI所不能提供的高带宽,是目前各行业高速插口的优先选择方向,具有很高的实用价值和学习价值;
本设计使用Xilinx官方的XDMA方案搭建基于Xilinx系列FPGA的PCIE通讯平台,该方案只适用于Xilinx系列FPGA,一并提供了XDMA的安装驱动和QT上位机源代码,省去了使用XDMA繁杂的驱动寻觅和上位机软件开发的不知所措,并以搭建好vivado工程,省去了不晓得怎么使用XDMA的难堪,致使PCIE的使用显得简单易上手,而不用关心其复杂的PCIE合同;因为我的开发板只支持PCIEX4,所以提供的代码是PCIEX4构架,若须要PCIEX1、X2、X8、X16、X32的同学,可自行更改本工程,也可关注我,我会实时发布新的工程。
本工程实现基础的PCIE通讯,和QT上位机之间进行测速试验。
本文详尽描述了基于XDMA搭建PCIE通讯平台的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校中学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的高速插口领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方法放到了文章末尾linux服务器维护,请耐心见到最后;
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测速;
PICe时钟输入通过PCIe插口接入外部PCIe时钟100M(如机箱PCIe插孔),为PCIe通讯模块工作提供参考时钟;ddr时钟输入模块为DDR控制器提供参考时钟;当PCIe进行写速率测试时,上位机连续发送测试数据给PCIe通讯模块,之后把数据传给DDR控制器,DDR控制器会自己把数据存入DDR3芯片中;当PCIe进行读速率测试时linux驱动程序开发视频,DDR控制器会获取DDR3芯片中数据,之后把数据传给PCIe通讯模块,上位机连续获取来自PCIe通讯模块测试数据;当PCIe进行读写速率测试时,进行PCIe读速率测试的同时控制PCIe写速率测试。流程是在上述写速率与读速率测试的结合。
QT测速上位机:提供源代码和可执行程序,发开版本为QT5.6.2;
PCIE驱动:提供Win系统驱动;
XDMA:调用官方IP,配置为X4模式;
AXIMIG:调用官方IP,作为数据缓存;
5、vivado工程解读
开发板FPGA机型:Xilinxxc7a100tfgg484-2;
开发环境:Vivado2019.1;
输入输出:PCIEX4;
应用:QT上位机测速试验;
工程BD如下:
综合后的工程代码构架如下:
综合编译完成后的FPGA资源消耗和帧率预估如下:
6、驱动安装
提供提供Win系统驱动,目录如下:
安装步骤:
使用管理员身分运行cmd
输入命令Bcdedit.exe-setTESTSIGNINGON打开测试模式:
重启笔记本后桌面显示正在运行测试模式
没有安装驱动时,设备管理器如下,发觉一个PCI串行端口:
类库提供的编译好的驱动程序,在工程下的driver目录下(依照操作系统选择相应驱动),
在demo目录下的“xilinxPCIe驱动相关资料”提供了xilinx官方的Windows和linux驱动源码及
测试程序,有兴趣的自己可以研究研究:
选择设备,右键更新驱动
浏览计算机以查找驱动程序软件
测试笔记本安装的是win7,这儿使用Win7_Release版本,win10系统则换为Win10_Release版本:
有个安全警告,选择安装:
正确安装了设备驱动
7、QT上位机软件
QT测速上位机:提供源代码和可执行程序,发开版本为QT5.6.2;位置如下:
部份源码截图如下:
8、上板调试验证
开启上位机测程序进行PCIe速率测试,打开右图的测速软件pciespeed,测速软件在如下位
置,实验结果如下:
读写同时进行测试:
只读测试:
只写测试:
9、福利:工程代码的获取
福利:工程代码的获取
代码太大,难以邮箱发送,以某度云盘链接形式发送,
资料获取方法:私,或则文章末尾的V名片。
云盘资料如下: