FPGA实现 12G-SDI 视频编解码,支持4K60帧,提供2套工程源码+开发板+技术支持


FPGA实现 12G-SDI 视频编解码,支持4K60帧,提供2套工程源码+开发板+技术支持

1、前言

Xilinx系列FPGA实现12G-SDI视频编解码目前有两种方案:
一是使用Xilinx 7系列FPGA的GT高速接口解串+SMPTE UHD-SDI编解码,这种方案的优点是对FPGA型号要求较低,价格便宜,普通的GTX就能满足要求,缺点是灵活度不高,没有ARM加持,做嵌入式应用不太方便;另一是使用Xilinx UltraScale+系列FPGA的GT高速接口解串+UHD-SDI GT编解码,这种方案的优点是灵活度较高,一般都采用Zynq UltraScale+系列FPGA,易于嵌入式应用,缺点是对FPGA型号要求较高,价格偏贵,至少需要GTH才能满足要求;基于这两种主流方案,本设计共推出2套vivado2020.2版本的工程源码,具体如下:
在这里插入图片描述
下面对上述2套工程源码做如下解释:

工程源码1:
工程源码1采用zynq UltraScale+MPSoCsXCZU4EV的高端型号FPGA;12G-SDI 视频接收过程为:输入源为本博主自研的12G-SDI彩条发生器,能够产生一个4K60帧的12G-SDI彩条视频,并通过BNC同轴线输出;然后接入本博主提供的FPGA开发板,然后进入板载的TI公司的LMH1219芯片做均衡处理,同时将单端信号转为差分信号;然后视频进入Xilinx官方提供的UHD-SDI GT IP核做解串处理,该IP调用GTH高速接口资源将SDI视频解串为AXI4-Stream视频流和控制流,然后进入Xilinx官方提供的SMPTE UHD-SDI RX SUBSYSTEM IP核做SDI视频解码处理,将视频转为RGB;到这里,12G-SDI 视频解码工作就完成了,解码后的视频为并行的TTL电平的数据,此时可以供用户做后续处理,比如缓存、颜色转换、缩放、图像识别等,本设计不做处理,直接编码后依然以12G-SDI形式输出;

12G-SDI 视频发送过程为:接收并解码的12G-SDI 视频经过AXI4-Stream Data FIFO做数据缓冲,然后进入Xilinx官方提供的SMPTE UHD-SDI TX SUBSYSTEM IP核做SDI视频编码处理,将RGB视频编码为SDI视频;然后视频进入Xilinx官方提供的UHD-SDI GT IP核做解串处理,该IP调用GTH高速接口资源将SDI视频从AXI4-Stream视频流串化为高速差分信号输出,差分信号再进入板载的TI公司的LMH1218芯片做均衡处理,同时将差分信号转为单端信号,并通过板载的BNC接口输出;要想显示12G-SDI视频,还得需要一个12G-SDI转HDMI的转换器,再接入显示器即可显示;

工程源码2:
工程源码2采用Kintex7-32T的低端型号FPGA;12G-SDI 视频接收过程为:输入源为本博主自研的12G-SDI彩条发生器,能够产生一个4K60帧的12G-SDI彩条视频,并通过BNC同轴线输出;然后接入本博主提供的FPGA开发板,然后进入板载的TI公司的LMH1219芯片做均衡处理,同时将单端信号转为差分信号;然后视频进入Xilinx官方提供的GTX高速接口资源做解串处理,这里并没有调用IP,而是参考官方直接用GTX原语,GTX高速接口资源将高速差分SDI视频解串为并行数据;然后进入Xilinx官方提供的SMPTE UHD-SDI IP核做SDI视频解码处理,将视频解码为TTL电平数据;到这里,12G-SDI 视频解码工作就完成了,解码后的视频为并行的TTL电平的数据,此时可以供用户做后续处理,比如缓存、颜色转换、缩放、图像识别等,本设计不做处理,调用一个ILA对数据做观测,将图像数据留给用户,用户根据自身需要做处理,灵活性很高;

12G-SDI 视频发送过程为:FPGA内部产生一个12G-SDI视频彩条,然后进入Xilinx官方提供的SMPTE UHD-SDI IP核做SDI视频编码处理,将彩条视频编码为SDI视频;然后视频进入Xilinx官方提供的GTX高速接口资源做解串处理,这里并没有调用IP,而是参考官方直接用GTX原语,GTX高速接口资源将并行的SDI视频串化为高速差分信号,差分信号再进入板载的TI公司的LMH1218芯片做均衡处理,同时将差分信号转为单端信号,并通过板载的BNC接口输出;要想显示12G-SDI视频,还得需要一个12G-SDI转HDMI的转换器,再接入显示器即可显示;

本博客详细描述了Xilinx系列FPGA实现12G-SDI 视频编解码的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括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开发板搭建;以下是专栏地址:
点击直接前往

