取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Visitor
Visitor
367 次查看
注册日期: ‎07-30-2019

采用FPGA构建数字视频矩阵的一些设计思路和设计需求

 

音视频数字矩阵

高清视频矩阵

高清视频模拟数字混合矩阵

 

设计需求,方案讨论。

l  矩阵描述

    输入视频经过专用的视频芯片转换位RGB/YUV444/LVDS FPGA 将输入音视频转换为 Serdes 数字差分信号,进背板,经过数字差分交换到输出板的FPGA Serdes,经过FPGA将视频还原到DDR3 SDRAM 经过视频裁剪缩放分割等输出到专用视频输出芯片再输出到显示器。

 

l  矩阵组成

    视频矩阵由机箱、电源、背板、数字高速差分交换板、系统控制板(嵌入式系统管理)、基础视频输入卡、基础视频输出卡。以HDMI接口为例子,简单描述输入卡输出卡。考虑代码移植的兼容性,板卡采用ARM CPU,没有采用FPGA内嵌CPU

A.   视频输入卡,HDMI 视频经过HDMI 接收芯片转换成 RGB888/YUV422/YUV444/LVDS 可选,进入FPGA,视频与 FPGA 下的DDRS SDRAM 中的多个OSD叠加后,与音频同步编码转换成Serdes发送到背板。ARM CPU管理CAN总线,HDMI输入视频接口芯片的舒适化设置,管理FPGA内部寄存器的设置。实现去隔行功能,视频缩放(任意比列、支持4K)、每路视频支持多个OSD与视频透明半透明叠加,OSD 任意尺寸(不大于原视频输入的尺寸)的静态真彩位图、动态OSD视频、动态中英文字母。

B.    视频输出卡,背板来的Serdes FPGA 解码成音频和视频流,视频经过FPGA存入DDR3 SDRAM,再从DDR3 SDRAM中读出经过裁剪、缩放(任意比列、支持4K)、分割等处理将视频与音频送到视频输出芯片转换成HDMI送到显示器。

C.   多画面分割卡,将背板来的多路Serdes输入信号裁剪缩放后重新组成一路输出。画面分割的数量与视频输入Serdes的数量有直接关系,视频放大需占用DDR3内存的带宽,缩小不占DDR3的带宽。

D.   多画面拼接卡,比如3X39块屏组成大大屏,需要9个拼接单元,这每个拼接单元能实现多个视频在一个显示器上分割显示,这就实现了多路视屏在同一个3x3的大屏上任意位置,任意层次,漫游叠加遮挡等多画面拼接显示。

E.    多画面融合卡,主要用在多投影机拼接融合,在球体、锥体、立体建筑物、立体舞台上投影,将多个视频融合显示组成一个立体的动态视频场景。融合单元在实现分割单元、拼接单元的同时要实现视频的各种梯形、枕形、球面、锥面、不规则图形的拉伸、旋转等算法。要消除多投影机投影边缘亮带。

F.    FPGA视频接口 RGB888/YUV422/YUV444/LVDS 可选,8-48位并行,SDR/DDR 165MHz。支持 1.2Gbps LVDS 可支持4K_24@60Hz

G.   输入输出 FPGA DDR3 SDRAM接口 800MHz 32BIT 512M 字节。

H.   FPGA Serdes 实现音频视频同步传输。实现USB的鼠标键盘、RS232等数据传输。

 

l  DDR3 数据带宽,Serdes收发速率的计算推导

A.   DDR3 数据吞吐量,理论上800M DDR3的数据吞吐量为 800x32=25.6Gbps。考虑多路视频读写(CPU读写很慢,忽略CPU读写),DDR3自动刷新,实际使用不能超过80%,超过这个视频会有抖动等不稳定现象。我们按2K_24位视频计算,2K视频的点时钟位148.5MHz 150M算,忽略行场逆程时间,考虑视频在内存中实现分割,按32对齐 150x32=4.8Gbps(25.6/4.8)x0.8=4.3。在我们实际应用中800M 32DDR3 一般只实现22K@60视频的输入+22K@60视频的输出。

B.   DDR3带宽问题,多画面拼接和多画面融合面临同一问题。在视频裁剪后再大比例放大,由于FPGA内部FIFO/RAM资源不可能兜住哪怕非常小的一帧画面,需要在放大时得用DDR3 SDRAM 来兜,这就需要占用DDR3的读写带宽。在这类单元卡中要扩展视频输入的路数,要考虑板卡Serdes 的数量,FPGA Serdes的数量,还要考虑DDR3 SDRAM的带宽。在做视频拉伸、旋转的算法也需要占用DDR3 SDRAM的带宽。

