摘 要: 针对电视制式PAL /NTSC 信号输出VGA 显示格式的解决办法,详细讲述了基于FPGA 视频格式转换系统的设计实现。采用Cyclone Ⅲ系列的EP3C1*84C6作为核心处理器件,实现了NTSC /PAL制式视频的解码、色空间转换( CSC)、帧速率转换和隔行逐行转换、缩放、视频DAC 转换,最终实现分量R、G、B的VGA 视频格式的视频输出,分辨率可达1 600 × 1 200@ 100 Hz。
1 系统设计
设计使用了ALTERA 的EP3C1*84C6型号FPGA 作为视频处理核心,连接两片DDR2 SDRAM,DDR2芯片型号为M icron的MT47H 32M16BN _37E,作为系统的数据存储器件,带宽为32 bit,时钟速率为200MHz,数据速率为400 Mbps。视频解码芯片为TVP5147,视频DAC 采用高性能ADV7123。整个系统框架如图1所示。
2 硬件功能模块。
2. 1 视频解码
TVP5147的解码过程如图2所示。
视频解码芯片TVP5147复位后,通过MCU 向其正确配置I2C寄存器。本文的TVP5147的I2C 寄存器配置的值如表1所示。
2. 2 视频存储器
在视频处理模块中包括了大量的视频数据存储器模块,主要可分为行存储器、帧存储器以及查找表存储器3类。
( 1)行存储器用于存储视频中一行的数据,由于数据量不大,用FPGA 内部RAM 来实现。
( 2)帧存储器用于存储一帧视频数据,由于数据量大,用DDR2来实现。
( 3)查找表存储器用于产生不规则的输入输出相应,如Sin函数和Gamma矫正曲线。
2. 3 FPGA 模块设计
2. 3. 1 数据串并转换和色度重采样模块
此模块分为串并转换和色度重采样两个部分。
串并转换主要是为了把TVP5147 输出的混合数据转换为分量数据。由于采用了BT. 656 10- b it 4:2:2模式,其输出数据时钟为像素时钟( 13. 5 MHz) 的两倍,输出数据依次为Cb0,Y0,C r0,Y1,Cb1,Y2,C r1 等,本模块将其转为4:2:2 的Y‘CbCr 分量数据,RTL 仿真结果如图4所示。
虽然视频分量传输带来了更好的图像还原度,但同时也带来了数据带宽的加大,因此很多时候人们把视觉上不那么重要的色差信号进行了重采样为4:2:2 (或4:1:1)以降低传输数据带宽。而在视频和显示系统内部基本使用4:4:4 的信号,因此色度重采样也成了视频转换中必不可少的模块。本文实现了4:2:2 到4%4%4和4:4:4 到4:2:2的转换。4:2:2 到4:4:4 的转换方法有直接重复法、一维滤波法以及亮度自适应滤波法。
考虑硬件成本和处理质量,我们选用一维滤波法,即只考虑色度通道在水平方向的滤波。图5为采用n抽头FIR滤波器进行色度重采样的模块框图。
2. 3. 2 色空间转换模块( CSC )
由于不同视频标准采用了不同的色彩空间,而且有些视频处理需要在特定色空间里处理,因此色空间转换是十分必要的。色空间转换实际上是一个三输入经线性矩阵变换后得到新的三输出,其基本的转换公式如下:
上式中的Ax,Bx,Cx,Sx 分别代表不同空间之间的转换系数。一般视频系统中涉及的色空间包括电脑的R" G " B " 空间,NTSC 和PAL的Y"UV 空间,以及Y’CbCr空间。图6为转换模块框图,其中的转换系数可任意配置,即标准不限定。上节中的10 b it Y"CrCb可以通过这个色空间转换器,用标清到高清的转换系数转为8 b it的BT. 709标准Y"CrC 数据。
输入8 bit的R"G" B"信号,先经R" G" B" 到Y"CbC r转换成10 b it的Y‘ CbC r信号,然后再转成8 bit的R" G"B " 信号。其中色空间转换采用的是高清标准,采用小数部分为16 b it的定点小数来处理转换系数。图中上部分为8 bit的R"G"B"数据输入,中间为10 b it的Y"CrCb数据,下部分为8 b it的R"G"B"数据输出。由于做了流水线处理,输出有3 个时钟的延迟。
2. 3. 3 帧率转换和隔行逐行转换模块
隔行转逐行的方法可以分为空域和时域两个方面。空域算法简单,易于硬件实现,常见有直接重复行和在垂直方向上进行插值得到缺失的行。时域方法涉及到相邻场之间的运算,常见方法有场混合、运动自适应去隔行算法以及复杂度最高的运动补偿去隔行算法。本文折衷考虑使用场混合方法,即将场数据相邻场两两合成为逐行的帧数据,如图8所示。
PAL和SECAM 制式的场频为50 Hz,而NTSC 为60H z,当需要进行不同场频信号的叠加就需要进行场频转换。大多视频设备使用的帧频为60 H z,因此本文只涉及50~ 60 H z的帧率转换。常用方法有场重复、场插值、运动补偿法,其中场插值算法如图9所示。
对于PAL制式从上面两图可知,只要能同时读取3行场数据即可以实现隔行逐行变换和帧率转换一次完成。如输出的第1帧由输入的第1,2 场数据决定,而输出的第2 帧由输入的第1,2,3场数据决定,而输出的第3帧由输入的第2,3,4 场数据决定,依次类推。
系统使用位宽为48的DDR2存储器作为场存储器,而在FPGA 内部DDR2控制器端数据宽度为96。如产生第2 帧输出的处理过程为,在第1场存入时,把高64bit屏蔽掉不写入,而低32 b it写入场数据(实际只利用30 b it)。在第2场存入时,把高32 位和低32 b it屏蔽掉不写入,而中间32 bit写入场数据。在第3 场存入时,把低64 b it屏蔽掉不写入,而高32 bit写入场数据。这样在数据读取的时候可以顺序同时读出3场数据,然后进行上述的组合插值运算,即可得到输出。场存储器数据内格式如图10所示。
注意新的输入场数据不能覆盖掉相邻的数据,因此在数据存入时屏蔽位是在不断跳动的,并以5 场为一个周期。虽然这样降低了写入的效率,但由于所有数据读写都是顺序操作,因此从整体上来说仍然提高了DDR2 的存取效率,并且使操作变得简单。对于NTSC 制式,由于帧率转换部分可不用考虑,可以将只使用低64位部分进行两场存储。
2. 3. 4 缩放模块
视频缩放包括放大( up scaling ) 和缩小( downsca ling )两个方面,而进行缩放的基本方法为空间插值。下式为对图像进行插值的一般数学表达式,其中g ( i,j)为缩放图像中待插值点的像素值,f ( k,l)为原始图像中坐标( k,l)处的像素值,h( i- k,j - l)为插值基函数。
插值基函数的选择可以有很多种,通常有二维的矩形函数、线性函数、三次函数及S inc 函数等,它们分别对应于最近邻插值、线性插值、三次插值以及理想插值(实际中利用S inc函数截断后插值) ,其插值效果为从差到好排列,但实现难度也依次提高。在实际处理中是利用滤波器来实现插值基函数,而且由于这些插值的对称性,可以将其分解为横向和纵向插值两部分分开进行,如二维线性插值函数对应双线性插值( Bilinear Interpo lation),三次函数对应双三次插值( B icub ic Interpo lation) ,对于Sinc 插值函数实际中为多相位插值( Po lyphase Interpo lation)。本文使用多相位插值法实现图像缩放,实际上在4 ? 4领域大小内进行多相位插值和三次插值几乎是一样的,只是对应插值函数值略微不同。多相位插值法是通过对输出点对应原图中的领域进行Lanczos2 函数移相插值来产生输出点的。如图11所示。
假设g ( u,v )为经缩放后输出图像中一点,其还原到原图像的最近点为f ( i,j) 且两者在原图中相差( x,y )的坐标,则输出点g ( u,v)的数学表达如下,从其可以看出实际上分为两步实现分别进行垂直滤波和水平滤波。
其中有关系式: i = ( u ×W in ) /W out,j = ( v ×H in) /H out; x = ( u × W in)% W out,y = ( v ×H in)%H out。W in 和Wout分别为缩放前后的图像宽度,H in和H out分别为缩放前后的图像高度。图12为4 ×4领域水平垂直相位,其中的水平相位值分别为PH 0,PH 1,PH 2,PH 3,垂直相位值分别为PV0,PV1,PV2,PV3。只要根据上述关系式求得x,y 值就能获得8 个相位值,就能实现多相位滤波。
图13为本文设计的图像缩放器中滤波器部分框图,其中的垂直水平查找表里分别存放着4个不同相位的Lanczos2 函数值。
2. 4 视频DAC
视频编码到模拟R、G、B 由视频DAC 芯片ADV7123,它内部有三独立通道10 bit高速DAC,如图14所示为其功能图及其系统作用。
3 系统电源设计
电源的可靠性是电子系统设计成败的关键。在设计电源时,在保证电源的可靠性的基础之上需要综合考虑电源电路的效率与体积,此系统需要0. 9 V,1. 2 V,1. 8 V,2. 5 V,3. 3 V,5 V 共6种电源。
LM2737输出电流最大为5 A,效率高达90%,封装为SO IC,体积小。DDR2的VTT 与VRef的0. 9 V电压由DDR 参考终端电压通用芯片TPS51100 转换而来。
4 结束语
本文采用C yc lone III的EP3C1*84C6器件及相关的视频编解码芯片设计视频格式转换系统,实现了普通电视信号到较为通用的VGA 接口信号的转换,同时通过对视频信号的缩放等处理增大视频分辨率。另外,采用FPGA作为核心视频处理器件,使得系统对视频制式的支持具有很好的灵活性。