Xilinx系列FPGA实现4K视频拼接,基于Video Mixer实现,提供1套工程源码和技术支持


Xilinx系列FPGA实现4K视频拼接,基于Video Mixer实现,提供1套工程源码和技术支持

1、前言

没玩过视频拼接都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。目前市面上主流的FPGA图像视频拼接方案如下:
1:纯Verilog方案,但该方案很少能做到4K分辨率;
2:Xilinx的HLS方案,该方案简单,易于实现,但只能用于Xilinx自家的FPGA;
本博客使用Xilinx的HLS方案实现4K视频拼接,具体是使用Xilinx官方推出了Video Mixer IP核,该IP可轻松支持4K视频拼接,但遗憾的是仅可在Xilinx自家系列FPGA上使用,或许复旦微也可以;

工程概述

本设采用Xilinx官方的Video Mixer IP核为核心,实现4K视频拼接;输入源4路Xilinx官方的Video Test Pattem Generator IP核产生4路分辨率为1920x1080@60Hz的彩条视频,彩条视频为单像素模式(一个时钟24bit像素),输出接口为AXI4-Stream,每路彩条的形状不一样,分别为竖条彩条形状、交叉网格形状、棋盘形状、格子形状;然后调用4路Xilinx官方的XDMA将4路彩条视频写入FPGA板载DDR4中缓存;然后调用Xilinx官方的Video Mixer将4路彩条视频从DDR4中读出并做拼接处理,拼接方案为4路视频沾满4K分辨率显示器,即4路视频做4分屏拼接显示;然后给到Xilinx官方HDMI 1.4/2.0 Transmitter Subsystem IP核做4K视频的编码工作,可同时编码视频流和音频流,本工程没有音频输入;输出3路AXI4-Stream流和DDC控制信号,3路AXI4-Stream流进入Xilinx官方的Video PHY Controller IP核做4K视频并串转化工作,将原3路20bit的AXI4-Stream并行数据串化为高速串行信号,该IP需使用FPGA GT高速接口资源;输出的差分视频信号从GT BANK上输出,进入到板载的DP159或其他同等功能的芯片做均衡处理,然后连接到HDMI2.0输出接口;HDMI2.0周边电路需要i2c配置,所以还需要调用Zynq或者MicroBlaze软核进行配置,软核开发工具为Vitis SDK;

免责声明

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

2、相关方案推荐

FPGA图像处理方案

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

FPGA视频拼接叠加融合方案推荐

我的主页目前有FPGA视频拼接叠加融合专栏,改专栏收录了我目前手里已有的FPGA视频拼接叠加融合方案,从实现方式分类有基于HSL实现的视频拼接、基于纯verilog代码实现的视频拼接;从应用上分为单路、2路、3路、4路、8路、16路视频拼接;视频缩放+拼接;视频融合叠加;从输入视频分类可分为OV5640摄像头视频拼接、SDI视频拼接、CameraLink视频拼接等等;以下是专栏地址:
点击直接前往

4K视频输入输出方案

Xilinx系列FPGA有一套专用的基于GT高速接口资源的4K视频实现方案,我之前出过专门的博客,博客链接如下:
点击直接前往

Video Mixer视频拼接方案

Video Mixer是Xilinx官方推出的视频拼接方案,我之前出过专门的博客,博客链接如下:
点击直接前往

3、详细设计方案

设计框图

本设计使用的是Xilinx官方推荐的方案,设计框图如下:
在这里插入图片描述

TPG测试彩条

输入源4路Xilinx官方的Video Test Pattem Generator IP核产生4路分辨率为1920x1080@60Hz的彩条视频,彩条视频为单像素模式(一个时钟24bit像素),输出接口为AXI4-Stream,每路彩条的形状不一样,分别为竖条彩条形状、交叉网格形状、棋盘形状、格子形状;效果如下:
在这里插入图片描述
TPG测试彩条在Block Design中如下:
在这里插入图片描述

VDMA图像缓存

调用4路Xilinx官方的XDMA将4路彩条视频写入FPGA板载DDR4中缓存;VDMA只使用写模式,配置为3帧缓存,配置如下:
在这里插入图片描述
VDMA在Block Design中如下:
在这里插入图片描述

Video Mixer介绍

