《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的視頻格式轉(zhuǎn)換系統(tǒng)設(shè)計(jì)
基于FPGA的視頻格式轉(zhuǎn)換系統(tǒng)設(shè)計(jì)
維庫(kù)
摘要: 摘要:針對(duì)電視制式PAL/NTSC信號(hào)輸出VGA顯示格式的解決辦法,,詳細(xì)講述了基于FPGA視頻格式轉(zhuǎn)換系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn),。采用CycloneⅢ系列的EP3C1*84C6作為核心處理器件,,實(shí)現(xiàn)了NTSC/PAL制式視頻的解碼,、色空間轉(zhuǎn)換(
Abstract:
Key words :

  摘 要: 針對(duì)電視制式PAL /NTSC 信號(hào)輸出VGA 顯示格式的解決辦法,,詳細(xì)講述了基于FPGA 視頻格式轉(zhuǎn)換系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn),。采用Cyclone Ⅲ系列的EP3C1*84C6作為核心處理器件,,實(shí)現(xiàn)了NTSC /PAL制式視頻的解碼,、色空間轉(zhuǎn)換( CSC),、幀速率轉(zhuǎn)換和隔行逐行轉(zhuǎn)換、縮放,、視頻DAC 轉(zhuǎn)換,,最終實(shí)現(xiàn)分量R、G,、B的VGA 視頻格式的視頻輸出,,分辨率可達(dá)1 600 × 1 200@ 100 Hz。

  1 系統(tǒng)設(shè)計(jì)

  設(shè)計(jì)使用了ALTERA 的EP3C16F484C6型號(hào)FPGA 作為視頻處理核心,,連接兩片DDR2 SDRAM,DDR2芯片型號(hào)為M icron的MT47H 32M16BN _37E,,作為系統(tǒng)的數(shù)據(jù)存儲(chǔ)器件,帶寬為32 bit,時(shí)鐘速率為200MHz,,數(shù)據(jù)速率為400 Mbps,。視頻解碼芯片為TVP5147,視頻DAC 采用高性能ADV7123,。整個(gè)系統(tǒng)框架如圖1所示,。

1.jpg
圖1 視頻處理板框圖

  2 硬件功能模塊。

  2. 1 視頻解碼

  TVP5147的解碼過(guò)程如圖2所示,。

2.jpg


圖2 TVP5147解碼過(guò)程

  視頻解碼芯片TVP5147復(fù)位后,,通過(guò)MCU 向其正確配置I2C寄存器。本文的TVP5147的I2C 寄存器配置的值如表1所示,。

表1 TVP5147的I2C寄存器設(shè)置

3.jpg


  2. 2 視頻存儲(chǔ)器

  在視頻處理模塊中包括了大量的視頻數(shù)據(jù)存儲(chǔ)器模塊,,主要可分為行存儲(chǔ)器、幀存儲(chǔ)器以及查找表存儲(chǔ)器3類,。

  ( 1)行存儲(chǔ)器用于存儲(chǔ)視頻中一行的數(shù)據(jù),,由于數(shù)據(jù)量不大,,用FPGA 內(nèi)部RAM 來(lái)實(shí)現(xiàn)。

  ( 2)幀存儲(chǔ)器用于存儲(chǔ)一幀視頻數(shù)據(jù),,由于數(shù)據(jù)量大,,用DDR2來(lái)實(shí)現(xiàn)。

  ( 3)查找表存儲(chǔ)器用于產(chǎn)生不規(guī)則的輸入輸出相應(yīng),,如Sin函數(shù)和Gamma矯正曲線,。

  2. 3 FPGA 模塊設(shè)計(jì)

  FPGA 模塊設(shè)計(jì)如圖3。

4.jpg


圖3 FPGA 模塊框圖

  2. 3. 1 數(shù)據(jù)串并轉(zhuǎn)換和色度重采樣模塊

  此模塊分為串并轉(zhuǎn)換和色度重采樣兩個(gè)部分,。

  串并轉(zhuǎn)換主要是為了把TVP5147 輸出的混合數(shù)據(jù)轉(zhuǎn)換為分量數(shù)據(jù),。由于采用了BT. 656 10- b it 4:2:2模式,其輸出數(shù)據(jù)時(shí)鐘為像素時(shí)鐘( 13. 5 MHz) 的兩倍,,輸出數(shù)據(jù)依次為Cb0,,Y0,C r0,,Y1,Cb1,,Y2,C r1 等,,本模塊將其轉(zhuǎn)為4:2:2 的Y‘CbCr 分量數(shù)據(jù),,RTL 仿真結(jié)果如圖4所示。