C.   Serdes 数据吞吐量,这是我们矩阵最关键的数据,越大越好。在实际中使用有多约束,背板的 Crosspoint Switches FPGA Serdes 的速率,价格因素等都在干扰我们的选择。

常见的视频的数据带宽,忽略音频数据。     原始流            8B10B      64B66B

a1920x1080_24bit@60Hz  1920x1080x24x60=   2.99Gbps     3.74Gbps       3.08Gbps

b1920x1200_24bit@60Hz  1920x1200x24x60=   3.32Gbps     4.15Gbps       3.42Gbps

c3840x2160_24bit@30Hz   3840x2160x24x30=  5.97Gbps     7.46Gbps       6.16Gbps

d3840x2160_24bit@60Hz  3840x2160x24x60=   11.94Gbps    14.93Gbps      12.31Gbps

D.   Serdes 常见的协议。我们在Serdes中要传输很多数据,有视频,音频,控制数据也可能有USB232,以太网等。考虑Serdes交流特性,不能长0和长1,我们一般会选择一个协议来用。

a)   8B10B协议,以太网,PCI-E采用该协议,非常成熟,应用非常广泛。但是有个致命的缺点,编码效率太低 8/10 = 0.8 ,损失20%的带宽。

b)   3G-SDI协议,采用成熟的3G-SDI直接传输音视频,是个非常不错的建议,该协议本身就是广电系统中音视频传输用的,有很多厂家的矩阵都是采用该协议。缺点也很明显,视频只能支持1080P60 422/10bit。在要求1920x1200@60或要求24位真彩、YUV444的及苛刻挑剔的用户就不好用了。

c)   64B66B协议,万兆以太网采用该协议,非常成熟,编码效率恨高 64/66=0.97,编码实现比较复杂,一般需要FPGA芯片厂家支持。

d)   NRZ扰码,封装自己的协议。可以借鉴SDI采用的NRZ扰码协议为底层,自己再定义关键字去封装自己的协议。对编程人员要求比较高,需要长时间大量的数据交换去验证自己定义的协议的稳定性。

 

l  Crosspoint Switches 高速数字差分交换芯片的选择

    从上面的Serdes速率分析,我们的差分交换芯片的速率最小也要选3.125Gbps的,支持2K@60P视频无损无堵塞交换。考虑目前4K@30的视频发展很快,家用电视、显示器甚至手机的分辨率也达到4K,我们在设计初期就应该考虑兼容4K@30/4K@60的无损切换。长远考虑建议选6.25GbpsCrosspoint Switches。这样采用单个差分对就能传输一路4K@30视频信号,附属产品的4K@30的光纤收发器也能直接进出背板。在未来的4K@60的视频采用2个差分对来传输。

厂家连接

https://www.macom.com/crosspoint

https://www.semtech.com/products/broadcast-video/crosspoints

https://www.microsemi.com/product-directory/signal-integrity/3579-digital-crosspoint-switches

https://www.analog.com/cn/products/switches-multiplexers/digital-crosspoint-switches.html

 

l  FPGA选择

    FPGA选择要看设计者手上现有的代码资源,Serdes速率选择,DDR3 SDRAM 速率,FPGA 内部FIFO/RAM块的数量,FPGA 内部DSP数量(视频缩放、拉伸等算法需要大量的DSP单元支持)。一般3.125Gbps 2K@60的视频矩阵方案中,选Lattice ECP3 的厂家较多。选用6.25Gbps的支持4K@30的视频矩阵方案目前Xilinx ARTIX-7 是我建议的选择。

 

l  系统控制卡

    考虑目前矩阵需要有输入输出端口的视频预览功能,系统控制卡一定需要有视频的h.264/Jpeg 编码能力。建议选用华为海思的CPU,操作系统选用Linux/Android

 

l  FPGA 视频缩放模块

    支持邻近、线性、三次插值算法,单个缩放模块最大支持166M时钟(支持1080P60),可以2个或多个模块并联实现4K@30/4K@60的缩放。支持任意比列的缩放。视频放大需占用DDR3内存的带宽,缩小不占DDR3的带宽。

 

l  关键点

A.   3种插值的FPGA视频缩放算法的实现。(邻近插值,双线性插值,双立方次卷积分插值)

B.   多路视频读写及CPU读写同一组DDR3 SDRAM的仲裁实现。

C.   Serdes 实现音视频的数据编解码发送和接收。

D.   视频融合卡的视频拉伸算法的实现。

E.    视频任意角度的旋转算法实现。

F.    多板卡间的CAN总线通讯协议的拟定和实现。

 

l  小结

