基于DSP與FPGA的全姿態(tài)指引儀圖形顯示系統(tǒng)
3.3 天地球區(qū)域的FPGA硬件填充
區(qū)域填充一般可以歸為兩大類:掃描轉換和種子填充。其中邊標志填充算法和掃描線種子填充算法分別是這兩類中較為常用和高效的算法,邊標志填充算法更適合于硬件和固件實現(xiàn)。故選用邊標志填充算法完成區(qū)域填充,編程邏輯使用Verilog HDL實現(xiàn)。
具體思路如下:(1)DSP讀取雙口RAMl中存儲的已經由FPGAl預處理了的信號,生成一些直線、圓弧,如線段AB、弧線AC,在DSP進行圖形生成的同時,對需要填充的圖形進行邊標志的標定,并通過雙口RAM2送至SRAMl(或SRAM2)中(說明需要參照結構原理框圖),(2)填充工作由FPGA2實現(xiàn),F(xiàn)PGA2并行地從SRAM2(或SRAMl)讀入像素,并進行標志識別與操作,實現(xiàn)邊標志填充算法。算法具體描述如下:
(1)設立邊標志,該功能由DSP完成,是在生成天地球填充輪廓的過程中,同時給邊界和地平線做上標記,畫面除了背景色以外需要填充藍色和褐色兩種顏色(一些特殊情況,如俯仰角大于90°或者小于-90°,則只需填充藍色或褐色)。因此天地球的填充需要設立藍色邊標志和褐色邊標志。
(2)像素操作,該功能由FPGA2完成,由布爾狀態(tài)量確定和輸出顏色確定兩部分組成。FPGA2把已打上邊標志的圖形數(shù)據(jù)從幀存(SRAMl或SRAM2)中讀出,對每條掃描線,依從左到右的順序,逐個訪問該掃描線上的像素,對于像素具有藍色和綠色標志的,分別定義一個布爾狀態(tài)量flag_Blue和flag_Green來指示當前像素點的狀態(tài),若點在需要填充的藍色(或綠色)區(qū)域內,flag_blue(或flag_green)為真,反之,若點在填充區(qū)域外,flag_blue(或flag_green)為假;每當當前被訪問的是被打上藍色邊標志edge_blue(或綠色邊標志edge_green)的像素時,fl-ag_blue(或flag_green)取反;對未打任何邊標志edge_no的像素,flag_blue(或flag_green)不變。算法確定輸出顏色時,對于所訪問的像素,根據(jù)flag_blue(flag_green)標志把相應的顏色Blue(Green)輸出顯示,否則,則直接把背景色Background輸出顯示。
3.4 滾動刻度和字符處理
代表俯仰角的刻度和度數(shù)都在天地球區(qū)域內實時的滾動,它與填充區(qū)域外面的移動刻度和字符的區(qū)別是:刻度和字符不能超出填充區(qū)域,否則會擦除其它天地球外的重要信息。對于這個問題可以通過以下方法解決:在初始化分層時標記了的填充區(qū)域內,選擇一種與填充區(qū)域外的各種顏色和填充區(qū)域內小飛機標記顏色值不同的一種顏色數(shù)據(jù)來代表填充區(qū)域內的滾動字符和刻度。每次寫前判斷如果在填充區(qū)域外則不要寫,如果在填充區(qū)域內且非標志信息則寫出該字符或刻度,也就是如果刻度滾動到區(qū)域外則不再顯示,但其位置信息仍然根據(jù)參數(shù)變動。擦除時,根據(jù)位置信息判斷像素點是不是移動刻度和字符的顏色,如果是就擦成填充區(qū)域的原始數(shù)值,否則保持不變。這樣就實現(xiàn)了既不把字符寫道填充區(qū)域外,也不會將填充區(qū)域外的信息元擦除。其程序流程圖如圖3所示。
4 結束語
通過將圖形分層處理,只根據(jù)參數(shù)改變其填充層和動態(tài)字符層信息,減少了DSP輪廓生成的運算量。又按照硬件系統(tǒng)結構特點將圖形運算由DSP軟件標記輪廓,F(xiàn)PGA硬件完成區(qū)域填充的方法,顯著加快了區(qū)域填充速度,使得畫面顯示取得效果良好。這種圖形處理方法對其它類似的圖形處理應用場合具有很好的借鑒意義。
評論