《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 基于FPGA的一種高速圖形幀存設(shè)計(jì)

基于FPGA的一種高速圖形幀存設(shè)計(jì)

2008-10-16
作者:朱耀東 張煥春 經(jīng)亞枝

  摘? 要: 幀存是圖形顯示系統(tǒng)" title="顯示系統(tǒng)">顯示系統(tǒng)的核心部件之一,幀存的設(shè)計(jì)關(guān)系到系統(tǒng)的整體性能。介紹了一種高速圖形幀存的設(shè)計(jì)方法。該高速幀存采用SRAM作為存儲(chǔ)體,應(yīng)用FPGA實(shí)現(xiàn)雙幀存交替切換、上電" title="上電">上電清屏等功能,并借鑒電影遮光板的原理實(shí)現(xiàn)單幀雙掃描功能,增加了系統(tǒng)視頻帶寬。該幀存已在某型飛機(jī)座艙圖形顯示系統(tǒng)中獲得成功應(yīng)用。

  關(guān)鍵詞: 圖形幀存? 儀表裝置? LCD ?VHDL? FPGA

?

  幀存是圖形處理器與顯示設(shè)備之間的數(shù)據(jù)通道,所有要顯示的圖形數(shù)據(jù)首先是存放在幀存之中,然后才送出去顯示的,因此幀存的設(shè)計(jì)是圖形顯示系統(tǒng)設(shè)計(jì)的一個(gè)關(guān)鍵。傳統(tǒng)上,可以用來(lái)設(shè)計(jì)幀存的存儲(chǔ)器件有多種,如DRAM、VRAM、SDRAM及SRAM等。DRAM、VRAM及SDRAM屬于動(dòng)態(tài)存儲(chǔ)器,容量大、價(jià)格便宜,但速度比SRAM慢,而且在使用中需要定時(shí)刷新。當(dāng)圖形處理器沒(méi)有外部專用刷新接口時(shí),就需要設(shè)計(jì)刷新電路,這給系統(tǒng)設(shè)計(jì)帶來(lái)不便。SRAM器件高速且接口簡(jiǎn)單,但是價(jià)格較貴、容量小。近年來(lái),隨著SRAM容量的不斷增大和價(jià)格的不斷下降,在一些需要高速實(shí)時(shí)顯示的圖形顯示系統(tǒng)中,用高速SRAM設(shè)計(jì)圖形幀存越來(lái)越普遍。本文介紹已在項(xiàng)目中實(shí)際應(yīng)用的采用雙SRAM幀存交替切換的高速幀存設(shè)計(jì)方法。詳細(xì)介紹應(yīng)用FPGA設(shè)計(jì)幀存控制器,實(shí)現(xiàn)幀存的交替、上電清屏及借鑒電影遮光板原理實(shí)現(xiàn)單幀雙掃描的方法。

1 圖形顯示系統(tǒng)簡(jiǎn)介

  圖1是某專用圖形顯示系統(tǒng)結(jié)構(gòu)框圖,圖形顯示系統(tǒng)采用DSP+FPGA構(gòu)架。圖形處理器采用AD公司的ADSP21061芯片;AMLCD采用Korry公司的KDM710全彩色液晶顯示模塊,該模塊為5×5英寸、600×600分辨率全彩色液晶顯示模塊,24位數(shù)字RGB輸入;兩個(gè)幀存A和B采用IDT公司的71V424L10Y高速異步靜態(tài)RAM(讀寫(xiě)速度為10ns)。系統(tǒng)采用雙幀存輪流操作方法:當(dāng)DSP向其中一個(gè)幀存寫(xiě)像素時(shí),由FPGA構(gòu)成的幀存控制器將另一個(gè)幀存中的像素順序讀出,送給AMLCD顯示;反之亦然。圖形顯示系統(tǒng)通過(guò)IDT公司的71V04雙口RAM接收主機(jī)的顯示信息。圖1中的幀存控制器和視頻控制器由Xilinx公司的SpartanII芯片XC2S50實(shí)現(xiàn)。 視頻控制器產(chǎn)生KDM710顯示模塊所需的一些時(shí)序控制信號(hào):行同步信號(hào)" title="同步信號(hào)">同步信號(hào)/HSYNC、場(chǎng)同步信號(hào)/VSYNC、數(shù)據(jù)使能信號(hào)DATA_EN和像素時(shí)鐘信號(hào)DCLK等。幀存控制器產(chǎn)生24位RGB顏色數(shù)據(jù)信號(hào),該RGB數(shù)據(jù)信號(hào)與視頻控制器中的時(shí)序控制信號(hào)相配合,在液晶顯示屏上顯示出穩(wěn)定的圖形。有關(guān)視頻控制器的設(shè)計(jì)方法參見(jiàn)文獻(xiàn)[2]。

