基于DSP與FPGA的全姿態(tài)指引儀的設(shè)計(jì)
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輸出顯示。
評(píng)論