文獻標(biāo)識碼: A
文章編號: 0258-7998(2014)09-0044-04
顯示系統(tǒng)是航空電子系統(tǒng)的重要組成部分,現(xiàn)代飛機和其他載人飛行器的座艙顯示向駕駛員提供飛行器、發(fā)動機和其他系統(tǒng)所測試的參數(shù),包括從起飛、導(dǎo)航到著陸等全過程所需要的各種信息[1]。圖形顯示系統(tǒng)性能的優(yōu)劣直接影響到飛行員獲取飛行信息進而做出判斷和決策的效率。作為設(shè)計過程的一部分,必須確定駕駛員的信息需求,并且信息顯示必須設(shè)計得確保提供充分的態(tài)勢感知[2]。
隨著顯示分辨率的提高,要處理的像素也越來越多, 而允許的處理時間卻受屏幕刷新率所限制[3]。目前主流的機載顯示分辨率為UXGA(1 600×1 200×60 Hz),數(shù)據(jù)傳輸率為345 MB/s[4]。高速、高帶寬數(shù)據(jù)處理需要大容量高速率的幀存器件做數(shù)據(jù)緩沖。SRAM器件有著讀寫速度快、控制簡單的特點,但是其容量小,成本高。在各種隨機存儲器件中,SDRAM的價格低、體積小、速度快、容量大,是比較理想的器件[5-6]。本文針對高分辨率圖形顯示應(yīng)用需求設(shè)計了一種基于SDRAM幀存的圖形生成電路,利用DSP執(zhí)行圖形運算算法,利用FPGA作為協(xié)處理器,利用SDRAM作為圖形幀存并采取乒乓操作方式進行數(shù)據(jù)存取,實現(xiàn)了分辨率高達1 600×1 200的圖形實時生成與顯示。
1 圖形生成原理
飛行技術(shù)的發(fā)展使得座艙內(nèi)需要顯示的信息量增大,尤其在做戰(zhàn)術(shù)動作時,畫面變換速度快,要求圖形的更新速度也必須很快,才可以避免畫面的斷續(xù)。為達到動態(tài)實時顯示及畫面清晰,硬件上需采用更快的圖形處理器和更合理的設(shè)計[7]。本文采用ADI公司的TigerSHARC系列高速DSP器件TS201作為圖形處理器,以FPGA作為協(xié)處理器,采用大容量高速SDRAM器件作為圖形幀存,原理框圖如圖1所示。
其中DSP負(fù)責(zé)圖形生成運算并且將數(shù)據(jù)結(jié)果通過FPGA寫入SDRAM中,F(xiàn)PGA從SDRAM中讀出數(shù)據(jù)送至顯示部件進行顯示。本設(shè)計采用雙幀存結(jié)構(gòu),DSP和FPGA對SDRAM的幀存操作采取乒乓方式,以場同步信號為周期進行切換。
2 FPGA設(shè)計
FPGA設(shè)計主要包括SDRAM控制器設(shè)計、系統(tǒng)接口模塊設(shè)計、乒乓模塊設(shè)計等。
2.1 SDRAM控制器設(shè)計
SDRAM的操作時序非常復(fù)雜,控制命令主要包括:激活命令A(yù)CTIVE、讀命令READ、寫命令WRITE、預(yù)充電命令PRECHARGE、刷新命令REFRESH、操作模式加載命令LOAD MODE REGISTER等。上電之初要先進行初始化配置,而后才可進行正常讀寫。一個單獨的讀寫操作需要有數(shù)個時鐘周期的配套操作,這也部分抵消了其高速率帶來的優(yōu)勢。全頁突發(fā)操作模式能夠很好地發(fā)揮SDRAM高速讀寫的性能[8]。突發(fā)操作是指從內(nèi)存中連續(xù)的地址讀寫有限的數(shù)據(jù),在一個SDRAM 設(shè)備的頻率周期中,可以讀寫與時鐘個數(shù)近似等量的數(shù)據(jù)[9]。本文采取突發(fā)操作方式對SDRAM進行數(shù)據(jù)存取處理。
本文采用VHDL硬件描述語言并用有限狀態(tài)機來實現(xiàn)SDRAM各個控制命令狀態(tài)間的切換。使用VHDL語言來描述有限狀態(tài)機,可以充分發(fā)揮硬件描述語言的抽象建模能力[10]。SDRAM控制器邏輯框圖如圖2所示。圖中各個信號的定義如表1所示。
控制器內(nèi)部邏輯主要分為三部分,分別為:狀態(tài)轉(zhuǎn)換模塊sdr_ctrl、狀態(tài)處理模塊sdr_sig、數(shù)據(jù)處理模塊sdr_data。狀態(tài)轉(zhuǎn)換模塊sdr_ctrl負(fù)責(zé)初始化狀態(tài)機和初始化完成后各個操作命令之間狀態(tài)轉(zhuǎn)移關(guān)系的建立,狀態(tài)處理模塊sdr_sig負(fù)責(zé)各種狀態(tài)命令下對應(yīng)的地址、控制命令信號的生成,數(shù)據(jù)處理模塊sdr_data負(fù)責(zé)控制數(shù)據(jù)端的讀寫使能三態(tài)控制。
2.2 系統(tǒng)接口模塊
除了控制器內(nèi)部邏輯本身,F(xiàn)PGA內(nèi)部還需建立與控制器的交互關(guān)系,根據(jù)應(yīng)用要求產(chǎn)生系統(tǒng)接口模塊System,負(fù)責(zé)在適當(dāng)?shù)臅r候發(fā)起讀寫操作。FPGA內(nèi)部相關(guān)的模塊關(guān)系如圖3所示。
System模塊主要負(fù)責(zé)生成sdr_top模塊的激勵信號,包括sys_ADSn、sys_R_Wn、sys_A等。
2.3 乒乓操作
在圖形產(chǎn)生系統(tǒng)中將顯存部件設(shè)置為乒乓雙緩存結(jié)構(gòu),可以達到提高系統(tǒng)數(shù)據(jù)吞吐量和系統(tǒng)處理效率的目的。本文中顯存部分包括兩片SDRAM存儲器,分別為SDRAM1和SDRAM2。對顯存的操作分為兩個主體,一個為FPGA內(nèi)部邏輯生成的SDRAM控制器1,另一個為DSP集成的SDRAM控制器2。顯存的選擇和切換管理通過場同步的二分頻信號SET實現(xiàn),SET為“0”時,F(xiàn)PGA生成的SDRAM控制器對SDRAM1進行操作,DSP集成的SDRAM控制器對SDRAM2進行操作;SET為“1”時,F(xiàn)PGA生成的SDRAM控制器對SDRAM2進行操作,DSP集成的SDRAM控制器對SDRAM1進行操作。SDRAM乒乓操作的框圖如圖4所示。
DSP寫入SDRAM中的數(shù)據(jù)需定時讀取并送出顯示,在顯示動態(tài)圖形畫面時,需對幀存中的原始數(shù)據(jù)進行清屏處理,否則會引起畫面重影。清屏的實質(zhì)就是將整個顯示幀緩存全部填充成透明色,盡管處理簡單,但通過純軟件實現(xiàn)非常費時[11]。本文設(shè)計了一種利用FPGA邏輯進行畫面消隱的方法,減輕了軟件操作的負(fù)擔(dān),提高了系統(tǒng)運行效率。具體方法為:利用SDRAM的高速高帶寬優(yōu)勢,將每行數(shù)據(jù)以SDRAM操作時鐘高速讀出,通過FIFO1進行緩沖后讀出顯示。當(dāng)一行數(shù)據(jù)從SDRAM中全部讀出后,立即通過FIFO2以SDRAM操作時序向SDRAM該行地址寫入0數(shù)據(jù),以此達到清空該行數(shù)據(jù)的目的。每一行操作均參照此方法,則當(dāng)一幀畫面全部讀出完畢后,該幀原有數(shù)據(jù)也全部得到清空。
3 高分辨率畫面數(shù)據(jù)存取
為了高效利用SDRAM存儲空間,在DSP控制SDRAM操作期間,將地址線錯開一位相連,SDRAM地址總線第0位與DSP地址總線第1位相連,SDRAM地址總線第1位與DSP地址總線第2位相連,以此類推,這樣SDRAM的一個地址空間將存儲兩個像素數(shù)據(jù)。SDRAM位寬為32 bit,高16位和低16位分別存放兩個相鄰的像素數(shù)據(jù)。針對1 600×1 200分辨率畫面,在SDRAM中一行1 600個像素數(shù)據(jù)只需對應(yīng)800個地址。本文所采用的SDRAM最大突發(fā)長度是512,程序中將突發(fā)長度設(shè)置為512和288兩種類型。顯示器的一行像素數(shù)據(jù)和SDRAM中的兩行地址單元對應(yīng),其中第一行512個地址單元對應(yīng)前1 024個像素數(shù)據(jù),第二行前288個地址單元對應(yīng)后576個像素數(shù)據(jù),后224個地址單元舍棄。這樣總共需2 400行存放一幀畫面數(shù)據(jù),小于SDRAM中4 096行一個BANK的容量。
根據(jù)VESA標(biāo)準(zhǔn),分辨率為1 600×1 200、刷新率為60Hz的畫面,行消隱包括50個行周期,一幀畫面周期共包含1 250個行周期,式(1)給出了行周期計算公式:
針對一行數(shù)據(jù),需完成突發(fā)讀和突發(fā)寫兩個步驟,突發(fā)讀通過FIFO緩沖顯示,突發(fā)寫對已讀出的SDRAM數(shù)據(jù)進行清空。每次突發(fā)讀、寫需分兩次進行,第一次完成512個數(shù)據(jù)突發(fā)操作,第二次完成288個數(shù)據(jù)突發(fā)操作。一個行周期內(nèi)共需完成4次突發(fā)操作,需產(chǎn)生4個sys_ADSn信號。為了便于SDRAM控制器區(qū)分512突發(fā)操作和288突發(fā)操作,在System模塊中設(shè)計了一個sys_BLS(burst length select)突發(fā)長度選擇信號,其為“0”時通知控制器進行512突發(fā),為“1”時通知控制器進行288突發(fā)。
本設(shè)計中SDRAM的操作時鐘為150 MHz,式(2)給出了一行數(shù)據(jù)處理的時長:
式(2)分子為處理一行數(shù)據(jù)所需的總時鐘周期數(shù)目,其中包含4次突發(fā)操作周期以及每次突發(fā)操作所配套的行選通、列選通、預(yù)充電、自刷新等命令所消耗時鐘周期。由式(2)知,處理一行數(shù)據(jù)的時間小于行周期13.33 μs。根據(jù)VESA標(biāo)準(zhǔn),1 600×1 200分辨率畫面行周期包含2 160個像素時鐘周期。行同步寬度為192個像素時鐘周期,實際程序中利用行同步頭做清零處理,由式(3)可得到實際可用的操作時間為:
HSYNC、HBLANK、sys_ADSn、sys_R_Wn、sys_BLS的時序波形圖如圖5所示。
在行同步上升沿開始產(chǎn)生第1個低電平sys_ADSn信號,行地址加1,sys_R_Wn為高,sys_BLS為低,通知SDRAM控制器進行512突發(fā)讀操作;完成后產(chǎn)生第2個sys_ADSn信號,行地址加1,此時sys_R_Wn為高,sys_BLS為高,通知控制器進行288突發(fā)讀操作;完成后產(chǎn)生第3個sys_ADSn信號,行地址減1,此時sys_R_Wn為低,sys_BLS為低,通知控制器完成512突發(fā)寫操作;完成后產(chǎn)生第4個sys_ADSn信號,行地址加1,此時sys_R_Wn為低,sys_BLS為高,通知控制器進行288突發(fā)寫操作。SDRAM的行地址按照A、A+1、A、A+1、A+2、A+3、A+2、A+3……的規(guī)律遞增,突發(fā)操作狀態(tài)按照讀、讀、寫、寫、讀、讀、寫、寫……的規(guī)律進行。
4 實驗驗證
本文采用的DSP器件是ADI公司TigerSHARC系列的TS201,F(xiàn)PGA采用Altera公司的EP2S60F672,F(xiàn)PGA開發(fā)環(huán)境為QuartusII9.1,運用開發(fā)環(huán)境集成的在線邏輯分析儀工具Signaltap II抓取sdram控制器的各個相關(guān)信號波形,如圖6所示。
本文針對機載顯示器對高分辨率圖形顯示的需求,采用SDRAM器件作為圖形幀存,使用VHDL語言設(shè)計了SDRAM控制器;針對1 600×1 200分辨率畫面實時生成需求,設(shè)計了512和288兩種突發(fā)長度,通過FPGA內(nèi)部的FIFO進行數(shù)據(jù)緩沖處理,對SDRAM采取乒乓操作方式,實現(xiàn)了分辨率高達1 600×1 200圖形的實時生成與顯示。
參考文獻
[1] 賈銀亮.基于FPGA+DSP的飛機座艙綜合圖形顯示技術(shù)研究[D].南京:南京航空航天大學(xué),2011.
[2] SPITZER C R.數(shù)字航空電子技術(shù)(上)航空電子元件、軟件和功能件[M].謝文濤,譯.北京:航空工業(yè)出版社,2010.
[3] 孔全存,李成貴,張鳳卿.主飛行儀表圖形加速顯示系統(tǒng)的FPGA設(shè)計[J].電子技術(shù)應(yīng)用,2007,33(4):62-64.
[4] 李翠娟,陳川,張曉曦,等.幾種機載視頻技術(shù)要點分析與發(fā)展趨勢探討[J].航空電子技術(shù),2012,42(1):129-131,134.
[5] 楊海濤,蘇濤,巫檬.基于FPGA的SDRAM控制器的設(shè)計和實現(xiàn)[J].電子科技,2007(1):8-12.
[6] 段曉晨,何小剛,程永強.實時視頻SDRAM控制器的FPGA設(shè)計與實現(xiàn)[J].太原理工大學(xué)報,2006,37(5):5-8.
[7] 谷勇,艾德峰,魏延巖.飛機座艙顯示系統(tǒng)畫面顯示質(zhì)量的研究[J].海軍航空工程學(xué)院學(xué)報,2009,24(6):631-634.
[8] 王利穎,蔣亞東,羅鳳武.嵌入式實時圖像處理系統(tǒng)中SDRAM控制器的實現(xiàn)[J].現(xiàn)代電子技術(shù),2009(9):137-139.
[9] 林志煌,解梅.一種簡易SDRAM 控制器的設(shè)計方法[J].現(xiàn)代電子技術(shù),2008(16):18-20.
[10] 張波,張煥春,經(jīng)亞枝.基于DSP和FPGA的座艙圖形顯示系統(tǒng)關(guān)鍵技術(shù)研究[J].信息與控制,2003,32(6):549-552.
[11] Micron Technology Inc..SYNCHRONOUS DRAM MT48LC8M32B2-2 MEG ×32 × 4 banks[Z].2003.