基于DSP與FPGA的全姿態(tài)指引儀的設(shè)計(jì)
1 全姿態(tài)指引儀的功能與原理
飛行儀表的綜合顯示系統(tǒng)主要包括全姿態(tài)指引儀、電子航道羅盤、導(dǎo)航儀和視景儀等模塊化儀表設(shè)備,其中電子全姿態(tài)指引儀的顯示信息包括姿態(tài)指引信息、高度信息、速度信息和工作狀態(tài)信息等。它的主要任務(wù)就是以動(dòng)態(tài)圖形和字符的形式實(shí)時(shí)的顯示飛行參數(shù),以便飛行員準(zhǔn)確的獲取所需要的信息,并進(jìn)行及時(shí)安全的操縱。全姿態(tài)指引儀區(qū)域填充運(yùn)算主要針對(duì)內(nèi)部天地球區(qū)域,如圖1(a)所示。以中間分界線即地平線為界,上部藍(lán)色區(qū)域代表天空,下部褐色區(qū)域代表陸地,地平線位置和角度決定兩個(gè)區(qū)域的形狀,在每次畫面刷新時(shí)都要重新生成圖形,上面疊加的字符和線段也要跟隨地平線一起旋轉(zhuǎn)。地平線的位置和角度是由兩個(gè)飛行參數(shù)決定的:俯仰角和側(cè)滾角。如圖l(b)所示,俯仰角θ決定地平線離圖形中心的垂直距離h,側(cè)滾角α決定其傾斜角度。
2 系統(tǒng)硬件結(jié)構(gòu)設(shè)計(jì)
電子全姿態(tài)指引儀對(duì)實(shí)時(shí)性提出了嚴(yán)格的要求,其硬件系統(tǒng)結(jié)構(gòu)需要具有穩(wěn)定可靠、實(shí)時(shí)數(shù)據(jù)處理能力強(qiáng)的特點(diǎn)。隨著DSP與FPGA技術(shù)發(fā)展,DSP+FPGA系統(tǒng)結(jié)構(gòu)在圖形圖像處理的應(yīng)用場(chǎng)合突顯出很強(qiáng)的優(yōu)越性,兩種器件分別適合復(fù)雜算法運(yùn)算和硬件并行運(yùn)算與控制。因而考慮將圖形運(yùn)算分步處理,將輪廓生成的工作交給DSP,而區(qū)域填充由FPGA硬件完成,這便是軟硬件填充方法。
工作時(shí),輸入是多路傳感器信號(hào),經(jīng)A/D轉(zhuǎn)換為數(shù)字信號(hào),輸入到FPGAl中按照特定的算法對(duì)信號(hào)進(jìn)行預(yù)處理后,存入雙口RAMl中。DSP又通過雙口RAMl讀取預(yù)處理后的數(shù)據(jù),按照設(shè)定好的算法生成需要顯示的圖形與字符的輪廓,接著通過雙口RAM2傳給FPGA2,在FPGA2中完成字符圖形填充、反走樣、顯示等功能。DSP連接一個(gè)容量較大的SDRAM為全局共享外部存儲(chǔ)器,而FPGA通過連接一組容量較小的雙口RAM為局部共享存儲(chǔ)器。[!--empirenews.page--]
3 圖形信息分層處理與顯示技術(shù)
3.1 DSP畫面初始化圖形分層
圖形區(qū)域主要分為三種類型:一是背景區(qū)域,數(shù)據(jù)量大,但在圖形變化過程中不隨參數(shù)變化而改變;二是填充區(qū)域,數(shù)據(jù)量大,并且在圖形變化過程中隨著參數(shù)變化而不斷改變;三是動(dòng)態(tài)的字符與刻度信息,數(shù)據(jù)量小頻繁變化又不同于填充區(qū)域。根據(jù)圖形的特性,系統(tǒng)上電后首先進(jìn)行畫面的初始化,將圖形分為背景層、填充層和動(dòng)態(tài)字符層,背景層包括不隨參數(shù)改變的背景、刻度和字符等,填充層即天地球區(qū)域,動(dòng)態(tài)字符層包括動(dòng)態(tài)字符和直線區(qū)域。區(qū)域填充過程對(duì)動(dòng)態(tài)字符層的處理和背景層相同,因而將該層和背景層構(gòu)成的區(qū)域稱為非填充區(qū)域。圖形的分層靠圖形區(qū)域標(biāo)志位來區(qū)分,為0表示為非填充區(qū)域,為1表示為填充區(qū)域,區(qū)域標(biāo)志位后跟隨著該點(diǎn)顏色信息。在畫面初始化中將天地球輪廓上點(diǎn)的坐標(biāo)存為數(shù)組,以方便根據(jù)地平線的位置和角度來標(biāo)記天地球填充區(qū)域的邊界。在畫面初始化后的輪廓重新生成過程中,背景層便不再改動(dòng),動(dòng)態(tài)字符層信息因數(shù)據(jù)量小可每次都將改變了的部分擦除和重寫。DSP根據(jù)參數(shù)生成帶有填充區(qū)域邊界標(biāo)記信息的填充層與背景層和動(dòng)態(tài)字符層的疊加信息,就生成了一幅完整的圖形輪廓。圖2表示圖1(a)所示顯示畫面的分層結(jié)果,(a)、(b)和(c)分別為背景層、填充層和動(dòng)態(tài)字符層。
3.2 天地球區(qū)域的輪廓生成
因?yàn)樘斓厍虻奈恢煤托螤罟潭?,跟隨參數(shù)變化的是其區(qū)域的顏色信息,因而輪廓生成的任務(wù)就是根據(jù)變化的參數(shù)重新標(biāo)記填充區(qū)域邊界的顏色信息,以便FPGA根據(jù)邊界點(diǎn)的顏色信息確定區(qū)域內(nèi)像素點(diǎn)的顏色。在DSP初始化畫面生成天地球邊界時(shí),建立邊界數(shù)組存儲(chǔ)邊界點(diǎn)的位置以方便其顏色信息的標(biāo)記。在DSP接收到一組飛行參數(shù)后,根據(jù)俯仰角和側(cè)滾角重新賦給天地球的邊界和地平線以顏色信息。這種方法可以節(jié)省大量時(shí)間以滿足系統(tǒng)的實(shí)時(shí)性要求。
3.3 天地球區(qū)域的FPGA硬件填充
區(qū)域填充一般可以歸為兩大類:掃描轉(zhuǎn)換和種子填充。其中邊標(biāo)志填充算法和掃描線種子填充算法分別是這兩類中較為常用和高效的算法,邊標(biāo)志填充算法更適合于硬件和固件實(shí)現(xiàn)。故選用邊標(biāo)志填充算法完成區(qū)域填充,編程邏輯使用Verilog HDL實(shí)現(xiàn)。
具體思路如下:(1)DSP讀取雙口RAMl中存儲(chǔ)的已經(jīng)由FPGAl預(yù)處理了的信號(hào),生成一些直線、圓弧,如線段AB、弧線AC,在DSP進(jìn)行圖形生成的同時(shí),對(duì)需要填充的圖形進(jìn)行邊標(biāo)志的標(biāo)定,并通過雙口RAM2送至SRAMl(或SRAM2)中(說明需要參照結(jié)構(gòu)原理框圖),(2)填充工作由FPGA2實(shí)現(xiàn),F(xiàn)PGA2并行地從SRAM2(或SRAMl)讀入像素,并進(jìn)行標(biāo)志識(shí)別與操作,實(shí)現(xiàn)邊標(biāo)志填充算法。算法具體描述如下:
(1)設(shè)立邊標(biāo)志,該功能由DSP完成,是在生成天地球填充輪廓的過程中,同時(shí)給邊界和地平線做上標(biāo)記,畫面除了背景色以外需要填充藍(lán)色和褐色兩種顏色(一些特殊情況,如俯仰角大于90°或者小于-90°,則只需填充藍(lán)色或褐色)。因此天地球的填充需要設(shè)立藍(lán)色邊標(biāo)志和褐色邊標(biāo)志。
(2)像素操作,該功能由FPGA2完成,由布爾狀態(tài)量確定和輸出顏色確定兩部分組成。FPGA2把已打上邊標(biāo)志的圖形數(shù)據(jù)從幀存(SRAMl或SRAM2)中讀出,對(duì)每條掃描線,依從左到右的順序,逐個(gè)訪問該掃描線上的像素,對(duì)于像素具有藍(lán)色和綠色標(biāo)志的,分別定義一個(gè)布爾狀態(tài)量flag_blue和flag_green來指示當(dāng)前像素點(diǎn)的狀態(tài),若點(diǎn)在需要填充的藍(lán)色(或綠色)區(qū)域內(nèi),flag_blue(或flag_green)為真,反之,若點(diǎn)在填充區(qū)域外,flag_blue(或flag_green)為假;每當(dāng)當(dāng)前被訪問的是被打上藍(lán)色邊標(biāo)志edge_blue(或綠色邊標(biāo)志edge_green)的像素時(shí),fl-ag_blue(或flag_green)取反;對(duì)未打任何邊標(biāo)志edge_no的像素,flag_blue(或flag_green)不變。算法確定輸出顏色時(shí),對(duì)于所訪問的像素,根據(jù)flag_blue(flag_green)標(biāo)志把相應(yīng)的顏色Blue(Green)輸出顯示,否則,則直接把背景色Background輸出顯示。[!--empirenews.page--]
3.4 滾動(dòng)刻度和字符處理
代表俯仰角的刻度和度數(shù)都在天地球區(qū)域內(nèi)實(shí)時(shí)的滾動(dòng),它與填充區(qū)域外面的移動(dòng)刻度和字符的區(qū)別是:刻度和字符不能超出填充區(qū)域,否則會(huì)擦除其它天地球外的重要信息。對(duì)于這個(gè)問題可以通過以下方法解決:在初始化分層時(shí)標(biāo)記了的填充區(qū)域內(nèi),選擇一種與填充區(qū)域外的各種顏色和填充區(qū)域內(nèi)小飛機(jī)標(biāo)記顏色值不同的一種顏色數(shù)據(jù)來代表填充區(qū)域內(nèi)的滾動(dòng)字符和刻度。每次寫前判斷如果在填充區(qū)域外則不要寫,如果在填充區(qū)域內(nèi)且非標(biāo)志信息則寫出該字符或刻度,也就是如果刻度滾動(dòng)到區(qū)域外則不再顯示,但其位置信息仍然根據(jù)參數(shù)變動(dòng)。擦除時(shí),根據(jù)位置信息判斷像素點(diǎn)是不是移動(dòng)刻度和字符的顏色,如果是就擦成填充區(qū)域的原始數(shù)值,否則保持不變。這樣就實(shí)現(xiàn)了既不把字符寫道填充區(qū)域外,也不會(huì)將填充區(qū)域外的信息元擦除。其程序流程圖如圖3所示。
4 結(jié)束語
通過將圖形分層處理,只根據(jù)參數(shù)改變其填充層和動(dòng)態(tài)字符層信息,減少了DSP輪廓生成的運(yùn)算量。又按照硬件系統(tǒng)結(jié)構(gòu)特點(diǎn)將圖形運(yùn)算由DSP軟件標(biāo)記輪廓,FPGA硬件完成區(qū)域填充的方法,顯著加快了區(qū)域填充速度,使得畫面顯示取得效果良好。這種圖形處理方法對(duì)其它類似的圖形處理應(yīng)用場(chǎng)合具有很好的借鑒意義。