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