论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
分布式数据库
›
Zynq系列FPGA实现SDI视频编解码+图像缩放+多路视频拼接 ...
Zynq系列FPGA实现SDI视频编解码+图像缩放+多路视频拼接,基于GTX高速接口, ...
钜形不锈钢水箱
论坛元老
|
2024-7-10 20:30:37
|
显示全部楼层
|
阅读模式
楼主
主题
1004
|
帖子
1004
|
积分
3012
Zynq系列FPGA实现SDI视频编解码+图像缩放+多路视频拼接,基于GTX高速接口,提供8套工程源码和技术支持
1、媒介
现在FPGA实现SDI视频编解码有两种方案:一是利用专用编解码芯片,好比范例的接收器GS2971,发送器GS2972,长处是简单,好比GS2971接收器直接将SDI解码为并行的YCrCb422,GS2972发送器直接将并行的YCrCb422编码为SDI视频,缺点是成本较高,可以百度一下GS2971和GS2972的代价;另一种方案是利用FPGA逻辑资源部实现SDI编解码,利用Xilinx系列FPGA的GTP/GTX资源实现解串,利用Xilinx系列FPGA的SMPTE SDI资源实现SDI编解码,长处是合理利用了FPGA资源,GTP/GTX资源不用白不用,缺点是操纵难度大一些,对FPGA开发者的技术程度要求较高。故意思的是,这两种方案在本博这里都有对应的解决方案,包括硬件的FPGA开发板、工程源码等等。
工程概述
本计划基于Zynq系列的Zynq7100 FPGA开发板实现SDI视频编解码+图像缩放+多路视频拼接,输入源有两个,一个是3G-SDI相机,分辨率为1920x1080@60Hz,也可以利用HD-SDI或者SD-SDI相机,因为本计划是三种SDI视频自适应的;另一个HDMI转3G-SDI盒子,盒子外接条记本电脑以模拟SDI相机;两路输入SDI视频通过同轴线连接到FPGA开发板的BNC座子,然后同轴视频颠末板载的Gv8601a芯片实现单端转差分和均衡EQ的功能;然后差分SDI视频信号进入FPGA内部的GTX高速资源,实现数据高速串行到并行的转换,本博称之为解串;解串后的并行视频再送入Xilinx系列FPGA特有的SMPTE SD/HD/3G SDI IP核,进行SDI视频解码操纵并输出BT1120视频,至此,SDI视频解码操纵已经完成,可以进行常规的图像处置惩罚操纵了;
本计划的目标是做图像缩放+多路视频拼接后输出解码的SDI视频,针对现在市面上的主流项目需求,本博计划了两种输出方式,一种是HDMI输出,另一种是3G-SDI输出,这两种方式都必要对解码BT1120视频进行转RGB和图像缓存操纵和图像缩放操纵;图像缩放方案采用自研的HLS方案;本计划利用BT1120转RGB模块实现视频格式转换;利用自研的HLS图像缩放模块实现对输入视频的图像缩放操纵;利用本Xilinx官方的VDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的PS端DDR3;图像从DDR3读出后,进入Xilinx官方的Video Mixer IP核实现多路视频拼接操纵;然后送入HDMI发送模块输出HDMI显示器,这是HDMI输出方式;或者颠末RGB转BT1120模块实现视频格式转换,然后视频进入SMPTE SD/HD/3G SDI IP核,进行SDI视频编码操纵并输出SDI视频,再颠末FPGA内部的GTX高速资源,实现并行数据到高速串行的转换,本博称之为串化,差分高速信号再进入板载的Gv8500芯片实现差分转单端和驱动增强的功能,SDI视频通过FPGA开发板的BNC座子输出,通过同轴线连接到SDI转HDMI盒子连接到HDMI显示器,这是SDI输出方式;本博客提供8套工程源码,具体如下:
现对上述8套工程源码做如下解释,方便读者明白:
工程源码1
开发板FPGA型号为Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;输入源有两个,一个是3G-SDI相机,分辨率为1920x1080@60Hz,另一个HDMI转3G-SDI盒子,盒子外接条记本电脑以模拟SDI相机,分辨率为1920x1080@60Hz;两路输入视频颠末板载的2个Gv8601a芯片实现单端转差分和均衡EQ后送入FPGA;再颠末2路GTX将SDI视频解串为并行数据;再颠末2路SMPTE SDI IP核将SDI解码为2路BT1120数据;再颠末2路BT1120转RGB模块将BT1120转换为RGB888视频;再颠末2路自研的纯verilog实现的、支持恣意比例缩放的图像缩放模块,将输入视频由1920x1080缩放为960x540;再颠末Xilinx官方的2路VDMA图像缓存方案将视频写入PS侧DDR3做三帧缓存;然后调用Xilinx官方的Video Mixer IP核实现2路视频拼接操纵;然后将拼接视频送入RGB转HDMI模块,将RGB888视频转换为HDMI视频,输出分辨率为1920x1080@60Hz背景下叠加显示2路960x540的有效图像,即2分屏,具体显示效果请看文章末端的输出演示视频;最后通过HDMI显示器显示图像;该工程必要运行Zynq软核;实用于SDI视频拼接转HDMI场景;
工程源码2
开发板FPGA型号为Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;输入源有两个,一个是3G-SDI相机,分辨率为1920x1080@60Hz,另一个HDMI转3G-SDI盒子,盒子外接条记本电脑以模拟SDI相机,分辨率为1920x1080@60Hz;两路输入视频颠末板载的2个Gv8601a芯片实现单端转差分和均衡EQ后送入FPGA;再颠末2路GTX将SDI视频解串为并行数据;再颠末2路SMPTE SDI IP核将SDI解码为2路BT1120数据;再颠末2路BT1120转RGB模块将BT1120转换为RGB888视频;然后将2路视频分别复制1份得到4路视频,以模拟4路输入(如果你的开发板有4路输入,则无需此操纵);再颠末4路自研的纯verilog实现的、支持恣意比例缩放的图像缩放模块,将输入视频由1920x1080缩放为960x540;再颠末Xilinx官方的4路VDMA图像缓存方案将视频写入PS侧DDR3做三帧缓存;然后调用Xilinx官方的Video Mixer IP核实现4路视频拼接操纵;然后将拼接视频送入RGB转HDMI模块,将RGB888视频转换为HDMI视频,输出分辨率为1920x1080@60Hz背景下叠加显示4路960x540的有效图像,即4分屏,具体显示效果请看文章末端的输出演示视频;最后通过HDMI显示器显示图像;该工程必要运行Zynq软核;实用于SDI视频拼接转HDMI场景;
工程源码3
开发板FPGA型号为Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;输入源有两个,一个是3G-SDI相机,分辨率为1920x1080@60Hz,另一个HDMI转3G-SDI盒子,盒子外接条记本电脑以模拟SDI相机,分辨率为1920x1080@60Hz;两路输入视频颠末板载的2个Gv8601a芯片实现单端转差分和均衡EQ后送入FPGA;再颠末2路GTX将SDI视频解串为并行数据;再颠末2路SMPTE SDI IP核将SDI解码为2路BT1120数据;再颠末2路BT1120转RGB模块将BT1120转换为RGB888视频;然后将2路视频分别复制3份得到8路视频,以模拟8路输入(如果你的开发板有8路输入,则无需此操纵);再颠末8路自研的纯verilog实现的、支持恣意比例缩放的图像缩放模块,将输入视频由1920x1080缩放为480x540;再颠末Xilinx官方的8路VDMA图像缓存方案将视频写入PS侧DDR3做三帧缓存;然后调用Xilinx官方的Video Mixer IP核实现8路视频拼接操纵;然后将拼接视频送入RGB转HDMI模块,将RGB888视频转换为HDMI视频,输出分辨率为1920x1080@60Hz背景下叠加显示8路480x540的有效图像,即8分屏,具体显示效果请看文章末端的输出演示视频;最后通过HDMI显示器显示图像;该工程必要运行Zynq软核;实用于SDI视频拼接转HDMI场景;
工程源码4
开发板FPGA型号为Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;输入源有两个,一个是3G-SDI相机,分辨率为1920x1080@60Hz,另一个HDMI转3G-SDI盒子,盒子外接条记本电脑以模拟SDI相机,分辨率为1920x1080@60Hz;两路输入视频颠末板载的2个Gv8601a芯片实现单端转差分和均衡EQ后送入FPGA;再颠末2路GTX将SDI视频解串为并行数据;再颠末2路SMPTE SDI IP核将SDI解码为2路BT1120数据;再颠末2路BT1120转RGB模块将BT1120转换为RGB888视频;然后将2路视频分别复制7份得到16路视频,以模拟16路输入(如果你的开发板有16路输入,则无需此操纵);再颠末16路自研的纯verilog实现的、支持恣意比例缩放的图像缩放模块,将输入视频由1920x1080缩放为240x540;再颠末Xilinx官方的16路VDMA图像缓存方案将视频写入PS侧DDR3做三帧缓存;然后调用Xilinx官方的Video Mixer IP核实现16路视频拼接操纵;然后将拼接视频送入RGB转HDMI模块,将RGB888视频转换为HDMI视频,输出分辨率为1920x1080@60Hz背景下叠加显示16路240x540的有效图像,即16分屏,具体显示效果请看文章末端的输出演示视频;最后通过HDMI显示器显示图像;该工程必要运行Zynq软核;实用于SDI视频拼接转HDMI场景;
工程源码5
开发板FPGA型号为Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;输入源有两个,一个是3G-SDI相机,分辨率为1920x1080@60Hz,另一个HDMI转3G-SDI盒子,盒子外接条记本电脑以模拟SDI相机,分辨率为1920x1080@60Hz;两路输入视频颠末板载的2个Gv8601a芯片实现单端转差分和均衡EQ后送入FPGA;再颠末2路GTX将SDI视频解串为并行数据;再颠末2路SMPTE SDI IP核将SDI解码为2路BT1120数据;再颠末2路BT1120转RGB模块将BT1120转换为RGB888视频;再颠末2路自研的纯verilog实现的、支持恣意比例缩放的图像缩放模块,将输入视频由1920x1080缩放为960x540;再颠末Xilinx官方的2路VDMA图像缓存方案将视频写入PS侧DDR3做三帧缓存;然后调用Xilinx官方的Video Mixer IP核实现2路视频拼接操纵;然后将视频送RGB转BT1120模块,将RGB888视频转换为BT1120视频;再颠末SMPTE SD/HD/3G SDI IP核,将BT1120视频编码为SDI视频;再颠末FPGA内部的GTX高速资源,将SDI并行数据转换为高速串行信号;再颠末板载的Gv8500芯片实现差分转单端和驱动增强后输出,输出分辨率为1920x1080@60Hz背景下叠加显示2路960x540的有效图像,即2分屏,最后利用SDI转HDMI盒子连接到HDMI显示器显示;具体显示效果请看文章末端的输出演示视频;该工程必要运行Zynq软核;实用于SDI视频拼接转SDI场景;
工程源码6
开发板FPGA型号为Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;输入源有两个,一个是3G-SDI相机,分辨率为1920x1080@60Hz,另一个HDMI转3G-SDI盒子,盒子外接条记本电脑以模拟SDI相机,分辨率为1920x1080@60Hz;两路输入视频颠末板载的2个Gv8601a芯片实现单端转差分和均衡EQ后送入FPGA;再颠末2路GTX将SDI视频解串为并行数据;再颠末2路SMPTE SDI IP核将SDI解码为2路BT1120数据;再颠末2路BT1120转RGB模块将BT1120转换为RGB888视频;然后将2路视频分别复制1份得到4路视频,以模拟4路输入(如果你的开发板有4路输入,则无需此操纵);再颠末4路自研的纯verilog实现的、支持恣意比例缩放的图像缩放模块,将输入视频由1920x1080缩放为960x540;再颠末Xilinx官方的4路VDMA图像缓存方案将视频写入PS侧DDR3做三帧缓存;然后调用Xilinx官方的Video Mixer IP核实现4路视频拼接操纵;然后将视频送RGB转BT1120模块,将RGB888视频转换为BT1120视频;再颠末SMPTE SD/HD/3G SDI IP核,将BT1120视频编码为SDI视频;再颠末FPGA内部的GTX高速资源,将SDI并行数据转换为高速串行信号;再颠末板载的Gv8500芯片实现差分转单端和驱动增强后输出,输出分辨率为1920x1080@60Hz背景下叠加显示4路960x540的有效图像,即4分屏,最后利用SDI转HDMI盒子连接到HDMI显示器显示;具体显示效果请看文章末端的输出演示视频;该工程必要运行Zynq软核;实用于SDI视频拼接转SDI场景;
工程源码7
开发板FPGA型号为Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;输入源有两个,一个是3G-SDI相机,分辨率为1920x1080@60Hz,另一个HDMI转3G-SDI盒子,盒子外接条记本电脑以模拟SDI相机,分辨率为1920x1080@60Hz;两路输入视频颠末板载的2个Gv8601a芯片实现单端转差分和均衡EQ后送入FPGA;再颠末2路GTX将SDI视频解串为并行数据;再颠末2路SMPTE SDI IP核将SDI解码为2路BT1120数据;再颠末2路BT1120转RGB模块将BT1120转换为RGB888视频;然后将2路视频分别复制3份得到8路视频,以模拟8路输入(如果你的开发板有8路输入,则无需此操纵);再颠末8路自研的纯verilog实现的、支持恣意比例缩放的图像缩放模块,将输入视频由1920x1080缩放为480x540;再颠末Xilinx官方的8路VDMA图像缓存方案将视频写入PS侧DDR3做三帧缓存;然后调用Xilinx官方的Video Mixer IP核实现8路视频拼接操纵;然后将视频送RGB转BT1120模块,将RGB888视频转换为BT1120视频;再颠末SMPTE SD/HD/3G SDI IP核,将BT1120视频编码为SDI视频;再颠末FPGA内部的GTX高速资源,将SDI并行数据转换为高速串行信号;再颠末板载的Gv8500芯片实现差分转单端和驱动增强后输出,输出分辨率为1920x1080@60Hz背景下叠加显示8路480x540的有效图像,即8分屏,最后利用SDI转HDMI盒子连接到HDMI显示器显示;具体显示效果请看文章末端的输出演示视频;该工程必要运行Zynq软核;实用于SDI视频拼接转SDI场景;
工程源码8
开发板FPGA型号为Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;输入源有两个,一个是3G-SDI相机,分辨率为1920x1080@60Hz,另一个HDMI转3G-SDI盒子,盒子外接条记本电脑以模拟SDI相机,分辨率为1920x1080@60Hz;两路输入视频颠末板载的2个Gv8601a芯片实现单端转差分和均衡EQ后送入FPGA;再颠末2路GTX将SDI视频解串为并行数据;再颠末2路SMPTE SDI IP核将SDI解码为2路BT1120数据;再颠末2路BT1120转RGB模块将BT1120转换为RGB888视频;然后将2路视频分别复制7份得到16路视频,以模拟16路输入(如果你的开发板有16路输入,则无需此操纵);再颠末16路自研的纯verilog实现的、支持恣意比例缩放的图像缩放模块,将输入视频由1920x1080缩放为240x540;再颠末Xilinx官方的16路VDMA图像缓存方案将视频写入PS侧DDR3做三帧缓存;然后调用Xilinx官方的Video Mixer IP核实现16路视频拼接操纵;然后将视频送RGB转BT1120模块,将RGB888视频转换为BT1120视频;再颠末SMPTE SD/HD/3G SDI IP核,将BT1120视频编码为SDI视频;再颠末FPGA内部的GTX高速资源,将SDI并行数据转换为高速串行信号;再颠末板载的Gv8500芯片实现差分转单端和驱动增强后输出,输出分辨率为1920x1080@60Hz背景下叠加显示16路240x540的有效图像,即16分屏,最后利用SDI转HDMI盒子连接到HDMI显示器显示;具体显示效果请看文章末端的输出演示视频;该工程必要运行Zynq软核;实用于SDI视频拼接转SDI场景;
免责声明
本工程及其源码即有自己写的一部门,也有网络公开渠道获取的一部门(包括CSDN、Xilinx官网、Altera官网等等),若大佬们以为有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,克制用于商业用途,若由于读者或粉丝自身缘故原由用于商业用途所导致的法律问题,与本博客及博主无关,请审慎利用。。。
2、相关方案保举
本博已有的 SDI 编解码方案
我的博客主页开设有SDI视频专栏,内里满是FPGA编解码SDI的工程源码及博客介绍;既有基于GS2971/GS2972的SDI编解码,也有基于GTP/GTX资源的SDI编解码;既有HD-SDI、3G-SDI,也有6G-SDI、12G-SDI等;专栏地址链接如下:
点击直接前去
本博已有的FPGA图像缩放方案
我的主页现在有FPGA图像缩放专栏,改专栏收录了我现在手里已有的FPGA图像缩放方案,从实现方式分类有基于HSL实现的图像缩放、基于纯verilog代码实现的图像缩放;从应用上分为单路视频图像缩放、多路视频图像缩放、多路视频图像缩放拼接;从输入视频分类可分为OV5640摄像头视频缩放、SDI视频缩放、MIPI视频缩放等等;以下是专栏地址:
点击直接前去
本方案的无缩放应用
本方案有无缩放版本的应用,只做SDI视频编解码,之前专门写过一篇博客,博客地址链接如下:
点击直接前去
本方案在Xilinx–Kintex系列FPGA上的应用
本方案在Xilinx–Kintex系列FPGA上的也有应用,之前专门写过一篇博客,博客地址链接如下:
点击直接前去
3、具体计划方案
计划原理框图
计划原理框图如下:
注意!!!!
注意!!!!
紫色箭头:3G-SDI输出路径
赤色箭头:HDMI输出路径
SDI 输入设备
SDI 输入设备有两个,分别接入FPGA开发板的2路SDI视频输入接口;一个是3G-SDI相机,分辨率为1920x1080@60Hz,也可以利用HD-SDI或者SD-SDI相机,因为本计划是三种SDI视频自适应的;另一个HDMI转3G-SDI盒子,盒子外接条记本电脑以模拟SDI相机;SDI相机相对比较贵,预算有限的朋侪可以考虑用HDMI转SDI盒子模拟SDI相机,这种盒子某宝一百块左右;当利用HDMI转SDI盒子时,输入源可以用条记本电脑,即用条记本电脑通过HDMI线连接到HDMI转SDI盒子的HDMI输入接口,再用SDI线连接HDMI转SDI盒子的SDI输出接口到FPGA开发板,如下:
Gv8601a 均衡器
Gv8601a芯片实现单端转差分和均衡EQ的功能,这里选用Gv8601a是因为鉴戒了了Xilinx官方的方案,当然也可以用其他型号器件。Gv8601a均衡器原理图如下:
GTX 解串与串化
本计划利用Xilinx特有的GTX高速信号处置惩罚资源实现SDI差分视频信号的解串与串化,对于SDI视频接收而言,GTX起到解串的作用,即将输入的高速串行的差分信号解为并行的数字信号;对于SDI视频发送而言,GTX起到串化的作用,即将输入的并行的数字信号串化为高速串行的差分信号;GTX的利用一样平常必要例化GTX IP核,通过vivado的UI界面进行设置,但本计划必要对SD-SDI、HD-SDI、3G-SDI视频进行自动辨认和自适应处置惩罚,以是必要使得GTX具有动态改变线速率的功能,该功能可通过DRP接口设置,也可通过GTX的rate接口设置,以是不能利用vivado的UI界面进行设置,而是直接例化GTX的GTXE2_CHANNEL和GTXE2_COMMON源语直接利用GTX资源;此外,为了动态设置GTX线速率,还必要GTX控制模块,该模块参考了Xilinx的官方计划方案,具有动态监测SDI模式,动态设置DRP等功能;该方案参考了Xilinx官方的计划;GTX 解串与串化模块代码架构如下:
SMPTE SD/HD/3G SDI IP核
SMPTE SD/HD/3G SDI IP核是Xilinx系列FPGA特有的用于SDI视频编解码的IP,该IP设置利用非常简单,vivado的UI界面如下:
SMPTE SD/HD/3G SDI IP核必须与GTX配合才气利用,对于SDI视频接收而言,该IP接收来自于GTX的数据,然后将SDI视频解码为BT1120视频输出,对于SDI视频发送而言,该IP接收来自于用户侧的的BT1120视频数据,然后将BT1120视频编码为SDI视频输出;该方案参考了Xilinx官方的计划;SMPTE SD/HD/3G SDI IP核代码架构如下:
BT1120转RGB
BT1120转RGB模块的作用是将SMPTE SD/HD/3G SDI IP核解码输出的BT1120视频转换为RGB888视频,它由BT1120转CEA861模块、YUV422转YUV444模块、YUV444转RGB888三个模块构成,该方案参考了Xilinx官方的计划;BT1120转RGB模块代码架构如下:
BT1120转RGB后调用Xilinx官方的Video In To AXI4-Stream IP核实现Native视频到AXI4-Stream视频流的转换,该IP不必要SDK软件设置;
自研HLS图像缩放详解
本计划的图像缩放采用HLS方案C++代码实现,并综合成RTL后封装为IP,可在vivado中调用该IP,关于这个方案详情,请参考我之前的博客,博客链接如下:
点击直接前去
自研HLS图像缩放长处如下:
1:采用HLS实现,C++代码量很小,焦点代码仅3行,并以综合成RTL代码后封装为自定义IP,方便在vivado中调用;
2:采用双线性插值算法,可实现恣意比例、恣意尺寸缩放,灵活性可谓天花板级别;
3:驱动简单、利用方便,提供SDK驱动步伐,在主函数中调用API直接实现缩放操纵;
自研HLS图像缩放缺点如下:
1:只实用于Xilinx Zynq系列FPGA,必要其他Xilinx 系列FPGA利用则必要找博主定制,必要修改HLS工程中的FPGA型号,然后重新综合编译封装成IP才气在新的FPGA中利用;
2:只实用于vivado2019.1及其以下版本,从vivado2019.2版本开始,已不能利用其以下版本的HLS IP核,这是Xilinx官方的问题;
该IP在vivado中的综合资源占用情况如下:
HLS图像缩放必要在SDK中运行驱动和用户步伐才气正常工作,我在工程中给出了C语言步伐,具体参考工程源码;以工程源码1为例,HLS图像缩放在Block Design计划如下图:
VDMA图像缓存
本计划的视频缓存方案采用Xilinx官方的的VDMA图像缓存架构;缓存介质为PS端DDR3;以工程源码1为例,VDMA利用Xilinx vivado的Block Design计划,如下图:
为了降低延时,VDMA设置为缓存1帧,如下:
Video Mixer 多路视频拼接详解
这里重点介绍一下Xilinx官方的Video Mixer IP;
支持最大分辨率:8K,即可以处置惩罚高达8K的视频;
支持最多16层视频拼接叠加,即最多可拼接16路视频;
输入视频格式:AXI4-Stream;
输出视频格式:AXI4-Stream;
必要SDK软件设置,其本质为通过AXI_Lite 做寄存器设置;
提供自定义的设置API,通过调用该库函数即可轻松利用,具体参考SDK代码;
模块占用的FPGA逻辑资源更小,相比于自己写的HLS视频拼接而言,官方的Video Mixer资源占用大约减小30%左右,且更高效:以工程源码1的2路视频拼接为例,Video Mixer逻辑资源如下,请审慎评估你的FPGA资源情况;
关于这个Video Mixer视频拼接方案详情,请参考我之前的博客,博客链接如下:
点击直接前去
以工程源码1为例,Video Mixer利用Xilinx vivado的Block Design计划,如下图:
HDMI视频输出架构
HDMI视频输出架构如下:
参考Xilinx官方计划,利用VTC+AXI4-Stream To Video Out架构实现输出视频从AXI4-Stream到Native格式的转换;然后利用纯verilog代码实现的RGB888转HDMI模块实现RGB888到HDMI的转换,最后通过显示器显示,RGB888转HDMI模块代码架构如下:
关于RGB888转HDMI模块,请参考我之前的博客,博客地址:点击直接前去
SDI视频输出架构之–>RGB转BT1120
SDI视频输出架构首先要实现VDMA读出的AXI4-Stream到Native格式的转换,得到RGB888视频后再通过RGB转BT1120实现到BT1120视频的转换,其架构如下:
在SDI输出方式下VGA时序模块的像素时钟由SMPTE SD/HD/3G SDI IP核的发送用户时钟提供,在不同的SDI模式下像素时钟不同,好比在3G-SDI模式下像素时钟为148.5M,在HD-SDI的720P@60Hz模式下像素时钟为74.25M;
在SDI输出方式下必要利用RGB转BT1120模块;RGB转BT1200模块的作用是将用户侧的RGB视频转换为BT1200视频输出给SMPTE SD/HD/3G SDI IP核;RGB转BT1120模块由RGB888转YUV444模块、YUV444转YUV422模块、SDI视频编码模块、数据嵌入模块构成,该方案参考了Xilinx官方的计划;BT1120转RGB模块代码架构如下:
SDI视频输出架构之–>SMPTE SD/HD/3G SDI + GTX
这两部门与接收过程公用相应模块,功能上是接收过程的逆过程,不再赘述;
SDI视频输出架构之–>Gv8500 驱动器
Gv8500芯片实现差分转单端和增强驱动的功能,这里选用Gv8500是因为鉴戒了了Xilinx官方的方案,当然也可以用其他型号器件。Gv8500驱动器原理图如下:
SDI视频输出架构之–>SDI转HDMI盒子
在SDI输出方式下必要利用到SDI转HDMI盒子,因为我手里的显示器没有SDI接口,只有HDMI接口,为了显示SDI视频,只能这么做,当然,如果你的显示器有SDI接口,则可直接连接显示,我的SDI转HDMI盒子在某宝购买,不到100块;
工程源码架构之–>逻辑计划
本博客提供8套工程源码,以工程源码1为例,vivado Block Design计划如下,其他工程与之类似,Block Design计划如下:
以工程源码1为例,工程源码架构如下,其他工程与之类似:
工程源码架构之–>SDK软件计划
本计划工程的PL端时钟由Zynq软核提供,以是必要运行运行SDK以启动Zynq,此外,HLS图像缩放、VDMA、Video Mixer等IP核都必要运行软件驱动才气正常工作,以是,以工程源码1的2路视频拼接为例,SDK软件代码架构如下,其他工程与之类似:
4、工程源码1详解–>2路视频缩放拼接,HDMI输出版本
开发板FPGA型号:Xilinx-Zynq7100–xc7z100ffg900-2;
开发情况:Vivado2019.1;
输入1:3G-SDI相机,分辨率1920x1080@60Hz;
输入2:HDMI转SDI盒子(外接条记本电脑),分辨率1920x1080@60Hz;
输出:HDMI ,1920x1080@60Hz背景下叠加显示2路拼接的960x540的有效图像;
图像缩放方案:自研HLS图像缩放;
图像缩放实例:1920x1080缩放到960x540;
图像缓存方案:Xilinx官方VDMA方案;
图像缓存介质:PS端DDR3;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接应用:2路视频拼接;
工程作用:此工程目标是让读者把握Zynq系列FPGA实现SDI拼接转HDMI的计划能力,以便可以大概移植和计划自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》末节内容;
工程的资源消耗和功耗如下:
5、工程源码2详解–>4路视频缩放拼接,HDMI输出版本
开发板FPGA型号:Xilinx-Zynq7100–xc7z100ffg900-2;
开发情况:Vivado2019.1;
输入1:3G-SDI相机,分辨率1920x1080@60Hz,然后复制1份,得到2路;
输入2:HDMI转SDI盒子(外接条记本电脑),分辨率1920x1080@60Hz,然后复制1份,得到2路;
输出:HDMI ,1920x1080@60Hz背景下叠加显示4路拼接的960x540的有效图像;
图像缩放方案:自研HLS图像缩放;
图像缩放实例:1920x1080缩放到960x540;
图像缓存方案:Xilinx官方VDMA方案;
图像缓存介质:PS端DDR3;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接应用:4路视频拼接;
工程作用:此工程目标是让读者把握Zynq系列FPGA实现SDI拼接转HDMI的计划能力,以便可以大概移植和计划自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》末节内容;
工程的资源消耗和功耗如下:
6、工程源码3详解–>8路视频缩放拼接,HDMI输出版本
开发板FPGA型号:Xilinx-Zynq7100–xc7z100ffg900-2;
开发情况:Vivado2019.1;
输入1:3G-SDI相机,分辨率1920x1080@60Hz,然后复制3份,得到4路;
输入2:HDMI转SDI盒子(外接条记本电脑),分辨率1920x1080@60Hz,然后复制3份,得到4路;
输出:HDMI ,1920x1080@60Hz背景下叠加显示8路拼接的480x540的有效图像;
图像缩放方案:自研HLS图像缩放;
图像缩放实例:1920x1080缩放到480x540;
图像缓存方案:Xilinx官方VDMA方案;
图像缓存介质:PS端DDR3;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接应用:8路视频拼接;
工程作用:此工程目标是让读者把握Zynq系列FPGA实现SDI拼接转HDMI的计划能力,以便可以大概移植和计划自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》末节内容;
工程的资源消耗和功耗如下:
7、工程源码4详解–>16路视频缩放拼接,HDMI输出版本
开发板FPGA型号:Xilinx-Zynq7100–xc7z100ffg900-2;
开发情况:Vivado2019.1;
输入1:3G-SDI相机,分辨率1920x1080@60Hz,然后复制7份,得到8路;
输入2:HDMI转SDI盒子(外接条记本电脑),分辨率1920x1080@60Hz,然后复制7份,得到8路;
输出:HDMI ,1920x1080@60Hz背景下叠加显示16路拼接的240x540的有效图像;
图像缩放方案:自研HLS图像缩放;
图像缩放实例:1920x1080缩放到240x540;
图像缓存方案:Xilinx官方VDMA方案;
图像缓存介质:PS端DDR3;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接应用:16路视频拼接;
工程作用:此工程目标是让读者把握Zynq系列FPGA实现SDI拼接转HDMI的计划能力,以便可以大概移植和计划自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》末节内容;
工程的资源消耗和功耗如下:
8、工程源码5详解–>2路视频缩放拼接,3G-SDI输出版本
开发板FPGA型号:Xilinx-Zynq7100–xc7z100ffg900-2;
开发情况:Vivado2019.1;
输入1:3G-SDI相机,分辨率1920x1080@60Hz;
输入2:HDMI转SDI盒子(外接条记本电脑),分辨率1920x1080@60Hz;
输出:3G-SDI,1920x1080@60Hz背景下叠加显示2路拼接的960x540的有效图像;
图像缩放方案:自研HLS图像缩放;
图像缩放实例:1920x1080缩放到960x540;
图像缓存方案:Xilinx官方VDMA方案;
图像缓存介质:PS端DDR3;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接应用:2路视频拼接;
工程作用:此工程目标是让读者把握Zynq系列FPGA实现SDI拼接转HDMI的计划能力,以便可以大概移植和计划自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》末节内容;
工程的资源消耗和功耗如下:
9、工程源码6详解–>4路视频缩放拼接,3G-SDI输出版本
开发板FPGA型号:Xilinx-Zynq7100–xc7z100ffg900-2;
开发情况:Vivado2019.1;
输入1:3G-SDI相机,分辨率1920x1080@60Hz,然后复制1份,得到2路;
输入2:HDMI转SDI盒子(外接条记本电脑),分辨率1920x1080@60Hz,然后复制1份,得到2路;
输出:3G-SDI,1920x1080@60Hz背景下叠加显示4路拼接的960x540的有效图像;
图像缩放方案:自研HLS图像缩放;
图像缩放实例:1920x1080缩放到960x540;
图像缓存方案:Xilinx官方VDMA方案;
图像缓存介质:PS端DDR3;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接应用:4路视频拼接;
工程作用:此工程目标是让读者把握Zynq系列FPGA实现SDI拼接转HDMI的计划能力,以便可以大概移植和计划自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》末节内容;
工程的资源消耗和功耗如下:
10、工程源码7详解–>8路视频缩放拼接,3G-SDI输出版本
开发板FPGA型号:Xilinx-Zynq7100–xc7z100ffg900-2;
开发情况:Vivado2019.1;
输入1:3G-SDI相机,分辨率1920x1080@60Hz,然后复制3份,得到4路;
输入2:HDMI转SDI盒子(外接条记本电脑),分辨率1920x1080@60Hz,然后复制3份,得到4路;
输出:3G-SDI,1920x1080@60Hz背景下叠加显示8路拼接的480x540的有效图像;
图像缩放方案:自研HLS图像缩放;
图像缩放实例:1920x1080缩放到480x540;
图像缓存方案:Xilinx官方VDMA方案;
图像缓存介质:PS端DDR3;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接应用:8路视频拼接;
工程作用:此工程目标是让读者把握Zynq系列FPGA实现SDI拼接转HDMI的计划能力,以便可以大概移植和计划自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》末节内容;
工程的资源消耗和功耗如下:
11、工程源码8详解–>16路视频缩放拼接,3G-SDI输出版本
开发板FPGA型号:Xilinx-Zynq7100–xc7z100ffg900-2;
开发情况:Vivado2019.1;
输入1:3G-SDI相机,分辨率1920x1080@60Hz,然后复制7份,得到8路;
输入2:HDMI转SDI盒子(外接条记本电脑),分辨率1920x1080@60Hz,然后复制7份,得到8路;
输出:3G-SDI,1920x1080@60Hz背景下叠加显示16路拼接的240x540的有效图像;
图像缩放方案:自研HLS图像缩放;
图像缩放实例:1920x1080缩放到240x540;
图像缓存方案:Xilinx官方VDMA方案;
图像缓存介质:PS端DDR3;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接应用:16路视频拼接;
工程作用:此工程目标是让读者把握Zynq系列FPGA实现SDI拼接转HDMI的计划能力,以便可以大概移植和计划自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》末节内容;
工程的资源消耗和功耗如下:
12、工程移植说明
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软核;
13、上板调试验证
预备工作
必要预备的东西如下:
FPGA开发板;
SDI摄像头和HDMI转SDI盒子;
SDI转HDMI盒子;
HDMI显示器;
我的开发板了连接如下:
2路SDI视频缩放拼接–>输出视频演示
2路SDI视频缩放拼接,输出如下:
Zynq-SDI-2路视频拼接
4路SDI视频缩放拼接–>输出视频演示
4路SDI视频缩放拼接,输出如下:
Zynq-SDI-4路视频拼接
8路SDI视频缩放拼接–>输出视频演示
8路SDI视频缩放拼接,输出如下:
Zynq-SDI-8路视频拼接
16路SDI视频缩放拼接–>输出视频演示
16路SDI视频缩放拼接,输出如下:
Zynq-SDI-16路视频拼接
14、福利:工程代码的获取
福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末端的V名片。
网盘资料如下:
此外,有很多朋侪给本博主提了很多意见和发起,盼望能丰富服务内容和选项,因为不同朋侪的需求不一样,以是本博主还提供以下服务:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
钜形不锈钢水箱
论坛元老
这个人很懒什么都没写!
楼主热帖
Linux——环境基础开发工具的使用 ...
详细介绍如何在ubuntu20.04中安装ROS系 ...
Android Studio第12课关于databinding ...
架构师说低代码:走出半生,归来仍是“ ...
HCIA学习笔记四:华为设备登录信息 ...
Android Studio实现音乐播放器2.0 ...
SAP FICO+MM测试环境
Jenkins发布uniapp开发的H5遇到的问题 ...
【小程序专栏】多种开发方式对比-跨端 ...
JNDI RMI 远程访问(LOG4j2漏洞底层原 ...
标签云
运维
CIO
存储
服务器
浏览过的版块
开源技术
运维.售后
Oracle
终端安全
快速回复
返回顶部
返回列表