串并轉(zhuǎn)換模塊仿真結(jié)果

圖4 串并轉(zhuǎn)換模塊仿真結(jié)果

  雖然視頻分量傳輸帶來(lái)了更好的圖像還原度,,但同時(shí)也帶來(lái)了數(shù)據(jù)帶寬的加大,,因此很多時(shí)候人們把視覺上不那么重要的色差信號(hào)進(jìn)行了重采樣為4:2:2 (或4:1:1)以降低傳輸數(shù)據(jù)帶寬。而在視頻和顯示系統(tǒng)內(nèi)部基本使用4:4:4 的信號(hào),,因此色度重采樣也成了視頻轉(zhuǎn)換中必不可少的模塊,。本文實(shí)現(xiàn)了4:2:2 到4%4%4和4:4:4 到4:2:2的轉(zhuǎn)換。4:2:2 到4:4:4 的轉(zhuǎn)換方法有直接重復(fù)法,、一維濾波法以及亮度自適應(yīng)濾波法,。

  考慮硬件成本和處理質(zhì)量,我們選用一維濾波法,,即只考慮色度通道在水平方向的濾波,。圖5為采用n抽頭FIR濾波器進(jìn)行色度重采樣的模塊框圖。

5.jpg


圖5 4:2:2 到4:4:4色度重采樣模塊

  2. 3. 2 色空間轉(zhuǎn)換模塊( CSC )

  由于不同視頻標(biāo)準(zhǔn)采用了不同的色彩空間,,而且有些視頻處理需要在特定色空間里處理,,因此色空間轉(zhuǎn)換是十分必要的。色空間轉(zhuǎn)換實(shí)際上是一個(gè)三輸入經(jīng)線性矩陣變換后得到新的三輸出,,其基本的轉(zhuǎn)換公式如下:



  上式中的Ax,,Bx,Cx,,Sx 分別代表不同空間之間的轉(zhuǎn)換系數(shù),。一般視頻系統(tǒng)中涉及的色空間包括電腦的R' G ' B ' 空間,,NTSC 和PAL的Y'UV 空間,以及Y’CbCr空間,。圖6為轉(zhuǎn)換模塊框圖,,其中的轉(zhuǎn)換系數(shù)可任意配置,即標(biāo)準(zhǔn)不限定,。上節(jié)中的10 b it Y'CrCb可以通過(guò)這個(gè)色空間轉(zhuǎn)換器,,用標(biāo)清到高清的轉(zhuǎn)換系數(shù)轉(zhuǎn)為8 b it的BT. 709標(biāo)準(zhǔn)Y'CrC 數(shù)據(jù)。

6.jpg
圖6 色空間轉(zhuǎn)換模塊( Rx 為round ing 值)

  輸入8 bit的R'G' B'信號(hào),,先經(jīng)R' G' B' 到Y(jié)'CbC r轉(zhuǎn)換成10 b it的Y‘ CbC r信號(hào),然后再轉(zhuǎn)成8 bit的R' G'B ' 信號(hào),。其中色空間轉(zhuǎn)換采用的是高清標(biāo)準(zhǔn),,采用小數(shù)部分為16 b it的定點(diǎn)小數(shù)來(lái)處理轉(zhuǎn)換系數(shù)。圖中上部分為8 bit的R'G'B'數(shù)據(jù)輸入,,中間為10 b it的Y'CrCb數(shù)據(jù),,下部分為8 b it的R'G'B'數(shù)據(jù)輸出。由于做了流水線處理,,輸出有3 個(gè)時(shí)鐘的延遲,。

8 b its R’G‘B’轉(zhuǎn)10 bits Y‘ CbC r再轉(zhuǎn)回8 b its R’G‘B’仿真結(jié)果

圖7  8 b its R’G‘B’轉(zhuǎn)10 bits Y‘ CbC r再轉(zhuǎn)回8 b its R’G‘B’仿真結(jié)果

  2. 3. 3 幀率轉(zhuǎn)換和隔行逐行轉(zhuǎn)換模塊

  隔行轉(zhuǎn)逐行的方法可以分為空域和時(shí)域兩個(gè)方面??沼蛩惴ê?jiǎn)單,,易于硬件實(shí)現(xiàn),常見有直接重復(fù)行和在垂直方向上進(jìn)行插值得到缺失的行,。時(shí)域方法涉及到相鄰場(chǎng)之間的運(yùn)算,,常見方法有場(chǎng)混合、運(yùn)動(dòng)自適應(yīng)去隔行算法以及復(fù)雜度最高的運(yùn)動(dòng)補(bǔ)償去隔行算法,。本文折衷考慮使用場(chǎng)混合方法,,即將場(chǎng)數(shù)據(jù)相鄰場(chǎng)兩兩合成為逐行的幀數(shù)據(jù),如圖8所示,。