?

?

2 幀存控制器設(shè)計(jì)

2.1 總線切換模塊

  圖2為幀存控制器總線切換模塊框圖。地址總線" title="地址總線">地址總線通過(guò)多路選擇器(MUX)切換,所有數(shù)據(jù)總線通過(guò)三態(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)剛上電時(shí),幀存之中存放的是隨機(jī)數(shù),畫(huà)面顯示的將是隨機(jī)畫(huà)面,需要將背景數(shù)據(jù)送入兩個(gè)幀存)??偩€的切換由體切換信號(hào)Sel和上電清屏信號(hào)Clear控制。幀存控制器在上電時(shí),通過(guò)上電清屏?xí)r序?qū)蓧K幀存中寫(xiě)入背景顏色數(shù)據(jù)。在上電清屏過(guò)程中,Clear信號(hào)為高。當(dāng)Clear為高時(shí),兩個(gè)地址總線選擇器都選擇FPGA總線,即FPGA的地址總線指向兩個(gè)幀存,兩個(gè)幀存的數(shù)據(jù)總線全指向背景數(shù)據(jù)寄存器,即三態(tài)門1、2、3和4關(guān)閉,而三態(tài)門5和6打開(kāi)。在上電清屏?xí)r序完成之后,幀存總線的控制由體選擇信號(hào)Sel控制。當(dāng)DSP對(duì)幀存A進(jìn)行寫(xiě)操作時(shí),FPGA所產(chǎn)生的總線對(duì)幀存B進(jìn)行讀操作;反之亦然。如圖2所示,當(dāng)Sel為高時(shí),DSP地址總線選擇幀存A,三態(tài)門1打開(kāi),三態(tài)門3、5關(guān)閉;FPGA地址總線選擇幀存B,相應(yīng)的數(shù)據(jù)總線三態(tài)門4打開(kāi),2、6關(guān)閉。背景寄存器中的顏色數(shù)據(jù)可以由用戶自己定義。

?

?

