主飛行儀表圖形加速顯示系統(tǒng)的FPGA設(shè)計(jì)
主飛行顯示儀PFD(Primary Flight Display)包含了至關(guān)重要的安全飛行信息[1],它包括被安裝在與傳統(tǒng)“T”型配置的模擬儀表及相同屏幕位置上的飛行儀表。PFD通常直接在飛行員的正前方。隨著航空電子技術(shù)的快速發(fā)展,傳統(tǒng)的CRT顯示終端逐步被光柵式圖形顯示器LCD所替代。然而,光柵式圖形顯示系統(tǒng)在顯示圖形前,需要大量的各種運(yùn)算,如圖形掃描變換、反走樣、圖形旋轉(zhuǎn)及其他的特殊算法操作[2]。隨著顯示分辨率的提高,要處理的像素也越來越多,而所允許的處理時間卻受屏幕刷新率所限制。因此,怎樣實(shí)時生成并準(zhǔn)確顯示逼真圖形畫面,是對嵌入式PFD設(shè)計(jì)者的一個極大的挑戰(zhàn)。而基于PC機(jī)的傳統(tǒng)圖形生成和圖形顯示方式,又過于復(fù)雜且存在安全隱患。鑒于這種情況,參考文獻(xiàn)[3-5]雖然提出了一些解決方法,但實(shí)際效果并不是很明顯。本文采用基于儀器總線和擴(kuò)展總線的高速陣列信號處理板的設(shè)計(jì)模式,提出了一種基于硬件加速的PFD圖形顯示設(shè)計(jì)方法。該方法實(shí)現(xiàn)了圖形分層雙緩存交替切換、圖形填充、圖形合成和多通道DMA像素引擎,提高了PFD圖形生成和顯示的實(shí)時性和可靠性。文中以Quartus Ⅱ5.0 和Modelsim_Altera 5.6e為開發(fā)、仿真和綜合的平臺,在Altera公司的Cyclone Ⅱ系列FPGA上成功下載并運(yùn)行。
1 整體設(shè)計(jì)方案
在PFD顯示系統(tǒng)中,要同時顯示多個畫面,如姿態(tài)指引畫面、全羅盤畫面、導(dǎo)航地圖畫面及飛行視景等。每個畫面的處理算法都有其特殊性,如在姿態(tài)指引畫面中,顯示畫面需要根據(jù)飛機(jī)參數(shù)的變化實(shí)時更新,要求在地平線上填充藍(lán)色背景(藍(lán)色表示天空),而在地平線下填充綠色(綠色表示大地)。隨著飛機(jī)姿態(tài)的變化,地平線將在邊界線內(nèi)改變大小及方向,畫面上的藍(lán)色和綠色區(qū)域?qū)⒅匦路峙洌@種天地區(qū)域的動態(tài)重新填充是個非常費(fèi)時的工作。此外,姿態(tài)指引畫面還需要疊加一些字符(俯仰角度等),這些字符需要隨著地平線一同旋轉(zhuǎn)。可見,姿態(tài)指引畫面是電子主飛行儀中最為耗時的畫面之一[4]。而全羅盤畫面則側(cè)重于字符、線段的繪制和旋轉(zhuǎn)變換,反走樣運(yùn)算任務(wù)十分繁重。在導(dǎo)航地圖畫面生成和處理中,數(shù)據(jù)量和處理量都比較大,如位置顯示、飛行航跡生成等。針對不同圖形畫面的處理算法,本文設(shè)計(jì)了大規(guī)模陣列處理機(jī)模型,其主飛行儀表顯示系統(tǒng)整體設(shè)計(jì)框圖如圖1所示。該設(shè)計(jì)采用共享外部總線和分布式并行處理相結(jié)合的系統(tǒng)結(jié)構(gòu)。每個處理板通過儀器背板總線互相連接,提供了共享外部總線的結(jié)構(gòu);而相鄰板之間也有一套擴(kuò)展總線,提供了局部共享總線的結(jié)構(gòu)。這樣,板間既可通過背板總線直接交換數(shù)據(jù),也可以通過擴(kuò)展總線以DMA方式進(jìn)行數(shù)據(jù)傳輸。另外,每個板內(nèi),DSP通過局部總線連接一個容量較大的SDRAM作為全局共享外部存儲器,而FPGA通過局部總線連接一個容量較小的雙口RAM作為局部共享存儲器。這些全局和局部存儲器可以作為板間或DSP間數(shù)據(jù)交換的大型緩沖區(qū)。從圖形或圖像處理算法實(shí)現(xiàn)上考慮,這種結(jié)構(gòu)既可滿足流水線式的并行算法,也可以滿足分布式的并行算法(同一算法分布到多個處理器同時執(zhí)行)。
2 FPGA的設(shè)計(jì)
針對每塊板的不同處理功能,對FPGA進(jìn)行了不同的算法設(shè)計(jì)。以板0#為例作一介紹。圖2為FPGA的各種接口與系統(tǒng)其他部分的關(guān)系。
2.1 總線接口設(shè)計(jì)
系統(tǒng)有兩套總線:儀器總線和擴(kuò)展總線。儀器總線仿VXI總線設(shè)計(jì),采用雙排歐式插座設(shè)計(jì),模擬信號和數(shù)字信號分開在各自的插座之上,提高了電磁兼容性。模擬部分主要包括:飛行傳感器調(diào)理信號和系統(tǒng)模擬電源。數(shù)字部分采用基于多板分布式并行處理機(jī)制的共享式總線結(jié)構(gòu),主要包括:24位地址總線、16位數(shù)據(jù)總線、模塊功能選擇與控制總線、以及時鐘和觸發(fā)信號等;擴(kuò)展總線采用基于板間流水線處理機(jī)制的鏈?zhǔn)浇Y(jié)構(gòu),主要包括:20位地址總線、8位數(shù)據(jù)總線和控制總線??偩€接口中,讀寫控制、地址譯碼、中斷及DMA控制、時鐘和握手信號均由FPGA實(shí)現(xiàn)。限于篇幅,具體設(shè)計(jì)細(xì)節(jié)不再贅述。
2.2 幀存控制模塊
幀存控制模塊由交叉多路轉(zhuǎn)換器Cross-MUX、讀寫控制器和地址發(fā)生器組成。系統(tǒng)上電復(fù)位時,首先將變化頻繁、數(shù)據(jù)量小的前景與變化緩慢或不變、數(shù)據(jù)量大的背景圖形分開存儲于高速SRAM中,每3片SRAM組成全彩色(R、G、B)圖形幀存(這樣的圖形幀存共有3組)。其中,SRAM3為背景幀存,SRAM1和SRAM2為前景幀存。將前景幀存設(shè)計(jì)為雙緩存輪流切換方式,當(dāng)其中一組寫入生成圖形數(shù)據(jù)時,另一組則正被讀出數(shù)據(jù)到圖形合成模塊,圖形生成與顯示并行進(jìn)行。
2.3 圖形合成模塊
圖形合成模塊支持一層到四層的圖形合成,通過設(shè)置合適的圖形開始點(diǎn)和結(jié)束點(diǎn)(包括豎直和水平)來完成控制。公式(1)、(2)、(3)分別給出了其控制模型。式中,Plx為當(dāng)前l(fā)x層像素的灰度值,介于0~255之間;x為層
2.4 像素引擎模塊
像素引擎模塊產(chǎn)生像素時鐘輸入信號CLK、行同步信號/Hsync、場同步信號/Vsync、數(shù)據(jù)使能信號/DE、掃描方向選擇信號DPSR和R、G、B數(shù)據(jù)控制信號,控制LCD屏顯示全彩色圖形或圖像。
2.5 圖形填充模塊
圖形填充算法[6]的效率高低,直接影響到圖形顯示系統(tǒng)的加速程度。設(shè)計(jì)高效的填充算法猶為重要。本系統(tǒng)設(shè)計(jì)了一種基于形態(tài)學(xué)膨脹算子的多種子填充算法。膨脹算子具有天然并行運(yùn)算能力,易于FPGA硬件實(shí)現(xiàn),并且改進(jìn)算法后,填充速度大幅度提高。圖形填充模塊由結(jié)構(gòu)元素生成器、膨脹處理器和位置計(jì)數(shù)器組成。
2.5.1 結(jié)構(gòu)元素生成器
形態(tài)學(xué)圖形膨脹算法,是用結(jié)構(gòu)元素對圖形某鄰域窗口進(jìn)行的處理[7]。本設(shè)計(jì)采用的是3×3的方形結(jié)構(gòu)元素,每次需要讀取9個數(shù)據(jù)。為此,在FPGA內(nèi)部定義了寄存器和FIFO,將相關(guān)的圖形灰度數(shù)據(jù)進(jìn)行存儲,以使其在一個時鐘周期內(nèi),以流水線的方式形成填充所需要的一個結(jié)構(gòu)元素窗口。流水線的方式,加快了數(shù)據(jù)處理速度。結(jié)構(gòu)元素窗口形成模塊框圖如圖3所示。圖中,w22為結(jié)構(gòu)元素原點(diǎn),如圖4所示。
2.5.2 膨脹處理器
參考文獻(xiàn)[8]中膨脹處理器的設(shè)計(jì)方法是:從3×3窗口讀取的數(shù)據(jù)w11、w12、w33…w33中,挑出數(shù)值最大的元素并把它輸出,采用兩兩比較排序算法,共需要12級比較。由于多級比較器的傳輸遲滯,最大工作頻率受到限制。本系統(tǒng)中將多種子呈多條水平線分布,種子值為1,待填充區(qū)域?yàn)?,結(jié)構(gòu)元素的w22在滑動時,只與0或1比較,比較結(jié)果若為1,則直接實(shí)現(xiàn)8鄰域填充。這一方法簡化了比較過程,提高了系統(tǒng)帶寬和處理速度。在填充區(qū)域?yàn)?20×480像素時,其最大工作頻率可以達(dá)到80.12MHz(而參考文獻(xiàn)[8]在填充區(qū)域?yàn)?20×120像素時,其最大工作頻率為62.751MHz),加速效果比較明顯。
2.5.3 位置計(jì)數(shù)器
位置計(jì)數(shù)器根據(jù)行、列位置標(biāo)志來確定滑動窗口(結(jié)構(gòu)元素)在圖形數(shù)據(jù)陣列中的位置。圖形邊界根據(jù)位置計(jì)數(shù)器的值查表得到,邊界判斷比較迅速。
圖形填充模塊的狀態(tài)遷移圖如圖5所示。本設(shè)計(jì)根據(jù)需要設(shè)定了六個狀態(tài):Idle、ReadFIFO、Comp、WriteRAM、Boundary、Bd_P。這六個狀態(tài)根據(jù)窗口位置是否有種子而進(jìn)行轉(zhuǎn)換,從而完成圖形填充。
以上描述中,結(jié)構(gòu)元素與種子比較、像素點(diǎn)的填充、邊界判斷等內(nèi)容可有多種表達(dá)算法,特別是種子預(yù)置、邊界判斷和邊界填充,有待進(jìn)一步研究。
3 仿真及實(shí)驗(yàn)結(jié)果
圖6是仿真和實(shí)驗(yàn)結(jié)果。圖6(a)是圖形分層雙緩存交替切換、圖形填充、圖形合成和多通道DMA像素引擎的時序仿真圖;圖6(b)是實(shí)驗(yàn)結(jié)果圖。對800×600的屏,刷新率可達(dá)47.6Hz,即21ms/幀;對320×480的區(qū)域,填充一次約花費(fèi)2.86ms。
本文提出的基于儀器總線和擴(kuò)展總線的高速陣列信號處理板的整體設(shè)計(jì)模式,具有較強(qiáng)的圖形處理和數(shù)據(jù)吞吐能力。基于硬件加速的PFD圖形顯示設(shè)計(jì),提高了PFD圖形生成和顯示的實(shí)時性及可靠性,也顯著提高了圖形質(zhì)量,使顯示畫面更加逼真。經(jīng)設(shè)計(jì)和部分調(diào)試表明:該方案具有較好的工程實(shí)用性和易擴(kuò)展性。
評論