FPGA实现SDI视频编解码的方案

1、前言fpga实现sdi视频编解码目前有两种方案:
一是使用专用编解码芯片,比如典型的接收器gs2971,发送器gs2972,优点是简单,比如gs2971接收器直接将sdi解码为并行的ycrcb,gs2972发送器直接将并行的ycrcb编码为sdi视频,缺点是成本较高,可以百度一下gs2971和gs2972的价格;
另一种方案是使用fpga实现编解码,利用fpga的gtp/gtx资源实现解串,优点是合理利用了fpga资源,gtp/gtx资源不用白不用,缺点是操作难度大一些,对fpga水平要求较高。
本文详细描述了fpga纯verilog编解码sdi视频的实现设计方案,工程代码编译通过后上板调试验证,文章末尾有演示视频,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
本设计提供两套vivado工程;
工程1:
sdi 1080p@30hz帧视频输入解码后,经ddr3缓存,sdi发送1080p@30hz帧输出;
工程2:
fpga内部生成测试彩条视频,sdi发送出去,sdi接收后无缓存hdmi输出;
2、设计思路和框架设计思路和框架如下:
sdi经ddr3环出工程设计思路如下:
sdi接收这里重点将sdi图像缓存和发送部分:
sdi缓存写方式处理sdi 接收解串后,把 20 位数据,异步 fifo 方式,8 个数据一起打包成并行数据,送入 ddr3。通过 rx_usrclk 时钟送入 20 位到 fifo,然后再用 ddr 的 ui_clk 时钟,把 8 个数据并行送入ddr3。每帧数据满了后,我们就把帧号加 1,即 ddr3_addr_bank_wr 变量加 1,这样使得我们在 ddr3 内存颗粒放置了3帧数据。
sdi缓存读方式处理通过ui_clk,一个时钟读出 8 个 sdi 数据,送入 fifo,通过异步方式,也就是通过 tx_usrclk时钟,读出 1 个 sdi 数据,也就是 20bit 的 sdi 数据。每读满一帧,我们就通过ddr3_addr_bank_rd <= ddr3_addr_bank_wr ‐2'b1;方式,让读帧号跟随着写帧号。
sdi缓存的目的rx_usrclk 时钟是来自信号源,但是 sdi 发送必须要使用本地晶振,也就是硬件上连接到gtx 的参考时钟晶振。由于时钟的不同源,所以我们不能把接收的信号源直接送到 sdi 发送引擎上去,必须要经过 ddr 方式做帧处理才能做 sdi 环出。
sdi发送sdi发送是sdi接收的逆过程,即使用sdi ip编码将视频数据编码为sdi格式,再使用gtx将并行sdi数据串化为高速串行数据通过gtx发送出去,经过gv8500增强驱动后给到sdi发送的bnc座子。
sdi发送接收彩条视频工程设计思路如下:
fpga内部生成3g-sdi彩条视频,不缓存,直接经前文介绍的sdi发送通路发送出去,再经前文介绍的sdi接收通路后送hdmi输出显示。
3、工程1详解开发板:xilinx kintex7开发板;
开发环境:vivado2019.1;
输入:sdi摄像头,分辨率1080p@30帧;
输出:sdi,分辨率1080p@30帧;
工程代码架构如下:
资源消耗和功耗预估如下:
4、工程2详解开发板:xilinx kintex7开发板;
开发环境:vivado2019.1;
输入:fpga内部生成彩条,分辨率1080p@30帧;
输出:hdmi,分辨率1080p@30帧;
工程代码架构如下:
资源消耗和功耗预估如下:

水流量传感器工作原理
美高森美与中国电信合作优化OTN技术以启动5G时代
dcdc大功率升压电路原理
华为在边缘计算方面的实践及产业观点
尼康再掀裁员风暴,涉及数码相机与半导体制造业务
FPGA实现SDI视频编解码的方案
ps怎么自由裁剪图片,具体方法是怎样的
三星电子将举办代工论坛2019大会 届时公布晶圆代工的相关细节
2020年全球CRU线缆的市场需求下降3.6%
E拆解:华为 Mate 20 X 5G 2214个组件中,哪个国家提供组件成本占比最高 ?
为便携式设备快速充电设计方案
检测户外环境,智能家居方面的PM2.5,PM10的PM2.5传感器
用电流原理测量共模扼流圈饱和特性的方法
防爆型气象站技术参数是什么?
实现半导体照明产业与教育产业双主业
全身布满传感器:无人驾驶车工作原理简析
观海微GH8555BL-XX常见问题及简单的调试方法
SteamVR有望数月内在Mac OSX和Linux平台使用
采用C8051F920单片机的金卤灯控制器的设计
开发者发文表达了他觉得 Python不行的8大原因