2.2 控制模塊

  幀存控制器的控制模塊" title="控制模塊">控制模塊產(chǎn)生體選擇信號(hào)Sel和上電清屏?xí)r序信號(hào)Clear,控制模塊的結(jié)構(gòu)框圖如圖3所示。圖中,/VSYNC是場(chǎng)同步信號(hào),該信號(hào)經(jīng)過(guò)一個(gè)微分電路,產(chǎn)生一個(gè)像素時(shí)鐘周期寬的使能脈沖信號(hào),控制計(jì)數(shù)器的計(jì)數(shù)使能。計(jì)數(shù)器為一模2計(jì)數(shù)器,Sel信號(hào)為場(chǎng)同步信號(hào)/VSYNC的四分頻,在出現(xiàn)兩個(gè)場(chǎng)同步信號(hào)之后,才切換幀存,即兩個(gè)幀存使用的順序是:AABBAA...這種控制方式類似于電影遮光板的設(shè)計(jì)思想,使一幅畫(huà)面在屏幕上重復(fù)出現(xiàn)兩次,從而在25Hz的幀頻時(shí)能獲得50Hz的場(chǎng)頻,使系統(tǒng)視頻帶寬增加一倍。如當(dāng)場(chǎng)頻50Hz時(shí),圖形處理器可以有40ms的時(shí)間處理一幀圖形數(shù)據(jù)。圖4為幀存控制時(shí)序圖,Clear信號(hào)的產(chǎn)生過(guò)程如下:系統(tǒng)上電時(shí),RST信號(hào)高一段時(shí)間(系統(tǒng)邏輯復(fù)位)后變低,在RST的下降沿,ClearA變高,此時(shí)場(chǎng)同步低電平有效信號(hào)還沒(méi)到,ClearB為高,Clear為高,系統(tǒng)開(kāi)始清屏?xí)r序。當(dāng)對(duì)兩個(gè)幀存的清屏工作結(jié)束時(shí),場(chǎng)同步信號(hào)/VSYNC有效,該信號(hào)將“0”電平鎖存輸出,ClearB為低,Clear為低,系統(tǒng)開(kāi)始在Sel控制下工作。從控制模塊框圖中可以看到,Clear信號(hào)僅僅在上電復(fù)位信號(hào)RST結(jié)束時(shí)(下降沿)才變?yōu)楦?持續(xù)一個(gè)場(chǎng)周期之后,Clear信號(hào)將一直為低,把控制權(quán)交給Sel體切換信號(hào)??刂颇K的VHDL代碼及相應(yīng)的時(shí)序仿真圖如圖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 時(shí)序分析

  要使高速幀存能正常工作,必須滿足一定的時(shí)延要求。AMLCD是在像素時(shí)鐘的下降沿將數(shù)據(jù)鎖存,從像素時(shí)鐘的上升沿到正確的RGB圖形數(shù)據(jù)出現(xiàn)在AMLCD的數(shù)據(jù)總線上,之間的延時(shí)T必須小于25ns(像素時(shí)鐘周期為50ns,半周期為25ns),系統(tǒng)才能正常工作,如圖6所示。圖中的DLL(Delay-Locked Loop)為SpartanII芯片內(nèi)置的數(shù)字鎖相環(huán),Clk_top(40MHz)經(jīng)DLL二分頻后得20MHz像素時(shí)鐘。20MHz時(shí)鐘一路作為系統(tǒng)工作時(shí)鐘為FPGA地址計(jì)數(shù)器提供計(jì)數(shù)脈沖,一路作為像素時(shí)鐘直接送至AMLCD。從圖6可以看出,延時(shí)T包括如下幾個(gè)延時(shí):T1為Clk_top到幀存SRAM地址總線上地址的改變所需的延時(shí)(總線上各個(gè)信號(hào)的延時(shí)是不同的,T1為其中最大值);T2為幀存SRAM從地址改變到有效的數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線上所需的延時(shí);T3為FPGA讀幀存數(shù)據(jù)總線上的數(shù)據(jù)到輸出至AMLCD所需的延時(shí);T4為Clk_top經(jīng)DLL產(chǎn)生像素時(shí)鐘直接輸出至AMLCD所需的延時(shí)??梢钥闯鲅訒r(shí)T=T1+T2+T3-T4。系統(tǒng)中的幀存控制器由Xilinx公司的SparatnII 芯片XC2S50-6實(shí)現(xiàn),經(jīng)過(guò)FPGA Express3.7綜合和Xilinx公司的ISE4.2I軟件布局布線。經(jīng)分析,布線后的延時(shí):T1=10.994ns、T3=10.691ns、T4=7.784ns,T2 由IS61LV5128芯片的時(shí)間參數(shù)決定,T2≤10ns,從而T≤23.901ns<25ns,滿足系統(tǒng)的時(shí)序要求。一般開(kāi)發(fā)工具所得出的時(shí)序報(bào)告是系統(tǒng)最壞情況下的延時(shí),實(shí)際系統(tǒng)中的延時(shí)將小于仿真時(shí)所得出的數(shù)據(jù)。

?

?

  采用高速SRAM存儲(chǔ)器作為圖形幀存,用FPGA設(shè)計(jì)幀存控制器,能大大減小電路板的尺寸,增加系統(tǒng)的可靠性和設(shè)計(jì)靈活性;采用雙幀存交替切換及單幀雙掃技術(shù),提高了系統(tǒng)視頻帶寬,并能提高系統(tǒng)實(shí)時(shí)性,減少圖形閃爍;采用VHDL語(yǔ)言進(jìn)行FPGA設(shè)計(jì)具有方法簡(jiǎn)單、易讀和可重用性強(qiáng)的特點(diǎn)。該高速圖形幀存已用Xilinx公司的SpartanII系列器件XC2S50實(shí)現(xiàn),并在某型飛機(jī)座艙圖形顯示系統(tǒng)中實(shí)際應(yīng)用。

?

參考文獻(xiàn)

1 The programmable Logic Data Book 2000. USA:Xilinx?Corp,2000

2 朱耀東.基于FPGA的LCD&VGA控制器設(shè)計(jì).電子技術(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

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。