場(chǎng)混合法實(shí)現(xiàn)隔行逐行變換

圖8 場(chǎng)混合法實(shí)現(xiàn)隔行逐行變換

  PAL和SECAM 制式的場(chǎng)頻為50 Hz,,而NTSC 為60H z,當(dāng)需要進(jìn)行不同場(chǎng)頻信號(hào)的疊加就需要進(jìn)行場(chǎng)頻轉(zhuǎn)換,。大多視頻設(shè)備使用的幀頻為60 H z,,因此本文只涉及50~ 60 H z的幀率轉(zhuǎn)換。常用方法有場(chǎng)重復(fù),、場(chǎng)插值,、運(yùn)動(dòng)補(bǔ)償法,其中場(chǎng)插值算法如圖9所示,。

9.jpg
圖9 50 Hz轉(zhuǎn)60 Hz的場(chǎng)插值方法

  對(duì)于PAL制式從上面兩圖可知,,只要能同時(shí)讀取3行場(chǎng)數(shù)據(jù)即可以實(shí)現(xiàn)隔行逐行變換和幀率轉(zhuǎn)換一次完成,。如輸出的第1幀由輸入的第1,2 場(chǎng)數(shù)據(jù)決定,而輸出的第2 幀由輸入的第1,,2,,3場(chǎng)數(shù)據(jù)決定,而輸出的第3幀由輸入的第2,,3,,4 場(chǎng)數(shù)據(jù)決定,依次類推,。

  系統(tǒng)使用位寬為48的DDR2存儲(chǔ)器作為場(chǎng)存儲(chǔ)器,,而在FPGA 內(nèi)部DDR2控制器端數(shù)據(jù)寬度為96。如產(chǎn)生第2 幀輸出的處理過(guò)程為,,在第1場(chǎng)存入時(shí),,把高64bit屏蔽掉不寫入,而低32 b it寫入場(chǎng)數(shù)據(jù)(實(shí)際只利用30 b it),。在第2場(chǎng)存入時(shí),,把高32 位和低32 b it屏蔽掉不寫入,而中間32 bit寫入場(chǎng)數(shù)據(jù),。在第3 場(chǎng)存入時(shí),,把低64 b it屏蔽掉不寫入,而高32 bit寫入場(chǎng)數(shù)據(jù),。這樣在數(shù)據(jù)讀取的時(shí)候可以順序同時(shí)讀出3場(chǎng)數(shù)據(jù),,然后進(jìn)行上述的組合插值運(yùn)算,即可得到輸出,。場(chǎng)存儲(chǔ)器數(shù)據(jù)內(nèi)格式如圖10所示,。

10.jpg
  

圖10 可以實(shí)現(xiàn)同時(shí)去隔行和幀率轉(zhuǎn)換的場(chǎng)存儲(chǔ)器

  注意新的輸入場(chǎng)數(shù)據(jù)不能覆蓋掉相鄰的數(shù)據(jù),因此在數(shù)據(jù)存入時(shí)屏蔽位是在不斷跳動(dòng)的,,并以5 場(chǎng)為一個(gè)周期,。雖然這樣降低了寫入的效率,但由于所有數(shù)據(jù)讀寫都是順序操作,,因此從整體上來(lái)說(shuō)仍然提高了DDR2 的存取效率,,并且使操作變得簡(jiǎn)單。對(duì)于NTSC 制式,,由于幀率轉(zhuǎn)換部分可不用考慮,,可以將只使用低64位部分進(jìn)行兩場(chǎng)存儲(chǔ)。

  2. 3. 4 縮放模塊

  視頻縮放包括放大( up scaling ) 和縮小( downsca ling )兩個(gè)方面,,而進(jìn)行縮放的基本方法為空間插值,。下式為對(duì)圖像進(jìn)行插值的一般數(shù)學(xué)表達(dá)式,其中g(shù) ( i,,j)為縮放圖像中待插值點(diǎn)的像素值,,f ( k,,l)為原始圖像中坐標(biāo)( k,l)處的像素值,,h( i- k,,j - l)為插值基函數(shù)。



  插值基函數(shù)的選擇可以有很多種,,通常有二維的矩形函數(shù),、線性函數(shù)、三次函數(shù)及S inc 函數(shù)等,,它們分別對(duì)應(yīng)于最近鄰插值,、線性插值、三次插值以及理想插值(實(shí)際中利用S inc函數(shù)截?cái)嗪蟛逯? ,,其插值效果為從差到好排列,,但實(shí)現(xiàn)難度也依次提高。在實(shí)際處理中是利用濾波器來(lái)實(shí)現(xiàn)插值基函數(shù),,而且由于這些插值的對(duì)稱性,,可以將其分解為橫向和縱向插值兩部分分開進(jìn)行,,如二維線性插值函數(shù)對(duì)應(yīng)雙線性插值( Bilinear Interpo lation),,三次函數(shù)對(duì)應(yīng)雙三次插值( B icub ic Interpo lation) ,對(duì)于Sinc 插值函數(shù)實(shí)際中為多相位插值( Po lyphase Interpo lation),。本文使用多相位插值法實(shí)現(xiàn)圖像縮放,,實(shí)際上在4 ? 4領(lǐng)域大小內(nèi)進(jìn)行多相位插值和三次插值幾乎是一樣的,只是對(duì)應(yīng)插值函數(shù)值略微不同,。多相位插值法是通過(guò)對(duì)輸出點(diǎn)對(duì)應(yīng)原圖中的領(lǐng)域進(jìn)行Lanczos2 函數(shù)移相插值來(lái)產(chǎn)生輸出點(diǎn)的,。如圖11所示。