由于工程所用到的IP都是常用IP,所以这里重点介绍一下Video Mixer IP;
支持最大分辨率:8K,即可以处理高达8K的视频;
支持最多16层视频拼接叠加,即最多可拼接16路视频;
输入视频格式:AXI4-Stream;
输出视频格式:AXI4-Stream;
需要SDK软件配置,其本质为通过AXI_Lite 做寄存器配置;
提供自定义的配置API,通过调用该库函数即可轻松使用,具体参考SDK代码;
模块占用的FPGA逻辑资源更小,相比于自己写的HLS视频拼接而言,官方的Video Mixer资源占用大约减小30%左右,且更高效:
Video Mixer逻辑资源如下,请谨慎评估你的FPGA资源情况;
在这里插入图片描述
本设计采用4路视频拼接模式,视频输入为Memory模式,即Video Mixer通过AXI4总线主动去DDR4中读取视频,视频背景分辨率为3840x2160,配置如下:
在这里插入图片描述

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控制信号;DMI 1.4/2.0 Transmitter Subsystem配置如下:
在这里插入图片描述
该IP需要在Vitis SDK中做进一步详细配置,详情参考Vitis SDK C语言软件代码;

Video PHY Controller

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

输出均衡电路

在HDMI输出端需要加均衡器电路,大体方案如下:
在这里插入图片描述
图中IC型号只做参考,具体根据你的项目方案而定;

视频输出显示

视频输出显示需要支持4K@60Hz,一般情况下,1千块以内的显示器是不支持的,我是用的是家里的电视机,品牌为小米电视EA55-2022款(@雷军,雷总请给鸡腿),你可以查询一下你的电视是否支持4K@60Hz。。。

FPGA开发板

为了确保工程与硬件FPGA开发板的适配性,推荐使用本博主同款开发板,以减少移植难度和快速验证,当然,如果你有自己的FPGA板子,也可以用自己的,只不过需要根据你板子将工程移植一下;本博主现有两款FPGA开发板可配套本工程的两套代码,分别如下:
1–>Xilinx Kintxe7 FPGA开发板;
2–>Zynq UltraScale+ FPGA开发板
需要这两款开发板的请联系博主。。。

工程源码架构

工程源码架构包括vivado Block Design逻辑设计和vitis SDK软件设计;
Block Design逻辑设计架构截图如下:
在这里插入图片描述
综合后的源码架构如下:
在这里插入图片描述
Vitis SDK软件代码如下:
在这里插入图片描述

4、工程源码详解–>XCZU4EV版本

开发板FPGA型号:Xilinx–Zynq UltraScale+MPSoCs–xczu4ev-sfvc784-2-i;
开发环境:Vivado2022.2;
输入:4路Xilinx官方TGP生成彩条,单像素,分辨率1920x1080@60Hz;
图像拼接方案:Xilinx官方Video Mixer方案;
图像拼接示例:3840x2160背景下拼接4路1920x1080视频,即4分屏;
输出:小米电视,HDMI2.0,分辨率3840x2160@60Hz;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
软核类型:Zynq UltraScale+ MPSoC;
使用GT资源类型:GTH;
工程作用:此工程目的是让读者掌握Xilinx系列FPGA实现4K视频拼接的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

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开发板,可以自行购买,也可以找本博主购买同款开发板;
HDMI线;
4K分辨率显示器;
以工程源码1的开发板为例进行上板调试;
连接如下:
在这里插入图片描述

输出效果演示

输出效果静态演示如下:
在这里插入图片描述
输出效果动态演示如下:

FPGA-4K视频拼接

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

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述
此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:
在这里插入图片描述

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Video Mixer IP是一种用于实现视频叠加输出的功能的IP。它是OSD的升级版,vivado2019.1后OSD已不再使用。Video Mixer IP可以叠加最多16路视频,但实际项目中很少需要使用这么多路。\[1\] 在Video Mixer IP中,有两种模式可供选择。一种是Auto Restart Mode,默认模式,它可以让Video Mixer自动叠加视频流数据,而无需在叠加完成后通知CPU进行处理。当禁止中断时,可以使用该模式。另一种是Interrupt Mode,即在完成图层叠加后产生中断,通知CPU,并调用相应的回调函数进行处理。根据您的描述,您采用的是Auto Restart Mode,即不启用Mixer的中断。\[2\] 根据引用\[3\]中的描述,您的开发板是Xilinx Kintex7开发板,输入是OV5640摄像头,输出是HDMI 1080P叠加2路960X540视频输出。开发环境是vivado2019.1。根据您提供工程配置和输出结果,您已经成功配置了Master Layer,并实现了四路视频叠加输出。\[3\] 如果您有关于Video Mixer IP的更多问题,请告诉我。 #### 引用[.reference_title] - *1* *3* [FPGA利用Video Mixer IP实现视频叠加,送4工程源码技术支持](https://blog.csdn.net/qq_41667729/article/details/127137772)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [HDMI设计9--Video Mixer IP](https://blog.csdn.net/Archar_Saber/article/details/123575324)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9527华安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值