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