FPGA高端项目:基于GTH的 4K HDMI 视频收发例程,提供工程源码和技术支持

news2025/1/18 19:06:08

目录

  • 1、前言
    • 免责声明
  • 2、相关方案推荐
    • 我已有的 GT 高速接口解决方案
    • 我已有的FPGA图像处理方案
  • 3、详细设计方案
    • 设计框图
    • 4K HDMI 输入硬件解决方案
    • Video PHY Controller
    • HDMI 1.4/2.0 Receiver Subsystem
    • 4K HDMI 解码后的视频流走向
    • 4K HDMI 解码后的音频流走向
    • HDMI 1.4/2.0 Transmitter Subsystem
    • 4K HDMI 输出硬件解决方案
  • 4、vivado工程详解
    • PL 端 FPGA 逻辑设计工程
    • PS 端 Vitis SDK 软件设计工程
  • 5、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 6、上板调试验证并演示
    • 准备工作
    • 输出静态演示
    • 输出动态演示
  • 7、福利:工程源码获取

FPGA高端项目:基于GTH的 4K HDMI 视频收发例程,提供工程源码和技术支持

1、前言

没玩过GT高速接口和4K 高清视频都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。GT资源是Xilinx系列FPGA的重要卖点,也是做高速接口的基础,不管是PCIE、SATA、MAC等,都需要用到GT资源来做数据高速串化和解串处理,Xilinx不同的FPGA系列拥有不同的GT资源类型,低端的A7由GTP,K7有GTX,V7有GTH,更高端的U+系列还有GTY等,他们的速度越来越高,应用场景也越来越高端。。。4K 高清视频需要的速率和带宽很大,传统的IO已经不能满足,只有利用FPGA的GT高速接口方能实现;

本文使用Xilinx的Zynq UltraScale+MPSoCs系列的xczu7ev-ffvc1156-2-i型号FPGA 的GTH高速接口资源做4K @60Hz的HDMI视频收发实验,4K @60Hz的视频源首先进入板载的TMDS181IRGZT芯片做电平转换,然后差分视频信号直接连到GTH 高速收发器BANK223上;调用Xilinx官方的Video PHY Controller IP核接收4K 高清视频并做解串工作,将原来高速串行信号解为3路20bit的AXI4-Stream并行数据,该IP利用FPGA GT资源,即利用GTH;然后调用Xilinx官方的HDMI 1.4/2.0 Receiver Subsystem IP核做4K 高清视频的解码工作,IP 同时解码出音频流核视频流,以AXI4-Stream流输出;然后Xilinx官方的Video Test Pattem Generator (TPG),解码后的AXI4-Stream视频流进入TPG,该IP在没有外部AXI4-Stream视频流进入时输出彩条视频,否则输出外部AXI4-Stream视频;同时添加Xilinx官方推荐的音频生成模块(aud_pat_gen.v)和音频acr控制模块(hdmi_acr_ctrl.v),解码后的AXI4-Stream音频流进入这两个模块进行处理;至此,HDMI的解码工作已经完成,此时可以对解码后的视频进行个性化处理了,比如缓存、缩放、卷积啥的,本工程只做回环输出操作;然后Xilinx官方的HDMI 1.4/2.0 Transmitter Subsystem IP核做4K 高清视频的编码工作,同时编码视频流和音频流,输出3路AXI4-Stream流和DDC控制信号;3路AXI4-Stream流进入前面调用的Video PHY Controller IP核做4K 高清视频并做串化工作,将原3路20bit的AXI4-Stream并行数据串化为高速串行信号,该IP利用FPGA GT资源,即利用GTH;输出的差分视频信号从GTH 高速收发器 BANK223上输出,进入到板载的SN65DP159RGZ芯片做电平转换,然后连接到HDMI输出接口;板载的很多芯片都需要i2c配置,调用的很多IP核也需要配置,所以还需要调用Zynq软核进行配置,Zynq软核开发工具为Vitis SDK,利用ARM运行C语言软件代码,通过AXI-Lite总线配置IP寄存器实现配置;在Vitis SDK软件工程里做了两个工程,工程1是4K HDMI视频回环,即就收–发送;工程2是4K HDMI视频发送,即对外发送彩条视频;连接4K显示器,下载bit即可看到输出的4K HDMI视频;