11.jpg


圖11 Lanczos2 函數(shù)

  假設(shè)g ( u,,v )為經(jīng)縮放后輸出圖像中一點(diǎn),,其還原到原圖像的最近點(diǎn)為f ( i,j) 且兩者在原圖中相差( x,,y )的坐標(biāo),,則輸出點(diǎn)g ( u,v)的數(shù)學(xué)表達(dá)如下,,從其可以看出實(shí)際上分為兩步實(shí)現(xiàn)分別進(jìn)行垂直濾波和水平濾波,。


 


  其中有關(guān)系式: 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領(lǐng)域水平垂直相位,,其中的水平相位值分別為PH 0,PH 1,,PH 2,PH 3,,垂直相位值分別為PV0,,PV1,PV2,PV3,。只要根據(jù)上述關(guān)系式求得x,,y 值就能獲得8 個(gè)相位值,就能實(shí)現(xiàn)多相位濾波,。

12.jpg


圖12 4×4 領(lǐng)域水平垂直相位

  圖13為本文設(shè)計(jì)的圖像縮放器中濾波器部分框圖,,其中的垂直水平查找表里分別存放著4個(gè)不同相位的Lanczos2 函數(shù)值。

13.jpg

圖13 圖像縮放器中的濾波器

  2. 4 視頻DAC

  視頻編碼到模擬R,、G,、B 由視頻DAC 芯片ADV7123,它內(nèi)部有三獨(dú)立通道10 bit高速DAC,,如圖14所示為其功能圖及其系統(tǒng)作用,。

14.jpg


圖14 ADV7123系統(tǒng)圖

  3 系統(tǒng)電源設(shè)計(jì)

  電源的可靠性是電子系統(tǒng)設(shè)計(jì)成敗的關(guān)鍵。在設(shè)計(jì)電源時(shí),,在保證電源的可靠性的基礎(chǔ)之上需要綜合考慮電源電路的效率與體積,,此系統(tǒng)需要0. 9 V,1. 2 V,1. 8 V,,2. 5 V,,3. 3 V,5 V 共6種電源,。

  LM2737輸出電流最大為5 A,,效率高達(dá)90%,封裝為SO IC,,體積小,。DDR2的VTT 與VRef的0. 9 V電壓由DDR 參考終端電壓通用芯片TPS51100 轉(zhuǎn)換而來(lái)。

15.jpg


圖15 電源設(shè)計(jì)框圖

  4 結(jié)束語(yǔ)

  本文采用Cyclone III的EP3C16F484C6器件及相關(guān)的視頻編解碼芯片設(shè)計(jì)視頻格式轉(zhuǎn)換系統(tǒng),,實(shí)現(xiàn)了普通電視信號(hào)到較為通用的VGA 接口信號(hào)的轉(zhuǎn)換,,同時(shí)通過(guò)對(duì)視頻信號(hào)的縮放等處理增大視頻分辨率。另外,,采用FPGA作為核心視頻處理器件,,使得系統(tǒng)對(duì)視頻制式的支持具有很好的靈活性。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。