文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.07.010
中文引用格式: 曹峰,高偉林. 飛機(jī)座艙圖形生成系統(tǒng)的硬件加速設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2015,41(7):37-39,43.
英文引用格式: Cao Feng,Gao Weilin. Hardware accelerating design at cockpit graphics generation system[J].Application of Electronic Technique,2015,41(7):37-39,43.
0 引言
戰(zhàn)斗機(jī)座艙顯示系統(tǒng)是飛行員了解戰(zhàn)場(chǎng)態(tài)勢(shì)、攻防信息、本機(jī)狀態(tài)等信息,完成作戰(zhàn)任務(wù)的重要信息來(lái)源。良好的人機(jī)界面能夠讓機(jī)組人員清晰、便捷地獲得所需信息,有效減輕機(jī)組人員工作負(fù)荷,從而安全高效地完成飛行和作戰(zhàn)任務(wù)。機(jī)載顯示器是座艙顯示系統(tǒng)的終端部件,其發(fā)展經(jīng)歷了三個(gè)時(shí)代,即機(jī)械時(shí)代、機(jī)電時(shí)代和光電時(shí)代[1]。機(jī)載顯示器的布局和信息顯示方式日新月異,從上世紀(jì)70年代末期開(kāi)始,電子飛行儀表系統(tǒng)(EFIS)逐步替代原有分立式飛行儀表,實(shí)現(xiàn)了顯示儀表的電子化、綜合化,座艙顯示器數(shù)量急劇減小,主顯示器尺寸不斷加大,分辨率不斷提高,并日益朝著大屏幕化、綜合化、信息化和智能化方向發(fā)展[2]。目前機(jī)載顯示器分辨率最高已達(dá)UXGA(1 600×1 200@60 Hz),數(shù)據(jù)傳輸率為345 MB/s[3]。隨著顯示分辨率的提高,要處理的像素也越來(lái)越多,而所允許的處理時(shí)間卻受屏幕刷新率所限制[4],傳統(tǒng)的飛行座艙圖形顯示方法大多通過(guò)處理器和軟件技術(shù)來(lái)實(shí)現(xiàn),而對(duì)于實(shí)時(shí)信息處理系統(tǒng),處理器還需要進(jìn)行繁重的數(shù)據(jù)分析和數(shù)據(jù)通信工作,這將導(dǎo)致圖形顯示性能受到影響[5]。
本文提出了一種圖形生成的硬件加速設(shè)計(jì)方法,利用DSP作為圖形生成的主處理器完成圖形運(yùn)算算法,將每個(gè)像素?cái)?shù)據(jù)置上標(biāo)記信息后寫(xiě)入SDRAM幀存,F(xiàn)PGA作為協(xié)處理器根據(jù)像素?cái)?shù)據(jù)的標(biāo)記類(lèi)型進(jìn)行相應(yīng)的數(shù)據(jù)運(yùn)算處理,以此減輕DSP的運(yùn)算負(fù)擔(dān),提高圖形生成效率。
1 圖形產(chǎn)生與顯示系統(tǒng)原理
1.1 硬件組成
本設(shè)計(jì)DSP芯片采用ADI公司的TS201,其主頻可達(dá)600 MHz,集成了SDRAM控制器;幀存采用了Micron公司的SDRAM器件MT48LC8M32,其容量為8 M×32 bit;FPGA采用Altera公司的EP2S30F672I4。本設(shè)計(jì)的原理框圖如圖1所示。
復(fù)位模塊為DSP提供上電復(fù)位信號(hào),F(xiàn)lash存放DSP的繪圖運(yùn)算程序,時(shí)鐘和時(shí)鐘緩沖為DSP、FPGA、SDRAM等各個(gè)器件提供工作時(shí)鐘。EEPROM存放FPGA程序。
DSP根據(jù)繪圖參數(shù)和指令進(jìn)行作圖運(yùn)算,將運(yùn)算結(jié)果通過(guò)其自帶的SDRAM控制器寫(xiě)入SDRAM幀存中。FPGA以乒乓操作的方式持續(xù)地從SDRAM幀存中讀出數(shù)據(jù)送至顯示終端顯示。
1.2 軟件設(shè)計(jì)
DSP畫(huà)面顯示軟件主要包括初始化模塊和畫(huà)面顯示模塊。初始化模塊完成DSP系統(tǒng)寄存器、SDRAM、調(diào)色板等初始化功能,畫(huà)面顯示模塊完成DSP的作圖計(jì)算與顯示等功能。畫(huà)面顯示功能模塊框圖如圖2所示。
DSP與FPGA之間通過(guò)FLAG握手信號(hào)進(jìn)行狀態(tài)標(biāo)記,TS201共有4個(gè)FLAG信號(hào),為FLAG0~FLAG3,F(xiàn)LAG信號(hào)可以根據(jù)需要由DSP配置成輸入或輸出狀態(tài)。本文中將FLAG0配置成DSP的輸出信號(hào),由DSP輸出至FPGA;FLAG1配置成DSP的輸入信號(hào),由FPGA輸出至DSP。DSP顯示軟件設(shè)計(jì)流程圖如圖3所示。
FLAG1初始值由FPGA置為“0”,F(xiàn)LAG0初始值由DSP設(shè)置為“1”。系統(tǒng)工作時(shí),F(xiàn)PGA程序中在每個(gè)場(chǎng)同步信號(hào)的上升沿對(duì)FLAG0進(jìn)行采樣處理,并將采樣值賦給FLAG1。當(dāng)DSP探測(cè)到FLAG1值發(fā)生變更時(shí),即開(kāi)始啟動(dòng)作圖運(yùn)算;作圖完畢后,DSP對(duì)FLAG0進(jìn)行取反處理。TIME_DRAW是FLGA1與FLAG0進(jìn)行異或運(yùn)算后的信號(hào),低電平持續(xù)時(shí)間即為圖形生成時(shí)間。FLAG0和FLAG1的握手時(shí)序圖如圖4所示。
2 圖形產(chǎn)生與顯示硬件加速
機(jī)載液晶顯示器需要實(shí)時(shí)產(chǎn)生并顯示多種畫(huà)面,其中又以電子式全姿態(tài)指示儀(又稱(chēng)天地球)和全羅盤(pán)的圖形變化最為復(fù)雜。一幅典型的機(jī)載顯示器畫(huà)面如圖5所示。其中天地球部分需要大量的色塊填充,如果完全依靠軟件實(shí)現(xiàn)填充算法,將會(huì)大大影響整個(gè)圖形生成的效率,進(jìn)而影響顯示效果,造成畫(huà)面遲滯。而飛機(jī)飛行過(guò)程中各種飛行參數(shù)的變化(如飛機(jī)的俯仰、橫滾等)都需要顯示畫(huà)面做出快速響應(yīng)以便于飛行員決策。在顯示動(dòng)態(tài)圖形畫(huà)面時(shí),還需對(duì)幀存中的原始數(shù)據(jù)做清屏處理,否則會(huì)引起畫(huà)面重影,盡管處理簡(jiǎn)單,但通過(guò)純軟件實(shí)現(xiàn)也非常費(fèi)時(shí)[6]。
2.1 硬件填充加速設(shè)計(jì)
在圖形產(chǎn)生與顯示系統(tǒng)中硬件加速算法的引入從本質(zhì)上而言是將繪圖任務(wù)在軟件與硬件之間進(jìn)行重新分工,找出影響軟件效率但有一定規(guī)律的適合硬件實(shí)現(xiàn)的算法。API標(biāo)準(zhǔn)在圖形硬件的應(yīng)用中扮演著非常重要的角色,其最顯著的貢獻(xiàn)是允許應(yīng)用代碼在不同的硬件加速平臺(tái)間進(jìn)行移植[7]。本文設(shè)計(jì)了一種圖形消隱和色塊填充API接口算法,用于對(duì)圖形消隱和填充進(jìn)行加速處理。
DSP寫(xiě)入SDRAM中的像素?cái)?shù)據(jù)預(yù)先置上標(biāo)記信息,F(xiàn)PGA在讀出像素?cái)?shù)據(jù)并處理時(shí)采用流水線方式完成,流水線分3個(gè)階段,分別為標(biāo)記與顏色寄存、標(biāo)記狀態(tài)轉(zhuǎn)換、輸出數(shù)據(jù)生成。流水線處理示意圖如圖6所示。
FPGA從SDRAM中讀出數(shù)據(jù)時(shí)按照逐點(diǎn)逐行的次序進(jìn)行,處理完一行中的所有點(diǎn)像素?cái)?shù)據(jù)之后,再處理下一行數(shù)據(jù)。一般處理后的數(shù)據(jù)采取回寫(xiě)入幀存的方式供下一幀顯示,本文采取了一種更為高效的方式,F(xiàn)PGA處理完當(dāng)前幀像素?cái)?shù)據(jù)后不回寫(xiě)入幀存,而是直接輸出顯示,這種方式可以使輸出畫(huà)面減少一幀的延時(shí)。
2.2 標(biāo)記處理
標(biāo)記分為4種類(lèi)型:填充標(biāo)記、翻轉(zhuǎn)標(biāo)記、結(jié)束標(biāo)記、保持標(biāo)記。本文采用狀態(tài)機(jī)處理標(biāo)記信息,使用VHDL語(yǔ)言描述有限狀態(tài)機(jī),可以充分發(fā)揮硬件描述語(yǔ)言的抽象建模能力[8]。標(biāo)記處理狀態(tài)機(jī)包含5種狀態(tài),分別為當(dāng)前像素輸出狀態(tài)、填充狀態(tài)、翻轉(zhuǎn)狀態(tài)、保持當(dāng)前像素狀態(tài)和結(jié)束狀態(tài),狀態(tài)轉(zhuǎn)移圖如圖7所示。
每種狀態(tài)下FPGA的像素?cái)?shù)據(jù)處理結(jié)果如下:
(1)當(dāng)前像素輸出:輸出FPGA從SDRAM中讀出的當(dāng)前像素?cái)?shù)據(jù);
(2)填充:輸出FPGA寄存的填充像素?cái)?shù)據(jù);
(3)翻轉(zhuǎn):輸出FPGA寄存的翻轉(zhuǎn)像素?cái)?shù)據(jù);
(4)保持當(dāng)前像素:輸出FPGA從SDRAM中讀出的當(dāng)前像素?cái)?shù)據(jù);
(5)結(jié)束填充:最后一次輸出FPGA寄存的像素?cái)?shù)據(jù)。
FPGA每讀出一個(gè)像素?cái)?shù)據(jù),均根據(jù)像素標(biāo)記進(jìn)行狀態(tài)轉(zhuǎn)移操作。在當(dāng)前像素輸出狀態(tài)下,如果讀出的像素?zé)o標(biāo)記,則保持在當(dāng)前像素輸出狀態(tài);如果讀出的像素帶有填充標(biāo)記,則轉(zhuǎn)換到填充狀態(tài)。
填充狀態(tài)下,如讀出的像素?cái)?shù)據(jù)無(wú)標(biāo)記,則保持在填充狀態(tài)下;如果讀出的像素帶有結(jié)束標(biāo)記,則轉(zhuǎn)移到結(jié)束填充狀態(tài);如果讀出的像素?cái)?shù)據(jù)帶有翻轉(zhuǎn)標(biāo)記,則轉(zhuǎn)移到翻轉(zhuǎn)狀態(tài);如果讀出的像素?cái)?shù)據(jù)帶有保持標(biāo)記,則轉(zhuǎn)移到保持當(dāng)前像素狀態(tài)。
翻轉(zhuǎn)狀態(tài)下,如果讀出的像素?zé)o標(biāo)記,則保持在翻轉(zhuǎn)狀態(tài);如果讀出的像素帶有結(jié)束標(biāo)記,則轉(zhuǎn)移到結(jié)束填充狀態(tài);如果讀出的像素帶有保持標(biāo)記,則轉(zhuǎn)移到保持當(dāng)前像素狀態(tài)。
保持當(dāng)前像素狀態(tài)處理完畢后則根據(jù)跳轉(zhuǎn)前的狀態(tài)轉(zhuǎn)移到填充或翻轉(zhuǎn)狀態(tài)。如前一狀態(tài)是填充狀態(tài),則轉(zhuǎn)移到填充狀態(tài);如前一狀態(tài)是翻轉(zhuǎn)狀態(tài),則轉(zhuǎn)移到翻轉(zhuǎn)狀態(tài)。
結(jié)束填充狀態(tài)處理完畢后則轉(zhuǎn)移到當(dāng)前像素輸出狀態(tài)。
3 試驗(yàn)結(jié)果
本設(shè)計(jì)中ADSP-TS201的系統(tǒng)時(shí)鐘頻率為125 MHz,內(nèi)核工作頻率為系統(tǒng)時(shí)鐘的4倍頻,即500 MHz,SDRAM訪問(wèn)的時(shí)鐘頻率設(shè)置為125 MHz,與系統(tǒng)時(shí)鐘保持一致。分別采用FPGA硬件加速方式和DSP純軟件實(shí)現(xiàn)方式,生成圖5所示的分辨率為1 024×768的典型機(jī)載畫(huà)面,對(duì)圖4中TIME_DRAW信號(hào)的低電平時(shí)間進(jìn)行測(cè)試得到圖形生成時(shí)間,圖形生成時(shí)間的倒數(shù)即為圖形更新幀率。兩種實(shí)現(xiàn)方式下的效率對(duì)比如表1所示。
4 結(jié)論
本文針對(duì)機(jī)載座艙圖形生成與顯示系統(tǒng)的工作特點(diǎn),提出了一種適宜FPGA硬件實(shí)現(xiàn)的像素消隱和填充加速方法。對(duì)圖形生成算法的軟硬件任務(wù)進(jìn)行合理分工,DSP采用預(yù)置像素標(biāo)記的方式,將圖形生成算法中影響軟件執(zhí)行效率的畫(huà)面消隱和色塊填充運(yùn)算分配給FPGA由狀態(tài)機(jī)實(shí)現(xiàn)。運(yùn)用本文所述圖形生成硬件加速方法,繪制一幅典型的機(jī)載EFIS畫(huà)面,效率較純軟件實(shí)現(xiàn)方式可提升兩倍以上。
參考文獻(xiàn)
[1] MOIR I,SEABRIDEG A.軍用航空電子系統(tǒng)[M].吳漢平,譯.北京:電子工業(yè)出版社,2008.
[2] 邢新強(qiáng),李國(guó)超,肖鋒.機(jī)載座艙顯示發(fā)展趨勢(shì)分析[J].飛機(jī)設(shè)計(jì),2010,30(2):34-36.
[3] 李翠娟,陳川,張曉曦,等.幾種機(jī)載視頻技術(shù)要點(diǎn)分析與發(fā)展趨勢(shì)探討[J].航空電子技術(shù),2012,42(1):129-131,134.
[4] 孔全存,李成貴,張鳳卿.主飛行儀表圖形加速顯示系統(tǒng)的FPGA設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2007(4):62-64.
[5] 胡小龍,周俊明,夏顯忠.飛機(jī)座艙圖形顯示加速系統(tǒng)設(shè)計(jì)及FPGA實(shí)現(xiàn)[J].中南大學(xué)學(xué)報(bào),2008,39(5):1032-1048.
[6] SPITZER C R.數(shù)字航空電子技術(shù)(上)航空電子元件、軟件和功能件[M].謝文濤,譯.北京:航空工業(yè)出版社,2010.
[7] OISON T J.Hardware 3D graphics acceleration for mobile devices[C].Acoustics,Speech and Signal Processing,2008:5344-5347.
[8] 趙俊超.集成電路設(shè)計(jì)VHDL教程[M].北京:希望電子出版社,2002.