摘要:根據雷達光柵顯示器的應用要求,提出一種基於FPGA的數字式正餘弦函數產生器的解決方案。論述了如何用數字電路來實現正餘弦函數計算的過程。方案不但可以用於雷達光柵掃描顯示器的坐標變換器,而且適用於通訊領域等其它需要正餘弦函數的波形產生器的場合。
關鍵字:雷達:光柵掃描顯示器;正餘弦函數產生器;坐標轉換。
O 引言
通常雷達探測目標的回波是以極坐標的形式在雷達顯示器畫面上顯示的,在雷達天線轉動的各個方位上,顯示畫面都有相應的掃描線,也就是說:顯示器畫面的掃描是受天線方位角的正弦、餘弦函數調製的。正餘弦函數在許多的電子設備的波形產生器中都用到,實現的方法也有很多種。在雷達顯示器中由於要求的解析度較高,最常用的方法是採用「查表」的方法來得到函數值。這種方法用函數表存貯器代替大量的組合電路,在電路集成度不高的情況下不失為一種好的方法。隨著大規模集成電路技術的發展,尤其是近幾年來現場可編程門陣列(FPGA)規模及處理速度的提高,為我們設計數字式函數產生器提供了很好的環境。如果我們能夠把函數計算過程集成到FPGA中,這不但可以減少晶片的數量,提高設備的可靠性,而且給電路設計帶來了很大的靈活性。
1 基本原理
在電路上實現正餘弦函數的計算是建立在數學上的臺勞級數的基礎上的。既任意一個函數f(x)在x處可導,則該函數可用下式表示:
由此式我們可以得到如下的正餘弦函數的展開式:
為了簡化計算,方便電路設計,在保證所需精度的情況下,我們只選上面兩式中的前兩項。這樣就得下面簡化的函數展開式:
我們把上面的兩式引入到雷達顯示器的函數產生器,0設為當前天線角度,△0為天線轉動的增量值。
由上兩式可看出,如果知道0~π/2範圍內正餘弦值時,就可以恢復出整個周期的函數值.所以我們在計算函數值時,只要能得到0~π/2第一象限的值就可以把其它幾個象限的值恢復出來。
2 參數選取
根據實際顯示解析度的要求,我們選函數值的精度為1l位,360度方位解析度的精度13位。這樣就可得到90度方位角內的固有角度增量為2048個。式(4)、(5)中△0的值等於l/2n弧度。為了保證90度內△θ個數大於等於2048,選取n為11位。這樣△θ等於1/2048弧度。由此可算出90度範圍內△θ的個數為:(π/2)/(1/2048)=3217(個)。換句話說,如果要得到90度方位角的函數值,需要給函數產生器發3217個△θ。同理,要得到某個角度的函數值,只需發一定的△θ使函數產生器進行相應次數的計算就可得到這個函數值。
3 電路結構
函數產生器的電路實現實際上就是用電路實現式(4)和式(5)。要實現這兩個式子,關鍵是要實現△θSIN(θ)、△θ COS(θ)的計算。根據上述參數選取的要求,△θ的取值為1/2048,是一個常數。這樣就可以把△θ SIN(θ)、△θ COS(θ)的計算表示為SIN(θ)/2048、COS(θ)/2048。根據邏輯電路原理,我們只要把SIN(θ)、COS(θ)的值直接右移11為就可完成除以2048的計算。餘下的計算就是簡單的邏輯加減計算了。為了實現11位SIN(θ)、COS(θ)函數值的1l位右移這裡採用了22位的累加器。圖l是函數產生器的實現框圖。
從式(4)式(5)可以看出,要得到△θ方位增量的函數值還需要知道當前函數的初始值,我們知道SIN、COS函數在零點的初始值分別為「l」和「0」,這樣就可以在起始計算時用置「1」和置「O」信號使得函數的輸出得到正確的初始值,於是在相應的△θ脈衝的作用下進行計算就可得出函數值輸出了。下面是用VHDL語言描述的正餘弦函數產生器:――數字正餘弦函數產生器
由於我們選用的是近似公式,在計算中會出現累積誤差。誤差的累積最終會造成輸出
函數值的溢出錯誤,所以在本函數產生器累積誤差的修正也是一個關鍵。上面的VHDL描述已給出了簡單的修正方法,這裡就不在詳述了。如對函數產生器的精度有更高的要求,只需簡單地對相應的累加器的寬度進行修改即可。本函數產生器已在MaxplusII上模擬通過,並在雷達光柵顯示器上得到實際應用。