基于DVI和FPGA的視頻疊加器設(shè)計
摘 要: 利用FPGA作為主控單元,以數(shù)字視頻接口DVI為視頻接口、TI公司的TFP401和TFP410為視頻信號的編解碼芯片、ISSI公司的SRAM IS61LV10248-8TI為存儲單元完成視頻疊加器的設(shè)計。通過該系統(tǒng),從路圖像的非黑像素能夠覆蓋主路圖像相同坐標(biāo)的像素。
關(guān)鍵詞: 數(shù)字視頻疊加;FPGA;最小化傳輸差分信號
飛機(jī)研發(fā)過程中,需要對包含目標(biāo)信息和地圖信息的機(jī)載視頻信號進(jìn)行調(diào)試。但是機(jī)載顯示終端普遍存在價格昂貴、使用壽命短等缺點,如果使用它不斷地調(diào)試機(jī)載視頻信號,則機(jī)載顯示終端的消耗會增大,研發(fā)成本將大幅提高。
本文介紹了一種DVI視頻信號疊加器的設(shè)計方案,可以對兩組相同分辨率和刷新頻率的DVI視頻信號轉(zhuǎn)化、合成并輸出。通過該系統(tǒng),從路圖像的非黑像素能夠覆蓋主路圖像相同坐標(biāo)的像素,從而完成對機(jī)載顯示終端的模擬。該方案主要以1024×768@60Hz的視頻源為研究對象,可根據(jù)實際需要調(diào)節(jié),并可支持多種分辨率和刷新頻率(640×480@60Hz,800×600@60Hz,1024×768@60Hz)。
由于設(shè)計了這種模擬裝置,因此不必用機(jī)載顯示終端調(diào)試機(jī)載視頻信號,從而減少對機(jī)載顯示終端的消耗。DVI視頻信號疊加器的使用,節(jié)約了開發(fā)成本。
1 DVI接口
數(shù)字視頻接口(DVI)是一種適應(yīng)數(shù)字顯示器飛速發(fā)展而產(chǎn)生的顯示接口。DVI 標(biāo)準(zhǔn)由 DDWG(Digital Display Working Group)于1999年4月正式推出,該組織包括了Intel、IBM、HP、Silicon Image、NEC等眾多芯片及整機(jī)的生產(chǎn)廠家,因而 DVI 標(biāo)準(zhǔn)具有廣泛的業(yè)界支持[1]。DVI的接口主要有兩種類型:DVI-Digital(DVI-D),只支持?jǐn)?shù)字式顯示器,共 24 個 引 腳;DVI-Integrated(DVI-I),兼容模擬和數(shù)字的連接,共29個引腳。計算機(jī)顯卡一般有DVI-I和VGA兩個接口。本設(shè)計選用的是 DVI-I 接口,相對于VGA(Video Graphics Array)接口,其優(yōu)勢突出,DVI傳輸?shù)氖菙?shù)字信號,數(shù)字圖像信息不需經(jīng)過數(shù)字→模擬→數(shù)字繁瑣的轉(zhuǎn)換過程,就會直接被傳送到顯示設(shè)備上,大大節(jié)省了時間,因此它的速度更快,能有效消除拖影現(xiàn)象。而且VGA模擬信號易受干擾,DVI信號則抗干擾能力強(qiáng),圖像信號沒有衰減,色彩更純凈、逼真。
2 VESA標(biāo)準(zhǔn)介紹
VESA(Video Electronics Standards Association)即視頻電子標(biāo)準(zhǔn)協(xié)會,主要致力于制訂并推廣顯示相關(guān)標(biāo)準(zhǔn)。它規(guī)定了各種分辨率和刷新頻率的顯示監(jiān)視器定時標(biāo)準(zhǔn)(簡稱VESA標(biāo)準(zhǔn))。
2.1 VESA標(biāo)準(zhǔn)時序圖與參數(shù)定義
從圖 1可以看出[2],VESA標(biāo)準(zhǔn)包括場同步(VSYNC)、行同步(HSYNC)、像素數(shù)據(jù)有效(DE)、像素時鐘(CLK)、像素數(shù)據(jù)(Data,一般為24 bit)五組信號。
VESA標(biāo)準(zhǔn)的五組視頻信號之間有嚴(yán)格的定時參數(shù),場(行)掃描包括場(行)消隱期和場(行)有效顯示期(即Addr Time)。場(行)消隱期又包括同步期(Sync)、后肩(Back Porch)、頂(左)邊(Top (Left)Border)、底(右)邊(Bottom (Right)Border)、前肩(Front Porch)。圖 1以行同步極性和場同步極性都是負(fù)極性為例,即同步期為低電平[2]。關(guān)于同步極性的規(guī)定(如在1 024×768@60Hz的視頻格式下),如圖2中“Hor Sync Polarity=NEGATIVE”,“Ver Sync Polarity= NEGATIVE”所示。
2.2 VESA參數(shù)值舉例(1 024×768@60Hz)
VESA同樣規(guī)定了各種參數(shù)在不同分辨率和刷新頻率的具體值,例如1 024×768@60Hz的定時參數(shù)值如圖2所示[2]。結(jié)合圖 1與圖2便可容易地用VHDL語言生成1 024×768@60Hz的時序信號。
3 系統(tǒng)框圖
系統(tǒng)總體框圖如圖 3所示,大致可分為五個部分:DVI接口、DVI解碼電路、FPGA主控制器及存儲器電路、DVI編碼電路。本設(shè)計只選取了兩路綠色數(shù)據(jù)輸入信號進(jìn)行處理,故以下的像素數(shù)據(jù)信號(Data)無特殊說明都是綠色的8位信號。
連接DVI接口的計算機(jī)顯卡,通過DDC[3,4]接口讀取存儲在EEPROM中的EDID[3]數(shù)據(jù),在通信握手成功后,向DVI接口發(fā)出T.M.D.S視頻信號。DVI接口傳輸?shù)腡.M.D.S時序碼流,經(jīng)過T.M.D.S解碼電路可以被解碼為VESA標(biāo)準(zhǔn)的數(shù)字視頻信號。SRAM1(SRAM3)與SRAM2(SRAM4)構(gòu)成VESA1(VESA2)鏈路的一組乒乓RAM,輪流存儲VESA1(VESA2)鏈路的像素數(shù)據(jù)。FPGA讀取已存儲的像素數(shù)據(jù)進(jìn)行疊加操作并產(chǎn)生VESA標(biāo)準(zhǔn)的視頻信號,然后通過VESA3鏈路發(fā)送到T.M.D.S編碼電路。T.M.D.S編碼電路將VESA3鏈路的VESA標(biāo)準(zhǔn)的信號編碼成T.M.D.S時序碼流,最后將其傳送到DVI接口,供顯示器顯示。引入乒乓RAM是由于即使兩路VESA視頻信號分辨率和刷新頻率相同,兩者一般也存在非零的相位差,所以需要存儲器對它們的像素數(shù)據(jù)進(jìn)行存儲。
T.M.D.S解碼電路的解碼芯片采用TFP401,T.M.D.S編碼電路的編碼芯片采用TFP410。SRAM選用IS61LV-
10248-8TI,其讀寫周期為8 ns,存儲空間為1 M×8 bit,能夠滿足系統(tǒng)像素時鐘最高為65 MHz、最高分辨率為1024×768的要求。
4 工作流程
FPGA內(nèi)部工作模塊如圖4所示。下面簡要闡述關(guān)鍵信號的數(shù)據(jù)流向。
場同步極性判斷模塊的功能是根據(jù)輸入的VESA1信號判斷出場同步極性(VSP),因VESA1和VESA2視頻格式相同,只需判斷VESA1的場同步極性。VESA1(VESA2)寫地址生成模塊的功能是利用場同步極性實現(xiàn)寫地址和像素位置的合理對應(yīng)。輸出時序、寫地址生成模塊的功能是利用場同步極性、VESA1寫地址生成模塊生成的寫地址a_write1和VESA1中的場同步信號,實現(xiàn)分辨率的判斷,進(jìn)而結(jié)合其他信號完成輸出時序的生成和讀地址的生成。SRAM控制模塊負(fù)責(zé)根據(jù)上述生成的讀地址和寫地址,寫入兩路VESA信號的新的像素數(shù)據(jù),讀出先前存儲的兩路VESA信號像素數(shù)據(jù)。被讀出的兩個像素點將用于輸出時序、寫地址生成模塊的像素疊加操作,產(chǎn)生的像素作為輸出像素。
4.1 場同步極性(Ver Sync Polarity)判斷
由于DE1=1期間,VSYNC1信號必然處于非同步期,此時的電平與同步期相反。所以,在DE1=1時,若VSYNC1=1,則記為VSP=0(Ver Sync Polarity=NEGATIVE),否則,記為VSP=1(Ver Sync Polarity=POSITIVE)。在實現(xiàn)該模塊的編程中,采用VESA1視頻信號中的CLK1像素時鐘信號上升沿來同步此進(jìn)程,可以保證產(chǎn)生的信號穩(wěn)定。
4.2 VESA1和VESA2寫地址生成
因為VESA1寫地址生成與VESA2寫地址生成類似,這里只介紹VESA1的寫地址(a_write1)生成。由于系統(tǒng)中SRAM的地址總線為20位(尋址能力1M),所以a_write1為20位。若將輸入視頻信號的分辨率記為def,則VESA1一幀像素數(shù)據(jù)所需SRAM空間范圍是0~def-1。因此,在場同步期間(VSYNC1=VSP),可令a_write1=220-1。在非場同步期間,若處于像素數(shù)據(jù)有效期(DE1=1),則當(dāng)像素時鐘(CLK1)上升沿到來時,對a_write1實行自加一操作(假設(shè)已設(shè)置T.M.D.S解碼器1輸出的控制信號及像素數(shù)據(jù)在CLK1的上升沿前后穩(wěn)定);若處于像素數(shù)據(jù)無效期(DE1≠0),則a_write1保持不變。這樣,在一幀圖像期間,對應(yīng)從圖像左上角開始計數(shù)的每個像素數(shù)據(jù),便可形成0~def-1的地址范圍。
4.3 輸出時序、讀地址生成
4.3.1 分辨率判斷
a_write1(VESA1寫地址)的范圍是0~def-1,而a_write1完成從def-1到0跳變的觸發(fā)源正是場同步信號(VSYNC1)從非同步期到同步期的跳變。因此,可定義一信號def_clk,當(dāng)VSYNC1≠VSP時,def_clk=0,否則,def_clk=1。這樣,當(dāng)def_clk上升沿到來時,正是場同步信號從非同步期到同步期的跳變,此時若令20位信號def_1= a_write1(等于def-1),且令def=def_1+1,則可得真正的分辨率,。
4.3.2 暫時輸出時序控制信號生成
VESA標(biāo)準(zhǔn)的控制信號包括VSYNC、HSYNC、DE。由于已知兩路視頻信號的分辨率(def),這時將VESA1的像素時鐘(CLK1)作為暫時的輸出時序像素時鐘(CLK33),再結(jié)合VESA標(biāo)準(zhǔn)的介紹,便可生成分辨為def的暫時的輸出時序控制信號VSYNC33、HSYNC33、DE33。
4.3.3 VESA3讀地址生成
由于此地址生成方法與VESA1和VESA2寫地址生成方法相同,只是此處生成的地址是SRAM控制器用來讀取像素數(shù)據(jù)而已,故不再贅述。
4.3.4 換場信號生成
當(dāng)主時序換場時,每一路視頻信號的兩片SRAM需要交換讀寫方式,即若換場前讀SRAM1、SRAM3,寫SRAM2、SRAM4,則換場后讀SRAM2、SRAM4,寫SRAM1、SRAM3。因此需要一個信號在主時序相鄰兩場的電平不同,即換場信號,記為v_trans。此信號用來控制圖 4中SRAM控制模塊的讀寫方式。
v_trans的生成方式比較簡單,只需在VSYNC33的上升沿到來時將v_trans取反即可。
4.3.5 輸出時序同步處理和疊加像素生成
由于信號在FPGA生成的電路存在延遲,主時序控制信號和像素時鐘信號可能產(chǎn)生不同步現(xiàn)象。因此需要對控制信號進(jìn)行同步處理,同步期間同時生成像素數(shù)據(jù)Data3(VESA3像素數(shù)據(jù))并輸出。VESA3中的像素時鐘直接短接CLK33即可。Data11(Data22)是從SRAM中讀取的VESA1(VESA2)鏈路像素數(shù)據(jù)。
同步過程為CLK33下降沿到來時輸出控制信號和像素數(shù)據(jù)。由于本文將VESA1作為主路、VESA2作為從路,所以要將VESA2信號疊加在VESA1上。疊加算法為:若VESA2第i個像素點(Data22)為黑色(Data22=0),則輸出的VESA3第i個像素為VESA1的第i個像素(Data11),即Data3=Data11;否則,輸出的VESA3第i個像素為VESA2的第i個像素,即Data3=Data22。
4.4 SRAM控制
將SRAM1和SRAM2分為一組,對應(yīng)VESA1鏈路;將SRAM3和SRAM4分為一組,對應(yīng)VESA2鏈路。SRAM控制模塊需要對每一組中的兩塊SRAM輪流進(jìn)行讀寫操作。若v_trans=0,則用VESA3讀地址生成模塊產(chǎn)生的地址a_read來讀取SRAM1、SRAM3,分別得像素數(shù)據(jù)Data11、Data22,同時用VESA1、VESA2寫地址生成模塊產(chǎn)生的地址a_write1、a_write2分別將Data1、Data2寫入SRAM2、SRAM4;否則,用地址a_read讀取SRAM2、SRAM4,分別得像素數(shù)據(jù)Data11、Data22,同時用地址a_write1和a_write2分別將Data1和Data2寫入SRAM1、SRAM3。Data11、Data22被送至輸出時序、讀地址生成模塊進(jìn)行疊加像素生成。
5 實驗結(jié)果
對于1 024×768@60Hz的VESA時序,控制信號(vsync,hsync,de)和像素時鐘(idck)的仿真結(jié)果如圖 5所示,其他分辨率的仿真圖不再給出。經(jīng)過測量場同步信號和行同步信號的周期分別為16.7 ms、20.7 ?滋s,與VESA標(biāo)準(zhǔn)[2]一致,其他參數(shù)經(jīng)測量也吻合,不再列舉。
由于只對兩路視頻中的綠色信號進(jìn)行了疊加,顯示色數(shù)有些不足。后期研究可向全彩色視頻疊加方向努力。但彩色信號疊加與綠色信號疊加在原理上相同,只是意味著要選用引腳數(shù)更多的FPGA。
評論