胡捃, 云利軍, 石俊生, 高銀, 雷連莎
(1.云南師范大學 顏色與圖像視覺實驗室,云南 昆明650500;2.云南師范大學 信息學院,云南 昆明650500)
隨著科學技術的飛躍發(fā)展,視頻圖像已成為人們生活必不可缺的信息載體.LVDS低壓差分信號傳輸是20世紀90年代產生的一種數據傳輸和接口轉換技術,因其具有高速、低噪聲、低EMI、低電源、低損耗等特點,因而成為高速視頻的首選接口標準[1].由于不同顯示設備的接口標準不同,因此需要視頻轉換器對視頻信號進行轉換從而使其在不同設備上顯示.本文應某航空研究所對高速視頻傳輸系統(tǒng)的要求,基于FPGA技術,設計一個將通用PAL制模擬視頻信號轉換成XGA格式的LVDS信號的視頻轉換器,其中將視頻處理的相關算法——去隔行、幀頻提升制成IP核形式,以便后來開發(fā)者的復用.
本設計以FPGA為平臺,將原始的隔行掃描的PAL制模擬視頻信號轉換為逐行掃描的XGA形式的LVDS視頻信號,并使圖像的分辨率由720×576提高到1 024×768.即PAL-LVDS視頻轉換器主要完成的功能包括視頻信號的采集、分配、存儲以及顯示,其中包括去隔行技術、分辨率轉換、幀頻轉換、色度空間轉換等視頻處理.系統(tǒng)的總體結構及其功能框圖如圖1所示.其中,FPGA依靠像素時鐘和行、場同步信號采集SAA7111A解碼器輸出的視頻數據YUV信號,并利用雙SRAM模塊進行視頻圖像處理,最后通過編碼器(DS90C383)對信號進行編碼輸出LVDS視頻信號.
圖1 PAL-LVDS視頻轉換器結構框圖Fig.1 The structure diagram of PAL-LVDS video converter board
解碼芯片選用Philips公司生產的SAA7111A芯片,它由主控芯片FPGA(EP2C8F256I6)通過IIC串行總線對其進行初始化配置.SAA7111A 芯片具有如下優(yōu)點[2]:①它有4路輸入視頻模擬信號 AI11、AI12、AI21、AI22,其視頻輸入信號可以是復合視頻信號(CVBS)或2路S-Video模擬輸入信號;②能自動識別NTSC和PAL輸入視頻信號;③支持YUV的輸出格式有4:2:2(16Bit)、4:2:2(8Bit)、4:1:1(12Bit)或RGB輸出格式有8:8:8(24Bit)、5:6:6(16Bit);④通過IIC配置能調節(jié)信號的亮度、對比度和飽和度[3].
系統(tǒng)需要將分辨率為720×576@25幀/秒、隔行掃描的PAL制模擬視頻信號轉換成分辨率為1 024×768@60幀/秒、逐行掃描的XGA格式信號,這需要一系列視頻圖像算法來完成.區(qū)別于普通靜態(tài)圖像處理,在視頻圖像處理過程中要求視頻顯示輸出的流暢性和實時性.考慮到這一點,系統(tǒng)選用兩塊大容量SRAM用于FPGA外圍存儲視頻圖像.在這次設計中,SRAM芯片選用的是Cypress公司的高速、大容量存儲器CY7C1061AV33(1M×16bits).兩塊 SRAM 與FPGA芯片在進行通信時,通過乒乓操作和相關算法來完成視頻格式轉換.
編碼模塊選用的是國際半導體公司生產的編碼芯片DS90C383.該芯片是一款功能強大的串行傳輸芯片,它可以將24位的并行視頻數據轉換為標準的串行差分接口信號(LVDS)來輸出.DS90C383支持像素時鐘為20~65MHz,傳輸的數據量可高達1.8Gbps,符合TIA/EIA-644LVDS標準[4].
PAL-LVDS視頻轉換器軟件設計主要包括解碼器的配置、隔行掃描轉逐行掃描的設計、分辨率轉換的設計、幀頻變換的設計等,其中本文把隔行掃描轉逐行掃描的設計和幀頻變換的設計制成IP核,以便后來開發(fā)者的復用.視頻轉換器的軟件設計及相關IP核生成框圖如圖2所示.
圖2 視頻轉換器的軟件設計及相關IP核生成框圖Fig.2The video interface converter for software design and generate relate IP cores
將PAL模擬視頻信號由隔行掃描變?yōu)橹鹦袙呙瑁壳爸饕袌鰞炔逯捣?、場間插值法、基于運動估計的自適應插補法[5],基于這幾種方法的優(yōu)缺點,本文選用場間插值法來實現去隔行.
場間插值方法在硬件上實現是通過兩片SRAM在FPGA的控制下進行乒乓操作完成的.首先SAA7111A解碼器輸出的隔行掃描視頻信號的第一幀的奇數場數據流緩存到SRAM1中,這意味著每寫一行地址需要空出一行地址給偶數場數據流,然后在實際操作中將偶場數據流插入SRAM1中的奇數場數據流中.在操作完成后,一幅完整的圖像就存儲到SRAM1存儲器中.然后第二幀視頻信號按相同的方法依次存入到SRAM2中.與此同時,FPGA將已經存入到SRAM1中的第一幀視頻數據順序讀出.乒乓操作使得SRAM1和SRAM2一直處于讀寫的狀態(tài)中,完成隔行掃描到逐行掃描的轉換.
首先,在 Quartus9.0中用硬件描述語言Verilog HDL將PAL制模擬視頻信號由隔行掃描變逐行掃描進行描述,并對其進行編譯、綜合、驗證成功后,則可轉化為IP核形式,即創(chuàng)建一個design partion輸出網表文件(.qxp文件).
按照這樣的開發(fā)流程,在建立新的工程時可以直接調用該網表文件,在新建工程中根據提供的端口信息實例化這個設計模塊,與其他模塊進行邏輯連接,即可縮短開發(fā)周期.調用生成的去隔行IP核的RTL框圖,俗稱黑盒子,如圖3所示,單擊該框圖即可察看到該IP的端口信息,但無邏輯關系.
圖3 調用IP核RTL圖Fig.3 Call the RTL map of IP core
最后,在QuartusII 9.0中利用硬件描述語言Verilog HDL對其進行調用、編譯并進行仿真驗證,其仿真波形如圖4所示.
圖4 去隔行仿真波形Fig.4 The simulation waveform of de-interlacing
圖4 中的pixel_clk、key依次為像素時鐘27 Mhz、復位信號,Fi、Vi、Hi依次為PAL信號的奇偶場信號、行消隱信號和場同步消隱信號,中間變量 wr_burst_address和 wr_burst_data依次為寫入SRAM的地址和數據,rd_burst_address和rd_burst_data依次為從SRAM中讀出的地址和數據.從圖中可知,經去隔行處理后,輸出數據的形式為奇偶行交錯輸出,繼而驗證了該去隔行技術的可行性.
本文實現的功能之一為實現分辨率增大,即視頻信號的分辨率由720×576擴大到1 024×768.分辨率的放大,使得行同步頻率和每場行數都得到增加,這樣每場就會有新數據產生,則像素的時鐘頻率和每行像素量均有相應的增加,每行就需有新像素值生成.采用均勻插值方式,即對存放原始信號數據的SRAM產生有重復的地址計數值作為SRAM的讀取地址,實現對某些行的某些像素進行重復讀取.為了保證變換后圖像拉伸均勻,對寫入的視頻數據的分辨率實現3∶4的放大,讀出的視頻數據的分辨率變?yōu)?60×768.
上面還沒有達到設計的需要,此時根據人眼對黑點的識別度不高,在各幀圖像的每行兩邊各加32個黑點,分辨率即達到1 024×768.根據分辨率變換值累加法,分辨放大后為1 024×768的XGA格式的LVDS信號,此時像素時鐘為50 Mhz.分辨放大前后每行像素數量變換比值為720∶1 024.用像素時鐘從0開始計數,并從初值0開始每20ns進行模720累加1 024計算.加法器在每個時鐘上升沿時,將初值(一開始為0)加720,若結果小于1024,則直接作為下次的累加初值;若結果大于等于1 024,則結果減去720作為下次累加初值.像素時鐘的計數通過累加結果進行使能控制:若累加結果小于1 024時,則不允許計數;當累加結果大于等于1 024時,允許計數,這樣每1 024次累加中會有720次允許計數,即每1 024個時鐘均勻產生了720個有重復的計數值,該計數值就作為讀取RAM的像素地址.
行數變換同上,分辨率放大后對其進行行同步計數,使能控制由累加去模計算的結果來決定,而RAM的讀取行地址為計數值.
本設計采用幀復制法[6],將視頻信號的幀頻由隔行掃描的25幀(每寫入5幀50Hz信號)變?yōu)橹鹦袙呙璧?0幀(輸出6幀60Hz信號).在選擇的乒乓操作中,每輸入一幀原始信號進行一次乒乓操作.在一個操作的周期內,在向寫SRAM中寫入原始數據的一幀后,由另一個SRAM讀出該信號,當前的幀就完成了輸出,接著,開始讀取寫RAM的首行數據,從而開始輸出新的一幀.即讀SRAM行地址計數器從原值繼續(xù)計至最大值后再從0開始計數,共完成約1.2個計數周期,即每經過5次乒乓工作切換,讀SRAM的行地址計數器計滿6個周期[7].其中每5幀圖像中第1幀圖像傳輸兩遍,即可達到最后輸出的圖像幀頻為60幀.
首先,利用Quartus II 9.0用硬件描述語言Verilog描述該模塊,編譯綜合成功后,對其進行仿真,若滿足幀頻提升的目的,再將源文件導出成一個網表文件(.qxp)和布局布線信息,制成IP核.調用該IP核的RLT框圖如圖5所示,單擊該框圖即可察看到該IP的端口信息,但無邏輯關系.
圖5 調用幀頻提升IP核RTL圖Fig.5 The RTL map of frame rate up-conversion IP core
其中,在Quartus II 9.0中采用Testbench結合Modelsim對其進行仿真驗證,其仿真波形如圖6所示.圖中,中間變量 wr_pic_number、rd_pic_numeber分別為存入SRAM中視頻信號的圖片數、從SRAM中讀出的視頻信號的圖片數.波形顯示寫入圖片數5張,讀出圖片數6張,說明輸出信號每隔5幀重復一幀,滿足系統(tǒng)設計需求.后來開發(fā)者在建立新的工程時根據提供的器件名,可以直接調用該IP核,與其他模塊進行邏輯連接、例化,從而可以縮短開發(fā)周期.
圖6 幀頻提升仿真波形Fig.6 The simulation waveform of frame rate up-conversion
PAL視頻信號的主要特性之一為其顏色模型YUV,本系統(tǒng)圖像傳感器輸出格式為4∶2∶2的YUV信號,需要將其進行RGB信號轉換,轉換后的格式為8∶8∶8,然后通過自行設計的XGA轉DVI視頻轉換器來觀察顯示效果.根據ITU-RBT.656視頻標準接口,對于位寬為10比特的視頻數據,PAL的RGB顏色空間與YUV顏色空間的轉換關系如下[8]:
在Quartus 9.0中,使用Verilog HDL對其進行描述,因為我們輸入的PAL制視頻數據位寬為10,而YUV的比例為4∶2∶2,所以其仿真的值依次為 Y-64、U-258、U-258,并滿足 Y 分量取值為 16-235,U 和 V 分量的取值為 6-240.用Modelsim對YUV_RGB.v程序進行仿真后的結果如圖7所示.
圖7 YUV_RGB仿真程序圖Fig.7 The simulation waveform of YUV_RGB
搭建調試硬件平臺和軟件平臺,通過配置SAA7111A各個寄存器后,數字視頻信號的每個像素時鐘、水平頻率和垂直頻率均滿足設計要求,并在帶DVI接口的顯示器上觀察到顯示效果.圖8所示為硬件電路的開發(fā)和實驗結果,其中圖8(a)為視頻信號硬件電路板,圖8(b)為調試后的顯示效果.
圖8 測試平臺和實驗結果:(a)視頻轉換接口板;(b)調試后的顯示效果Fig.8 Test platform and the experimental results:(a)The video adapter plate;(b)The display after debugging
本文設計的是基于FPGA技術上實現的視頻轉換器PAL-LVDS,并將視頻處理方法中的隔行轉逐行技術、幀頻提升分別生成IP核形式.根據自頂向下的設計思想,將其進行層次功能劃分,并對各子模塊進行仿真驗證,實現了視頻信號的采集、分配、存儲、去隔行、分辨率放大、幀頻放大及色度空間的轉換.本文生成的IP核具有很好的可移植性,便于再次復用,縮短設計周期.
[1]張光烈,鄭南寧,吳勇,等.面向格式轉換的數字視頻處理方法及其實現硬件實現[J].中國工程科學,2001,3(6):41-47.
[2]胡海英,胡冰,趙新田,等.用SAA7111A設計模擬視頻轉換接口[J].電子技術應用,2003,29(1):52-54.
[3]王前,吳淑泉,劉喜英.基于FPGA的IIC總線接口實現方法[J].微電子技術,2002(3):21-26.
[4]CEA-861-D 1-176,2006SCEA Standard A DTV Profile for Uncompressed High Speed Digital Interfaces[S].Arlington:Consumer Electronics Association,2006.
[5]張旭.基于FPGA的PAL-XGA圖像轉換控制器設計[D].哈爾濱:哈爾濱工業(yè)大學,2007.
[6]張旭,王彬.一種基于FPGA的實時圖像轉換控制器設計[J].圖像與多媒體技術,2007(10):66-68.
[7]鄭永進.視頻格式轉換算法研究及FPGA實現-去隔行、幀頻轉換、分辨率變換[D].東南大學碩士學位論文,2007.
[8]PILLAI LATHER.Color Space Converter[EB/OL].http://courses. cs. washington. edu/courses/cse567/03au/homework/color.pdf.