我目前已有的SDI编解码方案

我的博客主页开设有SDI视频专栏,里面全是FPGA编解码SDI的工程源码及博客介绍;既有基于GS2971/GS2972的SDI编解码,也有基于GTP/GTX资源的SDI编解码;专栏地址链接:点击直接前往

3、详细设计方案

设计框图

工程源码1的详细设计方案框图如下:
在这里插入图片描述
工程源码2的详细设计方案框图如下:
在这里插入图片描述

12G-SDI彩条发生器

本博主热爱SDI视频开发,自研了一款12G-SDI彩条发生器,如下:
在这里插入图片描述
该设备价格低廉但很好用,可产生3G、6G、12G等多种分辨率的SDI视频彩条,通过一个按键切换,具体切换逻辑如下:
上电默认输出1080P@60Hz的彩条;
按第一下按键:输出1080P@50Hz的彩条;
按第二下按键:输出4K@60Hz的彩条;
按第三下按键:输出4K@50Hz的彩条;
按第四下按键:输出4K@30Hz的彩条;
按第五下按键:输出4K@25Hz的彩条;
该彩条发生器非常适合做SDI视频输入源,需要它的朋友,向本博主可有偿提供;

12G-SDI硬件均衡方案

12G-SDI接收端使用TI公司的LMH1219芯片做均衡处理,同时将单端信号转为差分信号;
12G-SDI发送端使用TI公司的LMH1218芯片做均衡处理,同时将差分信号转为单端信号;
LMH1219和LMH1218可做硬件回环处理,这样可以将SDI视频做到极低的延时,本设计默认做了硬件回环处理,若需要FPGA接收SDI视频经处理再输出,需要i2c总线配置LMH1218,本设计工程即是这种方式;
另外,需要做LMH1219和LMH1218硬件回环的朋友,可联系本博主有偿提供硬件设计或成品;

GT高速接口资源使用

工程源码1使用Xilinx官方提供的UHD-SDI GT IP核,可解串和串化3G、6G、12G SDI视频,本设计配置为2G SDI,如下:
在这里插入图片描述
该IP直接调用GTH高速接口资源实现SDI视频的解串与串化,使用和配置非常方便,但需要指定SDI硬件连接的GT块位置和GT时钟引脚,此外,该IP不需要软件配置,可使用官方例程进行配套连接;

工程源码2使用Xilinx官方提供的GTX,可解串和串化3G、6G、12G SDI视频,这里并没有调用IP,而是参考官方直接用GTX原语,代码如下:
在这里插入图片描述

12G-SDI编解码–IP核使用

工程源码1使用Xilinx官方提供的SMPTE UHD-SDI RX SUBSYSTEM,可解码3G、6G、12G SDI视频,本设计配置为12G SDI,如下:
在这里插入图片描述
该IP需要软件配置,本设计提供了vitis软件驱动,详情请参考vitis工程;

工程源码2使用Xilinx官方提供的SMPTE UHD-SDI,可解码3G、6G、12G SDI视频,本设计配置为12G SDI,如下:
在这里插入图片描述
该IP不需要软件配置,但需要配合GTX捆绑使用;

数据缓存

工程源码1才有此功能,工程源码2没有;由于追求低延时,本设计没有采用DDR缓存,而是采用官方推荐方案,采用AXI4-Stream Data FIFO做数据缓冲,这里很简单,不再赘述;

SMPTE UHD-SDI TX SUBSYSTEM IP核使用

工程源码1才有此功能,工程源码2没有;SMPTE UHD-SDI TX SUBSYSTEM由Xilinx官方提供,可编码3G、6G、12G SDI视频,本设计配置为2G SDI,如下:
在这里插入图片描述
该IP需要软件配置,本设计提供了vitis软件驱动,详情请参考vitis工程;

12G-SDI转HDMI盒子

由于我的手里没有可直接接收12G-SDI视频的显示设备,所以只能用12G-SDI转HDMI盒子通过HDMI显示器显示,盒子较贵,我用的秋叶原的,价格1000+;

工程源码架构

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

4、Vivado工程1详解–>Zynq UltraScale ZU4EV版本

开发板FPGA型号:Xilinx–Zynq UltraScale+MPSoCs–xczu4ev-sfvc784-2-i;
开发环境:Vivado2020.2;
输入:12G-SDI彩条发生器,分辨率为4K@60帧;
输出:12G-SDI;
FPGA实现 12G-SDI 视频编解码;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA实现 12G-SDI 视频编解码的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

5、Vivado工程2详解–>Kintex7-325T版本

开发板FPGA型号:Xilinx–Kintex7-325T–xc7k325tffg676-3;
开发环境:Vivado2020.2;
输入:12G-SDI彩条发生器,分辨率为4K@60帧;
输出:12G-SDI;
FPGA实现 12G-SDI 视频编解码;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA实现 12G-SDI 视频编解码的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

