文獻標識碼: A
文章編號: 0258-7998(2014)01-0090-03
由于激光陀螺具有高精度、可靠性好、性價比高、適合高動態環境等優點,廣泛用于國防工業、航天航海及工業控制等領域中的導航、雷達與制導技術,成為目前慣導發展的主流方向。高速、高精度及高可靠性解調激光陀螺輸出信號成為目前研究重點。
伴隨著FPGA芯片門數、工作頻率和數學運算能力的提升,尤其是其具有多任務和高速并行等特性優點,使得數字信號處理的FPGA得到普遍應用,使之成為激光陀螺高速解調的理想實現方案。
激光陀螺的輸出信號中包含外界輸入角速度、機械抖動角速度兩部分信息,而機械抖動信號又疊加了偽隨機噪聲。針對激光陀螺解調的濾波器需衰減特別大、精度特別高及后續處理方便等,本文提出了基于浮點運算來設計濾波器,來滿足信號濾波要求。
1 濾波器原理及參數分析
1.1 濾波器原理
常用數字濾波器有IIR和FIR兩種濾波方式。由于FIR濾波器通帶內輸出相位延時是線性的,而IIR是非線性的,并且具有良好的線性相位和高穩定性,在數字信號處理領域中應用廣泛,因此采用FIR濾波結構設計[1]。其輸入輸出函數如下:
1.2 濾波器參數設計
利用MATLAB中濾波器設計工具來設計滿足要求的FIR濾波器,在命令界面輸入FDATOOL打開濾波器設計環境[2]。
由于外界輸入陀螺角速率頻率在0~20 Hz,而需要濾掉的陀螺信號中的機械抖動信號和隨機噪聲分別達到300 Hz左右和1 kHz以上。因此設計FIR低通濾波器,規定截止頻率為100 Hz,采樣頻率為10 kHz。得到濾波系數。
將濾波系數的值a存入到FPGA內部的ROM中,而FPGA內部ROM初始化數據只支持整型二進制、十進制和十六進制三種數據類型,因此需要把浮點數a表示為其機器碼。由于FPGA中采用的是單精度浮點算法,而MATLAB中生成的濾波系數是雙精度浮點格式,因此還需要將雙精度浮點轉換為單精度浮點格式。在MATLAB中輸入如下命令得到a的十六進制單精度機器碼b:
>> b=single(a);
>> format hex
>> b
將b的值保存到后綴為.COE的文件中,用此文件來初始化FPGA內部RAM,并配置成只讀模式(ROM),得到FIR濾波器的系數ROM。
2 濾波器的FPGA實現
濾波系數定點化就是對濾波系數乘以一個較大的系數然后取整,用整數來近似替代浮點小數。濾波器的卷積過程也變成了定點運算,濾波結束后對濾波結果除以所乘系數值便可得到近似的濾波結果[3]。這種方法使得濾波器設計簡單、易于實現。但由于激光陀螺數據處理是一個對精度要求很高的領域,要達到這種高精度指標,需要把系數整形化倍數提高到226以上,這種誤差的引入對濾波精度有很大影響。若采用浮點運算,濾波系數也就采用浮點表示,不會因為整形化帶來誤差,輸入輸出范圍較大,輸出也是標準的計算機數據格式。但由于FPGA內部浮點運算需自己建立運算模塊,實現起來復雜,一般只用在高精度寬量程領域。
2.1 浮點數據格式
目前計算機中常用的浮點格式是IEEE的單精度32位浮點表示方式以及64位的雙精度浮點表示方式。在FPGA和DSP中,最常用的是32位的浮點表示方式。IEEE 754單精度浮點數可表示為如圖2所示格式,其中符號位s一位,階碼e占8位,為無符號數,但是e帶有127的偏移量,因此小數點的移動位數為e-127,尾數f占23位,為定點部分數值,但隱藏了1,位數表示值為1.f。
按照IEEE 浮點數計算標準[4],浮點數X=(-1)S×2e-127×1.f。本模塊中采用IEEE 32位單精度浮點格式,因此對于IEEE中擴展40位單精度和64位雙精度格式就不再進行討論。
2.2 浮點加法模塊設計
浮點數的加減運算過程較為復雜,需要對加法的兩操作數進行對階、尾數運算、結果規格化及舍入處理等。為了減少在加、減法器設計時的工作量,采用XILINX自帶的浮點加減運算IP核,通過較簡單的配置,便可以得到可用的浮點數加、減模塊。在FPGA程序設計時,可以通過交換操作數的方法來避開浮點的減法運算,因此只需生成浮點數加法模塊,生成的模塊例化圖如圖3所示。在ISE中對該模塊進行仿真,同樣采用50 MHz的主時鐘,仿真波形圖如圖4所示。
對該浮點乘法模塊進行仿真,以驗證乘法器的功能。由于XILINX仿真器中不能直接計算二進制數對應的浮點數大小,為了減少驗證時手動的計算量,采用與表1一樣的輸入數據,仿真波形如圖6所示。
從仿真結果中可得,三組輸入數據對應的輸出分別為:C6F50A00、C1360000、BD360000,對應的十進制數分別為:-31 365、-11.375、-0.032 714 843 75,對照表1可知計算結果正確,設計的浮點乘法器能夠精確進行浮點數的乘法運算,乘法周期大概為8個時鐘周期,模塊在50 MHz時鐘下工作正常。
2.4 濾波器系統設計
基于以上設計的浮點加法器和浮點乘法器,在FPGA中實現FIR濾波器。系統頂層原理圖如圖7所示。
系統控制邏輯控制firctrl模塊從wrom模塊中讀取浮點濾波系數、陀螺輸出計數值寫入firram模塊、計數值讀出firram以及浮點乘法模塊multfloat的運算,使得幾個模塊能在一定時序下穩定工作,firram模塊和firctrl模塊的配合實現了計數值的存儲及移位功能;浮點乘法器模塊還包括兩個18位×18位的乘法器的組合,通過乘法分解,實現了高位寬32位×32位乘法運算;累加器模塊addfloat負責將浮點乘法器輸出值進行累加并取位。整個系統完成了FIR濾波結構計數值和濾波系數的卷積過程。
3 實驗測試
3.1陀螺靜態實驗
在靜態(只有地球自轉)的情況下,利用本濾波器對機械抖動激光陀螺的輸出解調性能進行測試,在上位機中以1 s為單位進行數據分析和波形繪制,上位機測試界面截圖如圖8所示。
從圖8中可以看出,靜態時對激光陀螺信號解調結果值波動較小,10 S平均值為5.202 8。10 S方差為0.011 0,100 S方差為0.003 1。300 S方差為0.001,本濾波器能很好地完成激光陀螺輸出信號的解調,并且具有很高的精度和穩定性。
3.2 陀螺動態實驗
為了驗證專用濾波器的動態性能,需要在外界不同輸入角速率的情況下對進行測試。將激光陀螺放置在標準轉臺上,讓轉臺處于不同轉速下。測試過程中,轉臺會在每轉動360°時對其外輸出一個定角脈沖,脈沖寬度為2 μs左右,讓濾波結果在定角脈沖沒有到來時一直累加,當定角脈沖到來時向外發送一次數據,同時將累加器清零。在去除地球自轉影響后,測試結果如表2所示。
由表2測試數據中可以看出,在不同角速率的情況下,轉臺轉動360°激光陀螺的輸出值相等,由此可見本專用濾波器同時具有很高的精度和具有很大的動態處理范圍,能很好地完成對陀螺輸出數據的精確解調。
通過軟件仿真、靜態測試和動態測試,得到一系列測試數據。對這些數據進行分析,本濾波器具有很高的濾波精度和很寬的動態響應范圍。基于以上實驗及數據結果可知, 利用FPGA實現的浮點濾波算法,能滿足對激光陀螺信號精度和響應速度具有苛刻要求的應用場合。
參考文獻
[1] U.Meyer-Baese著.數字信號處理的FPGA實現[M].劉凌,譯. 北京:清華大學出版社,2011.
[2] 王宏. MATLAB 6.5及其在信號處理中的應用[M].北京:清華大學出版社,2004:220-251.
[3] 任晨綱.基于FPGA的激光陀螺捷聯慣導系統信號的檢測與處理[D]. 長沙:國防科技大學,2009.
[4] 呂妍紅,崔中興.環形激光陀螺信號分析與處理[J].傳感技術學報,2004(6).
[5] 崔云娟.基于FPGA的浮點運算器的設計及在雷達中的運用[D]. 西安:西安電子科技大學,2007.