摘? 要: 幀存是圖形顯示系統(tǒng)" title="顯示系統(tǒng)">顯示系統(tǒng)的核心部件之一,幀存的設(shè)計關(guān)系到系統(tǒng)的整體性能。介紹了一種高速圖形幀存的設(shè)計方法。該高速幀存采用SRAM作為存儲體,應(yīng)用FPGA實現(xiàn)雙幀存交替切換、上電" title="上電">上電清屏等功能,并借鑒電影遮光板的原理實現(xiàn)單幀雙掃描功能,增加了系統(tǒng)視頻帶寬。該幀存已在某型飛機(jī)座艙圖形顯示系統(tǒng)中獲得成功應(yīng)用。
關(guān)鍵詞: 圖形幀存? 儀表裝置? LCD ?VHDL? FPGA
?
幀存是圖形處理器與顯示設(shè)備之間的數(shù)據(jù)通道,所有要顯示的圖形數(shù)據(jù)首先是存放在幀存之中,然后才送出去顯示的,因此幀存的設(shè)計是圖形顯示系統(tǒng)設(shè)計的一個關(guān)鍵。傳統(tǒng)上,可以用來設(shè)計幀存的存儲器件有多種,如DRAM、VRAM、SDRAM及SRAM等。DRAM、VRAM及SDRAM屬于動態(tài)存儲器,容量大、價格便宜,但速度比SRAM慢,而且在使用中需要定時刷新。當(dāng)圖形處理器沒有外部專用刷新接口時,就需要設(shè)計刷新電路,這給系統(tǒng)設(shè)計帶來不便。SRAM器件高速且接口簡單,但是價格較貴、容量小。近年來,隨著SRAM容量的不斷增大和價格的不斷下降,在一些需要高速實時顯示的圖形顯示系統(tǒng)中,用高速SRAM設(shè)計圖形幀存越來越普遍。本文介紹已在項目中實際應(yīng)用的采用雙SRAM幀存交替切換的高速幀存設(shè)計方法。詳細(xì)介紹應(yīng)用FPGA設(shè)計幀存控制器,實現(xiàn)幀存的交替、上電清屏及借鑒電影遮光板原理實現(xiàn)單幀雙掃描的方法。
1 圖形顯示系統(tǒng)簡介
圖1是某專用圖形顯示系統(tǒng)結(jié)構(gòu)框圖,圖形顯示系統(tǒng)采用DSP+FPGA構(gòu)架。圖形處理器采用AD公司的ADSP21061芯片;AMLCD采用Korry公司的KDM710全彩色液晶顯示模塊,該模塊為5×5英寸、600×600分辨率全彩色液晶顯示模塊,24位數(shù)字RGB輸入;兩個幀存A和B采用IDT公司的71V424L10Y高速異步靜態(tài)RAM(讀寫速度為10ns)。系統(tǒng)采用雙幀存輪流操作方法:當(dāng)DSP向其中一個幀存寫像素時,由FPGA構(gòu)成的幀存控制器將另一個幀存中的像素順序讀出,送給AMLCD顯示;反之亦然。圖形顯示系統(tǒng)通過IDT公司的71V04雙口RAM接收主機(jī)的顯示信息。圖1中的幀存控制器和視頻控制器由Xilinx公司的SpartanII芯片XC2S50實現(xiàn)。 視頻控制器產(chǎn)生KDM710顯示模塊所需的一些時序控制信號:行同步信號" title="同步信號">同步信號/HSYNC、場同步信號/VSYNC、數(shù)據(jù)使能信號DATA_EN和像素時鐘信號DCLK等。幀存控制器產(chǎn)生24位RGB顏色數(shù)據(jù)信號,該RGB數(shù)據(jù)信號與視頻控制器中的時序控制信號相配合,在液晶顯示屏上顯示出穩(wěn)定的圖形。有關(guān)視頻控制器的設(shè)計方法參見文獻(xiàn)[2]。
?
?
2 幀存控制器設(shè)計
2.1 總線切換模塊
圖2為幀存控制器總線切換模塊框圖。地址總線" title="地址總線">地址總線通過多路選擇器(MUX)切換,所有數(shù)據(jù)總線通過三態(tài)門掛在SRAM的數(shù)據(jù)總線上。幀存SRAM的數(shù)據(jù)總線上掛著三路數(shù)據(jù):一路是DSP的數(shù)據(jù)總線數(shù)據(jù);一路是FPGA的數(shù)據(jù)總線數(shù)據(jù);還有一路是系統(tǒng)上電清屏用的背景寄存器數(shù)據(jù)(系統(tǒng)剛上電時,幀存之中存放的是隨機(jī)數(shù),畫面顯示的將是隨機(jī)畫面,需要將背景數(shù)據(jù)送入兩個幀存)??偩€的切換由體切換信號Sel和上電清屏信號Clear控制。幀存控制器在上電時,通過上電清屏?xí)r序?qū)蓧K幀存中寫入背景顏色數(shù)據(jù)。在上電清屏過程中,Clear信號為高。當(dāng)Clear為高時,兩個地址總線選擇器都選擇FPGA總線,即FPGA的地址總線指向兩個幀存,兩個幀存的數(shù)據(jù)總線全指向背景數(shù)據(jù)寄存器,即三態(tài)門1、2、3和4關(guān)閉,而三態(tài)門5和6打開。在上電清屏?xí)r序完成之后,幀存總線的控制由體選擇信號Sel控制。當(dāng)DSP對幀存A進(jìn)行寫操作時,FPGA所產(chǎn)生的總線對幀存B進(jìn)行讀操作;反之亦然。如圖2所示,當(dāng)Sel為高時,DSP地址總線選擇幀存A,三態(tài)門1打開,三態(tài)門3、5關(guān)閉;FPGA地址總線選擇幀存B,相應(yīng)的數(shù)據(jù)總線三態(tài)門4打開,2、6關(guān)閉。背景寄存器中的顏色數(shù)據(jù)可以由用戶自己定義。
?
?
2.2 控制模塊
幀存控制器的控制模塊" title="控制模塊">控制模塊產(chǎn)生體選擇信號Sel和上電清屏?xí)r序信號Clear,控制模塊的結(jié)構(gòu)框圖如圖3所示。圖中,/VSYNC是場同步信號,該信號經(jīng)過一個微分電路,產(chǎn)生一個像素時鐘周期寬的使能脈沖信號,控制計數(shù)器的計數(shù)使能。計數(shù)器為一模2計數(shù)器,Sel信號為場同步信號/VSYNC的四分頻,在出現(xiàn)兩個場同步信號之后,才切換幀存,即兩個幀存使用的順序是:AABBAA...這種控制方式類似于電影遮光板的設(shè)計思想,使一幅畫面在屏幕上重復(fù)出現(xiàn)兩次,從而在25Hz的幀頻時能獲得50Hz的場頻,使系統(tǒng)視頻帶寬增加一倍。如當(dāng)場頻50Hz時,圖形處理器可以有40ms的時間處理一幀圖形數(shù)據(jù)。圖4為幀存控制時序圖,Clear信號的產(chǎn)生過程如下:系統(tǒng)上電時,RST信號高一段時間(系統(tǒng)邏輯復(fù)位)后變低,在RST的下降沿,ClearA變高,此時場同步低電平有效信號還沒到,ClearB為高,Clear為高,系統(tǒng)開始清屏?xí)r序。當(dāng)對兩個幀存的清屏工作結(jié)束時,場同步信號/VSYNC有效,該信號將“0”電平鎖存輸出,ClearB為低,Clear為低,系統(tǒng)開始在Sel控制下工作。從控制模塊框圖中可以看到,Clear信號僅僅在上電復(fù)位信號RST結(jié)束時(下降沿)才變?yōu)楦?持續(xù)一個場周期之后,Clear信號將一直為低,把控制權(quán)交給Sel體切換信號。控制模塊的VHDL代碼及相應(yīng)的時序仿真圖如圖5所示(Modelsim5.5FSE仿真器仿真)。
?
?
entity sel_gen is
port(clk ??????? : ?? in std_logic;
???? rst?????????? :??? in std_logic;
???? vsync???????? :??? in std_logic;
???? sel?????????? :??? out std_logic;
???? clear?????????:??? out std_logic);
end sel_gen
architecture rtl_sel_gen of sel_gen is
signal clken?????????:?? std_logic;
signal cleartemp???? :?? std_logic;
signal inputrega???? :?? std_logic;
signal inputregb???? :?? std_logic;
signal qn??????????? : ? std_logic_vector(1 downto 0);
signal seltemp?? ?? : ? std_logic;
begin
process(rst,vsync)
begin
if rst'event and rst=‘0’ then
cleartemp <=‘1’;
end if;
if(vsync=‘0’)then
cleartemp <=‘0’;
end if;
end process;
clear<=cleartemp;
process(clk)
begin
if clk'event and clk=‘1’then
inputregb <= inputrega;
inputrega <= not vsync;
end if;
end process;
clken <= not inputregb and inputrega;
process (clk,rst)
begin
if (rst-‘1’) then
qn <= (others = >‘0’);
elsif clk'event and clk = ‘1’ then
if clken=‘1’ then
if qn = 3 then
qn <= (others =>‘0’);
else
qn <=qn +1;
end if;
end if;
end if;
seltemp <=qn(1);
end process;
sel <= seltemp;
end rtl sel gen;
?
3 時序分析
要使高速幀存能正常工作,必須滿足一定的時延要求。AMLCD是在像素時鐘的下降沿將數(shù)據(jù)鎖存,從像素時鐘的上升沿到正確的RGB圖形數(shù)據(jù)出現(xiàn)在AMLCD的數(shù)據(jù)總線上,之間的延時T必須小于25ns(像素時鐘周期為50ns,半周期為25ns),系統(tǒng)才能正常工作,如圖6所示。圖中的DLL(Delay-Locked Loop)為SpartanII芯片內(nèi)置的數(shù)字鎖相環(huán),Clk_top(40MHz)經(jīng)DLL二分頻后得20MHz像素時鐘。20MHz時鐘一路作為系統(tǒng)工作時鐘為FPGA地址計數(shù)器提供計數(shù)脈沖,一路作為像素時鐘直接送至AMLCD。從圖6可以看出,延時T包括如下幾個延時:T1為Clk_top到幀存SRAM地址總線上地址的改變所需的延時(總線上各個信號的延時是不同的,T1為其中最大值);T2為幀存SRAM從地址改變到有效的數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線上所需的延時;T3為FPGA讀幀存數(shù)據(jù)總線上的數(shù)據(jù)到輸出至AMLCD所需的延時;T4為Clk_top經(jīng)DLL產(chǎn)生像素時鐘直接輸出至AMLCD所需的延時。可以看出延時T=T1+T2+T3-T4。系統(tǒng)中的幀存控制器由Xilinx公司的SparatnII 芯片XC2S50-6實現(xiàn),經(jīng)過FPGA Express3.7綜合和Xilinx公司的ISE4.2I軟件布局布線。經(jīng)分析,布線后的延時:T1=10.994ns、T3=10.691ns、T4=7.784ns,T2 由IS61LV5128芯片的時間參數(shù)決定,T2≤10ns,從而T≤23.901ns<25ns,滿足系統(tǒng)的時序要求。一般開發(fā)工具所得出的時序報告是系統(tǒng)最壞情況下的延時,實際系統(tǒng)中的延時將小于仿真時所得出的數(shù)據(jù)。
?
?
采用高速SRAM存儲器作為圖形幀存,用FPGA設(shè)計幀存控制器,能大大減小電路板的尺寸,增加系統(tǒng)的可靠性和設(shè)計靈活性;采用雙幀存交替切換及單幀雙掃技術(shù),提高了系統(tǒng)視頻帶寬,并能提高系統(tǒng)實時性,減少圖形閃爍;采用VHDL語言進(jìn)行FPGA設(shè)計具有方法簡單、易讀和可重用性強(qiáng)的特點。該高速圖形幀存已用Xilinx公司的SpartanII系列器件XC2S50實現(xiàn),并在某型飛機(jī)座艙圖形顯示系統(tǒng)中實際應(yīng)用。
?
參考文獻(xiàn)
1 The programmable Logic Data Book 2000. USA:Xilinx?Corp,2000
2 朱耀東.基于FPGA的LCD&VGA控制器設(shè)計.電子技術(shù)應(yīng)用, 2002;28(11)
3 蘇光大. 微機(jī)圖象處理系統(tǒng). 北京:清華大學(xué)出版社2000.7: 65~92
4 KDM710 5X5 AMLCD-Interface control document. USA:?Korry Electronics Corp,2001.6