6、工程移植说明

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软核;

7、上板调试验证

准备工作

FPGA开发板,推荐使用本博的开发板;
12G-SDI视频源,推荐本博的信号发生器;
12G-SDI转HDMI盒子;
HDMI线;
4K显示器;
以工程源码1为例,板子连接如下:
在这里插入图片描述

视频输出演示

以工程源码1为例,视频输出演示如下:

FPGA编解码12G-SDI

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

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

  • 31
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: FPGA XC6SLX16是一款由Xilinx公司生产的可程逻辑门阵列芯片。DDR3开发是一款基于XC6SLX16芯片的开发,用于学习和开发FPGA的应用程序。PDF原理图是开发的电路图,详细描述了开发上各个部件的连接和功能。Xilinx逻辑例程是一系列示例程序,帮助开发者快速了解并掌握FPGA程和应用。开发文档资料.zip是一个压缩包,包含了所有与开发相关的文档、手册和资料。 使用FPGA XC6SLX16开发可以实现各种应用,如数字信号处理、嵌入式系统、图像处理等。通过阅读PDF原理图,开发者可以了解开发上各个电路部件的连接方式,包括芯片、GPIO接口、存储器、时钟等。这有助于开发者在开发过程中理解电路架构和信号传输。 Xilinx逻辑例程提供了一些实用的代码示例,帮助开发者学习FPGA的设计和程方法。这些例程涵盖了基本的逻辑操作、时序控制、数据传输和外设接口等方面的内容。开发者可以根据需要选择合适的例程进行学习和实践,提高对FPGA程的掌握。 开发文档资料.zip包含了所有与开发相关的文档和手册。这些资料详细介绍了开发的硬件规格、软件配置和调试方法。开发者可以通过阅读这些资料,了解如何正确使用开发进行开发和调试,迅速上手并进行FPGA应用的实现。 总而言之,FPGA XC6SLX16 DDR3开发PDF原理图、Xilinx逻辑例程和开发文档资料.zip提供了综合的学习和开发,对于想要学习并应用FPGA技术开发者来说,是非常有帮助和必备的工具。 ### 回答2: FPGA XC6SLX16 DDR3开发PDF原理图和Xilinx逻辑例程的开发文档资料.zip是一份包含开发设计和使用文档的压缩文件,主要用于帮助用户了解和开发XC6SLX16 FPGA开发。 PDF原理图文件提供开发设计的电路图,包括XC6SLX16 FPGA芯片、DDR3存储器和其他周边电路的连接和配置。这些电路图可以帮助用户理解开发硬件的组成和工作原理,方便进行硬件设计和调试。 Xilinx逻辑例程文件是指使用Xilinx FPGA开发工具进行开发的示例代码。这些代码可以帮助用户快速上手XC6SLX16 FPGA开发,了解如何进行逻辑设计和程,并提供一些常见功能的实现方法。用户可以根据自己的需求进行修改和扩展,实现具体的应用功能。 开发文档资料详细介绍了开发的特性、规格和使用方法。文档中包含了开发的引脚定义、时序要求、供电和外设接口的说明,以及开发环境的配置和使用说明。这些文档是用户使用开发的重要参考,可以帮助用户顺利进行开发和调试工作。 综上所述,FPGA XC6SLX16 DDR3开发PDF原理图和Xilinx逻辑例程的开发文档资料.zip提供开发XC6SLX16 FPGA开发所需的设计和使用资料,帮助用户更好地理解开发硬件结构、进行逻辑设计和实现应用功能。 ### 回答3: "FPGA XC6SLX16 DDR3开发PDF原理图 Xilinx逻辑例程 开发文档资料.zip"是一个包含了FPGA XC6SLX16 DDR3开发相关资料的压缩文件。该文件包含了PDF版本的开发原理图,这些原理图展示了开发的电路设计和连接方式,方便开发者了解开发的硬件设计和接口布局。 此外,该文件还包含了Xilinx逻辑例程,这些是在FPGA上运行的示例代码,可以帮助用户了解如何使用FPGA XC6SLX16 DDR3开发进行逻辑设计和开发。 同时,开发文档资料也被打包在这个压缩文件中,这些文档提供开发的详细规格、使用指南以及开发上的接口定义等信息,用户可以通过阅读这些文档深入了解该开发的功能和使用方法。 总之,"FPGA XC6SLX16 DDR3开发PDF原理图 Xilinx逻辑例程 开发文档资料.zip"为用户提供开发相关的硬件原理图、逻辑代码示例以及详细的使用文档,方便开发者深入了解和使用该开发进行FPGA开发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

9527华安

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

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

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

打赏作者

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

抵扣说明:

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

余额充值