注意!
注意!
注意!
本工程所用到的FPGA属于高端器件,所用到的资源也是高端资源,需要对FPGA GT高速接口、图像处理、FPGA异构特性、C语言嵌入式编程等有极高的熟练度要求,所以本工程源码不适合新手或小白,只适合有工作经验的工程师或者研究生;新手或小白请自行屏蔽;

本博客详细描述了Zynq UltraScale+MPSoCs系列的xczu7ev-ffvc1156-2-i型号FPGA 的GTH高速接口资源做4K @60Hz的HDMI视频收发实验的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

我已有的 GT 高速接口解决方案

我的主页有FPGA GT 高速接口专栏,该专栏有 GTP 、 GTX 、 GTH 、 GTY 等GT 资源的视频传输例程和PCIE传输例程,其中 GTP基于A7系列FPGA开发板搭建,GTX基于K7或者ZYNQ系列FPGA开发板搭建,GTH基于KU或者V7系列FPGA开发板搭建,GTY基于KU+系列FPGA开发板搭建;以下是专栏地址:
点击直接前往

我已有的FPGA图像处理方案

我的主页目前有FPGA图像处理专栏,改专栏收录了我目前手里已有的FPGA图像处理方案,包括图像缩放、图像识别、图像拼接、图像融合、图像去雾、图像叠加、图像旋转、图像增强、图像字符叠加等等;以下是专栏地址:
点击直接前往

3、详细设计方案

本文使用Xilinx的Zynq UltraScale+MPSoCs系列的xczu7ev-ffvc1156-2-i型号FPGA 的GTH高速接口资源做4K @60Hz的HDMI视频收发实验,4K @60Hz的视频源首先进入板载的TMDS181IRGZT芯片做电平转换,然后差分视频信号直接连到GTH 高速收发器BANK223上;调用Xilinx官方的Video PHY Controller IP核接收4K 高清视频并做解串工作,将原来高速串行信号解为3路20bit的AXI4-Stream并行数据,该IP利用FPGA GT资源,即利用GTH;然后调用Xilinx官方的HDMI 1.4/2.0 Receiver Subsystem IP核做4K 高清视频的解码工作,IP 同时解码出音频流核视频流,以AXI4-Stream流输出;然后Xilinx官方的Video Test Pattem Generator (TPG),解码后的AXI4-Stream视频流进入TPG,该IP在没有外部AXI4-Stream视频流进入时输出彩条视频,否则输出外部AXI4-Stream视频;同时添加Xilinx官方推荐的音频生成模块(aud_pat_gen.v)和音频acr控制模块(hdmi_acr_ctrl.v),解码后的AXI4-Stream音频流进入这两个模块进行处理;至此,HDMI的解码工作已经完成,此时可以对解码后的视频进行个性化处理了,比如缓存、缩放、卷积啥的,本工程只做回环输出操作;然后Xilinx官方的HDMI 1.4/2.0 Transmitter Subsystem IP核做4K 高清视频的编码工作,同时编码视频流和音频流,输出3路AXI4-Stream流和DDC控制信号;3路AXI4-Stream流进入前面调用的Video PHY Controller IP核做4K 高清视频并做串化工作,将原3路20bit的AXI4-Stream并行数据串化为高速串行信号,该IP利用FPGA GT资源,即利用GTH;输出的差分视频信号从GTH 高速收发器 BANK223上输出,进入到板载的SN65DP159RGZ芯片做电平转换,然后连接到HDMI输出接口;板载的很多芯片都需要i2c配置,调用的很多IP核也需要配置,所以还需要调用Zynq软核进行配置,Zynq软核开发工具为Vitis SDK,利用ARM运行C语言软件代码,通过AXI-Lite总线配置IP寄存器实现配置;在Vitis SDK软件工程里做了两个工程,工程1是4K HDMI视频回环,即就收–发送;工程2是4K HDMI视频发送,即对外发送彩条视频;连接4K显示器,下载bit即可看到输出的4K HDMI视频;

设计框图

