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