FPGA基于XDMA实现PCIE X4通信方案 提供工程源码和QT上位机程序和技术支持

news2024/9/21 16:30:26

目录

  • 1、前言
  • 2、我已有的PCIE方案
  • 3、PCIE理论
  • 4、总体设计思路和方案
  • 5、vivado工程详解
  • 6、驱动安装
  • 7、QT上位机软件
  • 8、上板调试验证
  • 9、福利:工程代码的获取

1、前言

PCIE(PCI Express)采用了目前业内流行的点对点串行连接,比起 PCI 以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到 PCI 所不能提供的高带宽,是目前各行业高速接口的优先选择方向,具有很高的实用价值和学习价值;

本设计使用Xilinx官方的XDMA方案搭建基于Xilinx系列FPGA的PCIE通信平台,该方案只适用于Xilinx系列FPGA,一并提供了XDMA的安装驱动和QT上位机源代码,省去了使用XDMA繁琐的驱动寻找和上位机软件开发的不知所措,并以搭建好vivado工程,省去了不知道如何使用XDMA的尴尬,使得PCIE的使用变得简单易上手,而不用关心其复杂的PCIE协议;由于我的开发板只支持PCIE X4,所以提供的代码是PCIE X4架构,若需要PCIE X1、 X2、 X8、 X16、 X32的朋友,可自行修改本工程,也可关注我,我会实时发布新的工程。
本工程实现基础的PCIE通信,和QT上位机之间进行测速试验。

本文详细描述了基于XDMA搭建PCIE通信平台的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的高速接口领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

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 进行读速度测试时,DDR 控制器会获取 DDR3 芯片中数据,然后把数据传给 PCIe 通信模块,上位机连续获取来自 PCIe 通信模块测试数据;当 PCIe 进行读写速度测试时,进行 PCIe 读速度测试的同时控制 PCIe写速度测试。流程是在上述写速度与读速度测试的结合。

QT测速上位机:提供源代码和可执行程序,发开版本为QT5.6.2;
PCIE驱动:提供Win系统驱动;
XDMA:调用官方IP,配置为X4模式;
AXI MIG:调用官方IP,作为数据缓存;

5、vivado工程详解

开发板FPGA型号:Xilinx xc7a100tfgg484-2;
开发环境:Vivado2019.1;
输入\输出:PCIE X4;
应用:QT上位机测速试验;
工程BD如下:
在这里插入图片描述
在这里插入图片描述
综合后的工程代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

6、驱动安装

提供提供Win系统驱动,目录如下:
在这里插入图片描述
安装步骤:
使用管理员身份运行 cmd
在这里插入图片描述
输入命令 Bcdedit.exe -set TESTSIGNING ON 打开测试模式:
在这里插入图片描述
重启电脑后桌面显示正在运行测试模式
在这里插入图片描述
没有安装驱动时,设备管理器如下,发现一个 PCI 串行端口:
在这里插入图片描述
例程提供的编译好的驱动程序,在工程下的 driver 目录下(根据操作系统选择相应驱动),
在 demo 目录下的“xilinx PCIe 驱动相关资料”提供了 xilinx 官方的 Windows 和 linux 驱动源码及
测试程序,有兴趣的自己可以研究研究:
在这里插入图片描述
选择设备,右键更新驱动
在这里插入图片描述
浏览计算机以查找驱动程序软件
在这里插入图片描述
测试电脑安装的是 win7,这里使用 Win7_Release 版本,win10系统则换为Win10_Release 版本:
在这里插入图片描述
有个安全警告,选择安装:
在这里插入图片描述
正确安装了设备驱动
在这里插入图片描述

7、QT上位机软件

QT测速上位机:提供源代码和可执行程序,发开版本为QT5.6.2;位置如下:
在这里插入图片描述
部分源码截图如下:
在这里插入图片描述

8、上板调试验证

开启上位机测程序进行 PCIe 速度测试,打开下图的测速软件 pciespeed,测速软件在如下位
置,实验结果如下:
在这里插入图片描述
读写同时进行测试:
在这里插入图片描述
只读测试:
在这里插入图片描述
只写测试:
在这里插入图片描述

9、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

桥接设计模式解读

目录 问题引进 手机操作问题 传统方案解决手机操作问题 传统方案解决手机操作问题分析 桥接模式(Bridge)概述 基本介绍 原理类图 主要角色 桥接模式解决手机操作问题 桥接模式的注意事项和细节 常见的应用场景 问题引进 手机操作问题 现在对不同手机类型的不同品牌…

Mybatis(七)Mybatis的日志体系

在介绍Mybatis日志实现前,我们先了解下java的日志体系以及日志框架的发展,目前比较常用的日志框架有下面几个: 而JCL和SLF4J属于日志接口(没有日志具体实现),提供统一的日志操作规范,而日志的实…

Halo博客建站实战以及问题汇总

目录 简介 特性 快速开始 安装步骤 环境准备 Docker-compose方式部署 问题汇总 mac端无法访问页面 页面登录提示账号密码错误 重装注意点 资料 官方文档 简介 Halo 强大易用的开源建站工具 特性 代码开源 我们的所有代码开源在 GitHub 上且处于积极维护状态&…

stata数据处理