本设计使用的是Xilinx官方推荐的方案,该方案大致如下:
在这里插入图片描述
具体到本设计的工程详细设计方案框图如下:
在这里插入图片描述

4K HDMI 输入硬件解决方案

这里使用Xilinx推荐的方案,即TMDS181IRGZT芯片做电平转换,然后差分视频信号直接连到GTH 高速收发器BANK223上,其他方案肯定也是可以的,但这块目前开发的公司并不多,所以为了稳健考虑,还是使用Xilinx推荐的方案为佳,主要部分原理图如下:
在这里插入图片描述
在这里插入图片描述

Video PHY Controller

用XIlinx方案做4K HDMI视频收发必须要用到此IP,Video PHY Controller IP核主要做解串和串化的工作,利用FPGA GT资源,即利用GTH;在接收端接收4K 高清视频并做解串工作,将原来高速串行信号解为3路20bit的AXI4-Stream并行数据,在发送端做4K 高清视频并做串化工作,将原3路20bit的AXI4-Stream并行数据串化为高速串行信号;Video PHY Controller配置如下:
在这里插入图片描述
该IP需要在Vitis SDK中做进一步详细配置,详情参考Vitis SDK C语言软件代码;

HDMI 1.4/2.0 Receiver Subsystem

用XIlinx方案做4K HDMI视频收发必须要用到此IP,4K HDMI输入视频经过Video PHY Controller解串后输入HDMI 1.4/2.0 Receiver Subsystem IP,该IP做4K 高清视频的解码工作,IP 同时解码出音频流核视频流,以AXI4-Stream流输出;HDMI 1.4/2.0 Receiver Subsystemr配置如下:
在这里插入图片描述
该IP需要在Vitis SDK中做进一步详细配置,详情参考Vitis SDK C语言软件代码;

4K HDMI 解码后的视频流走向

HDMI 1.4/2.0 Receiver Subsystem同时解码出AXI4-Stream格式的视频流和音频流,视频流输入Xilinx官方的Video Test Pattem Generator IP核(TPG),该IP在没有外部AXI4-Stream视频流进入时输出彩条视频,否则输出外部AXI4-Stream视频;TPG配合AXI-GPIO复位使用,IP组进行了封装,如下:
在这里插入图片描述
展开后以及TPG配置如下:
在这里插入图片描述
在这里插入图片描述
该IP需要在Vitis SDK中做进一步详细配置,详情参考Vitis SDK C语言软件代码;

4K HDMI 解码后的音频流走向

HDMI 1.4/2.0 Receiver Subsystem同时解码出AXI4-Stream格式的视频流和音频流,音频流输入Xilinx官方的音频生成模块(aud_pat_gen.v)和音频acr控制模块(hdmi_acr_ctrl.v),解码后的AXI4-Stream音频流进入这两个模块进行处理;两个模块进行了封装,如下:
在这里插入图片描述
展开后如下:
在这里插入图片描述
这两个模块需要在Vitis SDK中做进一步详细配置,详情参考Vitis SDK C语言软件代码;

HDMI 1.4/2.0 Transmitter Subsystem

用XIlinx方案做4K HDMI视频收发必须要用到此IP,需要输出的4K HDMI视频先进入Xilinx官方的HDMI 1.4/2.0 Transmitter Subsystem IP核做4K 高清视频的编码工作,同时编码视频流和音频流,输出3路AXI4-Stream流和DDC控制信号;3路AXI4-Stream流进入前面调用的Video PHY Controller IP核做4K 高清视频并做串化工作,将原3路20bit的AXI4-Stream并行数据串化为高速串行信号;DMI 1.4/2.0 Transmitter Subsystem配置如下:
在这里插入图片描述
该IP需要在Vitis SDK中做进一步详细配置,详情参考Vitis SDK C语言软件代码;

4K HDMI 输出硬件解决方案

这里使用Xilinx推荐的方案,即SN65DP159RGZ芯片做电平转换,输出的差分视频信号从GTH 高速收发器 BANK223上输出,进入到板载的SN65DP159RGZ芯片做电平转换,然后连接到HDMI输出接口;其他方案肯定也是可以的,但这块目前开发的公司并不多,所以为了稳健考虑,还是使用Xilinx推荐的方案为佳,主要部分原理图如下:
在这里插入图片描述
在这里插入图片描述