A.在用户要求不苛刻的2K视频矩阵,采用3.125Gbps SerdesFPGA + 3.125Gbps Crosspoint Switches 就能实现性价比非常高的矩阵产品(LATTICE ECP3 FPGA就有很好)。(集中招标采购竞争激烈,对矩阵技术参数要求比较苛刻,不建议采用该方案)

B.支持1920x1200@602K视频矩阵,采用 LATTICE ECP5 FPGA XILINX ARTIX-7 FPGA + 3.5Gbps Crosspoint Switches

C.单路Serdes 支持4K@30 的视频矩阵,采用 XILINX ARTIX-7 FPGA + 6.25Gbps Crosspoint Switches

D.单路Serdes 支持4K@60 的视频矩阵,采用 XILINX KINTEX-7 FPGA + 12.5Gbps Crosspoint Switches

E. 采用多路Serdes 4K方案可以降低 Crosspoint Switches 的速率要求。

        

l  成功案例:

A.   矩阵基本输入卡 2K@60 设计的,采用 2 XILINX ARTIX-7 XC7A75T-2  FPGFA GTP(6.25Gbps) + 2 DDR3_800MHz@32BIT + 4 ADV7611 + 1 ARM_CPU ,实现4HDMI输入卡。实现去隔行功能,视频缩放(任意比列、支持4K)、每路视频支持3OSD与视频透明半透明叠加,OSD 任意尺寸(不大于原视频输入的尺寸)的静态真彩位图、动态OSD视频、动态中英文字母。

B.  矩阵基本输出卡 2K@60 设计的,采用 2 XILINX ARTIX-7 XC7A75T-2  FPGFA GTP(6.25Gbps) + 2 DDR3_800MHz@32BIT + 4 ADV7513 + 1 ARM_CPU ,实现4HDMI输出卡。渐变切换无缝,画面冻结,单画面拼接等功能去隔行功能。支持4K Serdes 信号缩小为2K或局部裁剪成2K输入显示。

C.   矩阵基本输出卡 4K@30 设计的,采用 2 XILINX ARTIX-7 XC7A75T-2  FPGFA GTP(6.25Gbps) + 2 DDR3_800MHz@32BIT + 2 SiI9136-3 + 1 ARM_CPU ,实现24K@30 HDMI输出卡。渐变切换无缝,画面冻结,单画面拼接等功能去隔行功能。支持2K/4K Serdes 信号输入显示。

D.   矩阵基本输入卡 4K@30 设计的,采用 2 XILINX ARTIX-7 XC7A75T-2  FPGFA GTP(6.25Gbps) + 2 DDR3_800MHz@32BIT + 2 ADV7619 + 1 ARM_CPU ,实现24K@30 HDMI输入卡。实现去隔行功能,视频缩放(任意比列、支持4K)、每路视频支持3OSD与视频透明半透明叠加,OSD 任意尺寸(不大于原视频输入的尺寸)的静态真彩位图、动态OSD视频、动态中英文字母。

E.   矩阵多功能卡   4K@30 设计的,采用 2 XILINX ARTIX-7 XC7A200T-2 FPGFA GTP(6.25Gbps) + 8 DDR3_800MHz@32BIT + 2 SiI9136-3 + 1 ARM_CPU ,实现24K@30 HDMI输出。

a)         2路,4K@30/2K@60 HDMI输出。每个输出实现8-162K输入分割或4-84K输入分割卡(一个显示屏能显示任意位置、尺寸、层次叠加8-242K视频显示)

b)         2路,4K@30/2K@60 HDMI输出。每个输出实现8-162K输入分割或4-84K输入拼接卡(一个NxN的大屏能任意位置、尺寸、层次叠加漫游8-242K视频显示)

c)         2路,4K@30/2K@60 HDMI输出。每个输出实现4-82K输入分割或44K输入融合卡(多个投影在球面、锥面、不规则曲面融合组成一个动态立体造型)

d)         可更换输出视频接口芯片实现单路4K@60的多功能输出。

F.   Serdes 采用64B66B协议,6.25Gbps的速率。

G.  Crosspoint Switches 采用 ADN4612M21148M21167

H.  系统控制卡选用普通的ARM,只做管理,没做视频预览功能。

I.    计划做,但是目前没有开始实行。采用海思CPU+FPGA2K/4K编码卡、解码卡、矩阵视频预览卡。

 

有兴趣的可以联系我做进一步的技术讨论,没有音视频技术基础的勿扰。

邮箱:708907433@qq.com

1 条回复1
Highlighted
Contributor
Contributor
336 次查看
注册日期: ‎01-16-2019

回复: 采用FPGA构建数字视频矩阵的一些设计思路和设计需求

我正在做和这个功能差不多的东西
0 项奖励