FPGA基于XDMA实现PCIE X8视频采集HDMI输出 提供工程源码和QT上位机程序和技术支持

目录

  • 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 X8,所以提供的代码是PCIE X8架构,若需要PCIE X1、 X2、 X8、 X16、 X32的朋友,可自行修改本工程,也可关注我,我会实时发布新的工程。
在这里插入图片描述
本工程实现基础的PCIE的HDMI视频采集上进行了反向修改,利用开发板自带的HDMI输出接口,实时利用QT上位机抓取当前电脑的桌面图片,然后发送PCIE,PCIE再发送给FPGA,FPGA将收到的图像进行缓存,然后通过HDMI输出视频;

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

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 采集;

视频输入1:电脑主机模拟HDMI视频输入源,由QT上位机采集视频;
HDMI输出,使用silicon9134芯片完成HDMI编码,silicon9011需要i2c配置才能使用,关于silicon9011的i2c配置使用,请参考我之前写的文章:点击直接前往
视频输入2:HDMI输入,这里的HDMI输入仅缓存到了DDR3,并未读出送显示器显示,如果项目需要,可以在这里加上一个HDMI输出显示用以环出输入的HDMI视频;
图像缓存:使用AXI4总线实现了图像读写DDR3,此处做了3帧缓存;
输出:HDMI;
QT测速上位机:提供源代码和可执行程序,发开版本为QT5.6.2;

5、vivado工程详解

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

6、驱动安装

提供提供Win系统驱动,目录如下:
在这里插入图片描述
在这里插入图片描述
驱动安装参考前面的测速试验:点击直接前往

7、QT上位机软件

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

8、上板调试验证

开启上位机测程序进行 PCIe 显示测试,打开下图的显示软件 pcie2screen,软件在如下位置,实验结果如下:
在这里插入图片描述
打开上位机以后点击开始屏幕映射,会把当前电脑屏幕抓取,然后通过 PCIe 传输到 DDR3 中,通过连续不断的抓取,可以形成连续的视频:
在这里插入图片描述
HDMI输出的PCIE采集的电脑主机桌面图像;
在这里插入图片描述

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JUC概述

1. JUC是什么? 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类。此包包括了几个小的、已标准化的可扩展框架,并提供一些功能实用的类,没有这些类,一些功能会很难实现或…

单链表——“数据结构与算法”

各位CSDN的uu们你们好呀,今天,小雅兰的内容终于是我们心心念念的单链表啦,这一块呢,是一个很重要的部分,也是一个对目前的我来说,比较困难的部分,下面,就让我们进入单链表的世界吧 之…

【linux】对于权限的理解

权限 Linux权限的概念用户之间的切换 Linux权限管理文件权限操作文件的人Linux文件默认权限的设置权限掩码 所属组/其他删除拥有者创建的文件文件拥有者、所属组的修改修改文件拥有者修改文件所属组一次性修改拥有者和所属组 目录的执行权限 Linux权限的概念 首先,…

电脑怎么远程控制另一台电脑

要从一台电脑远程控制另一台电脑,您可以使用远程桌面软件。 以下是远程控制另一台电脑的步骤: 一、在两台电脑上安装远程桌面软件 有多种远程桌面软件可用,例如 Splashtop、微软远程桌面。 在远程电脑和本地电脑上分别安装软件。访问各自软…

【产品经理】系统上线自查清单

产品上线之前的准备工作,看起来简单,实际做起来是非常繁杂的,如果没有尽早考虑和准备,可能会手忙脚乱甚至导致产品延迟上线。 产品上线前的准备工作听起来简单,但实际做起来非常繁杂。除了要考虑用户需求、商业需求外&…

vue项目 解决el-table自适应高度,vue页面不显示多条滚动条,超出的部分让el-table内部出现滚动条(推荐使用第二种解决方案)

一、需求 后台管理系统:最常见的页面都是由—>左侧菜单、头部tabView页签、主体数据渲染页面(AppMain);而一般AppMain页面又分为: 搜索区域、table数据(分页),可能也会存在底部&a…

局域网 - 高速以太网(百兆、千兆、万兆)

文章目录 1 概述1.1 802.3 物理层规范1.2 以太网标准中后缀 -T、-F、-X 含义 2 分类2.1 快速以太网(802.3μ、百兆)2.2 千兆以太网(802.3z、802.3ab)2.3 万兆以太网(802.3ae) 3 扩展3.1 网工软考真题 1 概述…