4、vivado工程详解

PL 端 FPGA 逻辑设计工程

开发板FPGA型号:Xilinx–Zynq UltraScale+MPSoCs–xczu7ev-ffvc1156-2-i;
开发环境:Vivado2022.2;
输入:HDMI,分辨率4K @60Hz;
输出:HDMI,分辨率4K @60Hz;
工程作用:FPGA高端项目:基于GTH的4K HDMI 视频收发;
工程BD如下:
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述
工程的资源消耗和功耗如下:
在这里插入图片描述

PS 端 Vitis SDK 软件设计工程

PS 端 Vitis SDK 软件依然是参考了Xilinx官方推荐的设计方案,主要是对一系列硬件芯片和IP做配置,在Vitis SDK软件工程里做了两个工程,工程1是4K HDMI视频回环,即就收–发送;工程2是4K HDMI视频发送,即对外发送彩条视频;工程代码架构如下:
在这里插入图片描述
源码展开后如下:
在这里插入图片描述
由于是参考了Xilinx官方推荐的设计方案,所以代码很冗长,很多代码也用不到,且官方的代码还有BUG,导致编译不通过,我已经对BUG进行了修复,但依然保留了代码的冗长特性,虽然不好看,但功能不受影响;

5、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
在这里插入图片描述
3:如果你的vivado版本高于本工程vivado版本,解决如下:
在这里插入图片描述
打开工程后会发现IP都被锁住了,如下:
在这里插入图片描述
此时需要升级IP,操作如下:
在这里插入图片描述
在这里插入图片描述

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

6、上板调试验证并演示

准备工作

FPGA开发板,我用的Zynq UltraScale+MPSoCs xczu7ev;
4K HDMI输入源;
4K HDMI显示器;
4K HDMI线;
连接好设备后下载bit;

输出静态演示

输出静态演示如下:
在这里插入图片描述
可以看到,4K视频的清晰度和色彩亮度等十分好看,不是低端相机能比拟的;

输出动态演示

录制了一个小视频,输出动态演示如下:

4K HDMI

7、福利:工程源码获取

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

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

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

相关文章

跨境电商:让中国制造走向世界

跨境电商的崛起 跨境电商是指不同国家和地区之间的商业交易,通过互联网和物流等方式完成。随着全球化和互联网的普及,跨境电商迅速崛起,成为全球贸易的重要组成部分。中国作为全球最大的制造业国家,拥有着丰富的商品资源和供应链…

软件设计师——软件工程(三)

📑前言 本文主要是【软件工程】——软件设计师——软件工程的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 &#x1f304…

Android APK未签名提醒

最近新建了一个项目,在build.gradle中配置好了签名,在执行打包的时候打出的包显示已签名,但是在上传市场的时候提示未签名。于是排查了好久,发现在build.gradle中配置的minsdk 24,会导致不使用V1签名,于是我…

软件工程期末复习习题

知识点总结 第一章:软件工程概述 1、软件的定义:在运行中能提供所希望的功能与性能的程序使程序能够正确运行的数据及其结构描述软件研制过程和方法所用的文档。 2、软件危机:软件开发的生产率远远不能满足客观需要。开发的软件产品往往不能…

关于蚁剑(AntSword)的溯源反制

中国蚁剑(AntSword) RCE漏洞 此漏洞在AntSword2.7.1版本上修复 ,所以适用于AntSword2.7.1以下版本。 下面介绍被低版本蚁剑攻击后如何进行溯源反打 以物理机为攻击机,虚拟机kali模拟受害者,之后使用kali进行溯源反制 物理机内网ip地址&…

图文证明 牛顿-莱布尼茨公式

牛顿-莱布尼茨公式 牛顿-莱布尼茨公式是微积分中的基本定理之一,它描述了函数的导数和不定积分之间的关系。 该公式通常用来计算定积分。设函数f(x)在区间[a, b]上连续,且F(x)是f(x)在该区间上的一个原函数 即F’(x) f(x)。则牛顿-莱布尼茨公式表示为&…

trino-435: 集群部署