stata数据处理–潘登同学的stata笔记 文章目录stata数据处理--潘登同学的stata笔记数据导入、导出使表格第一行成为变量标注(label)数据合并横向与纵向合并一对多与多对一横向合并缺失值处理查看缺失值替换缺失值缺失值填充离群值处理取对数的方法截尾处理、缩尾处理分组统计列…

银行数字化转型导师坚鹏:银行数字化转型痛点、路径与对策

银行数字化转型痛点、路径与对策课程背景: 很多银行存在以下问题: 不知道银行数字化转型? 不清楚数字化转型对银行发展有什么影响? 不知道数字化转型对银行有什么机遇? 学员收获: 学习银行数字化转型的发展现状与成…

2021四川省icpc省赛H题 Nihongo wa Muzukashii Desu 日本語は難しいです!

日本語は難しいです! それは難しくないと思うだけど 传送门 一些吐槽 这题好像恶心了不少学弟啊 其实只要读懂了题就很好做, 对于我这种日语高考生来说确实是有点犯规了不过当时我写的时候不能用翻译一看题面一大串英文就被我pass掉, 后面看到一大堆人过了我才去写…

迅为RK3568开发平台人工智能人脸识别全国产解决方案赋能NVR

人脸识别服务,能够在图像中快速检测人脸、分析人脸关键点信息、获取人脸属性、实现人脸的精确比对和检索。可应用于身份验证、电子考勤、客流分析等场景人脸检测、比对、搜索,人脸库管理等。 为什么使用它呢? 维持公众聚集场所的秩序 在餐厅…

Apache的配置与运用

1. web虚拟主机的构建 虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。通过虚拟 Web 主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。…

2.3.2 单链表的插入结点操作

--单链表示意图 一、按位序插入(带头结点) ①表头插入 注意点 1.i1,while循环不执行 2.时间复杂度为O(1) 3.p!NULL表示指针p有指向结点 4.头结点为第0个结点 5.pL表示指针p和L指向位置相同&#xff0…

ORB_SLAM3_优化方法 Pose优化

PoseOptimization PoseOptimization主要的作用是利用重投影优化单帧的位姿,主要用在Tracking的几种跟踪模式TrackWithMotionModel、TrackReferenceKeyFrame、 TrackLocalMap、Relocalization中 输入 优化变量观测帧的Pose帧的MapPoint帧的KeyPoint初始化 //创建优化器 g2o…

4.Java逻辑控制语句

Java逻辑控制语句 在实际生活中,我们的生活不是一成不变的,很多时候需要我们去选择,大到人生的十字路口,小到今天晚上吃什么,选择无处不在。小的选择决定了我们一件小事的走向,大的选择可能会改变我们人生…

大模型“云上经济”之权力游戏

文丨谭婧光阴者百代之过客。世人皆过客,软件亦如此。人工智能已有新旧之分。网友戏称,新人工智能是ChatGPT,旧人工智能是“之前那些”。历史在重演。云计算在美国问世的时候,否定论调居多。一个常见的否定论调是「做生意不用上云」…

vite+vue3使用UEditorPlus ,后端PHP

vitevue3使用UEditorPlus什么是UEditorPlus功能亮点前端安装安装vue-ueditor-wrap3.x下载 UEditorPlus在main.js注册组件v-model 绑定数据后端配置效果百度富文本编辑器是目前所有编辑器中功能最丰富的,但长时间不进行维护了。之前写了一篇使用UEditor的教程&#x…

回调函数含义查询云记debug调试

回调函数 同步回调函数 回调函数通常就是当父函数执行完后,再执行通过传参进来的函数,当然也可以不传参,直接在父函数内部调用回调函数 注:立即执行回调,执行完回调代码才会继续往下执行 function a(callback) {a…

力扣:两数之和(哈希表)

1、两数之和 1、问题描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。…

如何利用超级电容设计简单的不间断电源

如何利用超级电容设计简单的不间断电源 在许多应用中,电源电压无论在什么情况下都持续可用是很重要的。要确保这一点有时并不容易。一种新概念可以为设计极其紧凑的不间断电源提供一种优化解决方案。 问题: 在电源关键型应用中,如何更轻松地获得持续、…

【Android平板编程】远程Ubuntu服务器code-server编程写代码

文章目录前言1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址5.结语前言 本次教程将在 Ubuntu 服务器环境下安装 code-server ,并使用 Android 安卓平板远程 Ubuntu 服务,进行远程编程开…

Python pandas和numpy用法参考(转)

以下是转载:Python pandas用法 - 简书介绍 在Python中,pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处...https://www.jianshu.com/p/840ba1…

为什么你这么累,销量还不如那些轻松工作的同行?

管理混乱 忙碌却不见成效 在工业品行业做了10多年的小张,最近向我吐槽:每天忙得团团转,结果销售业绩还不如那些整天轻松工作的同行。几番沟通下来,发现小张每天要做这么多的工作,不忙才怪! 管理员工&#x…

xqueue:基于C语言实现的循环队列缓冲区

文章目录1. 为什么需要FIFO2. FIFO的存取顺序3. FIFO的代码实现4. 开源地址精选1. 为什么需要FIFO FIFO 是First-In First-Out的缩写,它是一个具有先入先出特点的缓冲区。 可以理解成一个大的水池,水对应数据,注水速度对应数据输入的频率&a…