Docker 部署 MySQL 一主多从

主从复制的原理: 1、主库: 创建一个有权访问binlog日志的从库账号,配置需要主从复制的库 有写操作时,可以将写操作或者写操作之后的数据记录到日志文件中(binlog) 通过一个线程通知需要同步数据…

设计模式:UML中的类图(6种关系)

一.UML图介绍 统一建模语言是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。 UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。 二.类图…

太阳的G2

我已经忘记是怎么喜欢上保罗的 入职腾讯的第一天,同事看到我的英文名cris,就笃信我应该是保罗的球迷。 是的,我是保罗的球迷「当然,不只是保罗的球迷」。 14-15赛季,保罗在的快船跟马刺鏖战7场,硬是在第7场…

4.24~25(总结)

第一周任务 - Virtual Judge 分析:这道题开始想错了,所以错了一次。后来又仔细读了一遍题,才发现,要是最长的那个排序子数组,所以第二次就做出来了,它其实应该分为两大块,第一块找左边的起点&a…

能源管理系统在电子厂房中的应用

摘要:以能耗管理系统在工业厂房的应用为例,介绍了系统架构及功能。重点分析能耗管理系统在工业厂房实施过程中遇到的难点,并对系统采集的数据进行分析,提出了相应的节能措施,帮助该业厂房达到节约能耗和运行费用的目的…

【Daily Share】没有域名怎么破?手把手教你如何通过hosts配置域名(假域名)

目录 ❌前言📄hosts文件🦉DNS解析步骤👌配置伪域名第一步 修改本机hosts配置第二步 配置服务器nginx 🔃流程图 ❌前言 ip记不住??? 域名不想买??? 每次当我…

【Linux】Linux开发工具

Linux开发工具 前言Linux编辑器 --- vimvim长啥样vim的基本概念vim的配置 Linux编译器 --- gcc/g编译和链接预处理编译汇编链接 细🔒链接静态库和动态库 Linux调试器 --- gdbLinux项目自动化构建工具 --- make/Makefile依赖关系和依赖方法 上方工具的简单示例 前言 …

0401概述-最短路径-加权有向图-数据结构和算法(Java)

文章目录 1 最短路径2 最短路径的性质3 加权有向图的数据结构3.1 加权有向边3.2 加权有向图 4 最短路径4.1 最短路径API4.2 最短路径的数据结构4.3 边的松弛4.4 顶点的松弛 结语 1 最短路径 如图1-1所示,一幅加权有向图和其中的一条最短路径: 定义&…

LeetCode 27.移除元素

文章目录 💡题目分析💡解题思路🚩思路1:暴力求解 --- 遍历🔔接口源码:🚩思路2:空间换时间🔔接口源码:🚩思路3:双指针(快慢指针)🔔接口…

【C++】string类的简单模拟实现

目录 string类初识 string模拟实现 string类成员变量 构造函数 拷贝构造 赋值运算符重载 析构函数 深浅拷贝问题 string类初识 由于C语言中的字符串不太符合OOP(面向对象编程)的思想,而且其底层空间需要用户自己管理,经常有访问越界的情况出现。…

解决方案:Zotero实现参考文献中英文混排,将英文文献中的“等”转成“et al.”

Zotero 是一款非常实用且易于使用的参考文献管理工具,可帮助用户收集、整理和引用各种类型的文献,包括图书、期刊文章、网页等。在学术写作中起着重要作用。 但是其在中文世界中,运行起来偶尔会出现问题,这里记录一个问题及其解决…

chmod 命令 (chmod 0660)

chmod的作用: 用于设置文件所有者和文件关联组的命令,就是控制用户的权限命令 注意事项: chown 需要超级用户 root 的权限才能执行此命令。 自己常用chmod 命令是 chmod 777 * 给所有文件权限 chmod 777 文件名 给单独文件权限 这个777 是怎么来的, 或者chmod 0660 这…

java 获取时间的方法

Java的时间是通过字节码指令来控制的,所以 java程序的运行时间是通过字节码指令来控制的。但是由于 Java程序在运行时, JVM会产生一些状态,所以在执行 JVM指令时, JVM也会产生一些状态。 我们在执行 java程序时,主要是…