一、源码编译打包 现在本地使用idea工具对trino源码进行打包编译,并对trino服务信息进行压缩用于上传到linux服务器,如下所示: 编译打包过程中遇到的问题: 对core下的trino-server-rpm模块进行mavn install时候出现某jar&#x…

在Linux运行LaTeX

共有三个步骤1. 装LaTexTeX Live - TeX Users Group 下载对应版本安装包安装 文件比较大,这步花的时间多一点,不过也不会太多,感觉5分钟十分钟的样子吧 2. 装TexStidio 这一步是安装一个类似在windows系统下的TaTeX GUI软件 图标是这样3. 配置…

【算法与数据结构】763、LeetCode划分字母区间

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题要求为: 1.尽可能多的划分片段2.字母只能出现在一个片段中3.片段连接起来仍然是s&…

数据库开发表操作案例的详细解析

2.3.1.4 案例 需求:根据产品原型/需求创建表((设计合理的数据类型、长度、约束) 产品原型及需求如下: 步骤: 阅读产品原型及需求文档,看看里面涉及到哪些字段。 查看需求文档说明,确认各个字段的类型以及字段存储数据…

若依framework模块解读,Java小白入门(六)

切面编程我们单独作为一个章节进行了分析,这一节我们来看若依framework模块其他部分的内容,其中,关于安全的部分,这个章节暂时不深入,需要单独一个章节结合token认证等一起讨论。 配置 config 这个也不需要多展开&…

io流——转换流

1 为什么需要转换流 为啥 乱码的原理 怎么解决? 1 让两边编码一样 2 使用转换流 2 转换流

推荐:一个不错的介绍Apache Doris的PPT

原来Apache Doris居然是百度开源出来的,不错。部分节选:完整下载地址网盘: 链接: https://pan.baidu.com/s/18WR70R_f72GxCjh0lykStQ 提取码: umd3 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v7的分…

猪目标检测数据集VOC格式600张

猪是一种常见的哺乳动物,通常被人们认为是肉食动物,但实际上猪是杂食性动物,以植物性食物为主,也有偶尔食肉的习性。猪的体型较大,圆胖的体型和圆润的脸庞使其显得憨态可掬。它们主要通过嗅觉来感知周围环境&#xff0…

信号与线性系统翻转课堂笔记16——离散LTI系统的各类响应

信号与线性系统翻转课堂笔记16——离散LTI系统的各类响应 The Flipped Classroom16 of Signals and Linear Systems 对应教材:《信号与线性系统分析(第五版)》高等教育出版社,吴大正著 一、要点 (1,重点…

云原生|kubernetes|kubernetes资源备份和集群迁移神器velero的部署和使用

前言: kubernetes集群需要灾备吗?kubernetes需要迁移吗? 答案肯定是需要的 那么,如何做kubernetes灾备和迁移呢?当然了,有很多的方法,例如,自己编写shell脚本,或者使用…

Elasticsearch 8.X进阶搜索之“图搜图”实战

Elasticsearch 8.X “图搜图”实战 1、什么是图搜图? "图搜图"指的是通过图像搜索的一种方法,用户可以通过上传一张图片,搜索引擎会返回类似或者相关的图片结果。这种搜索方式不需要用户输入文字,而是通过比较图片的视…

goframe v2 模板引擎的用法

这里用的goframe v2框架 提醒:下面的import 引入的控制器和api,根据自己实际项目路径 main函数 import ("context""github.com/gogf/gf/v2/net/ghttp""github.com/gzdzh/dzhgo/modules/dzhCms/controller/web""gith…

【三维目标检测/自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)

系列文章目录 论文:Instance-aware Multi-Camera 3D Object Detection with Structural Priors Mining and Self-Boosting Learning 地址:https://arxiv.org/pdf/2312.08004.pdf 来源:复旦大学 英特尔Shanghai Key Lab /美团 文章目录 系列文…

本地引文建设指南

以下是引文建设如何帮助链接建设和网站可见性,以及如何开始建设本地引文。 您上一次进行本地在线搜索是什么时候? 当您想查找您所在地区的产品或服务时,您会翻开老式的电话簿,还是使用您最喜欢的搜索引擎? 想想吧&a…