《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA的激光陀螺信號高速解調(diào)濾波設(shè)計
基于FPGA的激光陀螺信號高速解調(diào)濾波設(shè)計
來源:電子技術(shù)應(yīng)用2014年第1期
溫 鋒, 李錦明
中北大學(xué) 電子測試技術(shù)國家重點實驗室, 山西 太原030051
摘要: 在FPGA中實現(xiàn)DSP和計算機常用的IEEE單精度32位浮點表示方式,通過模塊化設(shè)計,能夠進行相關(guān)的浮點加法和乘法操作。利用內(nèi)部邏輯單元、乘法器、ROM、RAM等資源,經(jīng)過正確的邏輯控制和可靠的時序設(shè)計,設(shè)計了一個能對激光陀螺信號進行高速、精確濾波的專用濾波器,并且更簡便實現(xiàn)后續(xù)DSP或計算機對濾波數(shù)據(jù)的格式處理。
中圖分類號: TP274
文獻標(biāo)識碼: A
文章編號: 0258-7998(2014)01-0090-03
Design of laser gyro signal high-speed demodulation filter based on FPGA
Wen Feng, Li Jinming
National Key Laboratory for Electronic Measurement Technology, North University of China, Taiyuan 030051, China
Abstract: The IEEE 32-bit single-precision floating point is realized in FPGA which is commonly used in DSP and computer. Through the modular design, correlative floating-point addition and multiplication operation are realized. Using internal logic unit, multiplier, ROM, RAM and other resources, through reliable timing design and the correct logic control, a filter is designed, which realizes the high speed and high accuracy filtering of the laser gyro output signal. This design make it easier to process follow-up data format of filtering result by DSP or a computer.
Key words : laser gyro; floating point operation; digital filter; FPGA

     由于激光陀螺具有高精度、可靠性好、性價比高、適合高動態(tài)環(huán)境等優(yōu)點,廣泛用于國防工業(yè)、航天航海及工業(yè)控制等領(lǐng)域中的導(dǎo)航、雷達與制導(dǎo)技術(shù),成為目前慣導(dǎo)發(fā)展的主流方向。高速、高精度及高可靠性解調(diào)激光陀螺輸出信號成為目前研究重點。
   伴隨著FPGA芯片門數(shù)、工作頻率和數(shù)學(xué)運算能力的提升,尤其是其具有多任務(wù)和高速并行等特性優(yōu)點,使得數(shù)字信號處理的FPGA得到普遍應(yīng)用,使之成為激光陀螺高速解調(diào)的理想實現(xiàn)方案。
    激光陀螺的輸出信號中包含外界輸入角速度、機械抖動角速度兩部分信息,而機械抖動信號又疊加了偽隨機噪聲。針對激光陀螺解調(diào)的濾波器需衰減特別大、精度特別高及后續(xù)處理方便等,本文提出了基于浮點運算來設(shè)計濾波器,來滿足信號濾波要求。
1 濾波器原理及參數(shù)分析
1.1 濾波器原理

     常用數(shù)字濾波器有IIR和FIR兩種濾波方式。由于FIR濾波器通帶內(nèi)輸出相位延時是線性的,而IIR是非線性的,并且具有良好的線性相位和高穩(wěn)定性,在數(shù)字信號處理領(lǐng)域中應(yīng)用廣泛,因此采用FIR濾波結(jié)構(gòu)設(shè)計[1]。其輸入輸出函數(shù)如下:

1.2 濾波器參數(shù)設(shè)計
    利用MATLAB中濾波器設(shè)計工具來設(shè)計滿足要求的FIR濾波器,在命令界面輸入FDATOOL打開濾波器設(shè)計環(huán)境[2]。
    由于外界輸入陀螺角速率頻率在0~20 Hz,而需要濾掉的陀螺信號中的機械抖動信號和隨機噪聲分別達到300 Hz左右和1 kHz以上。因此設(shè)計FIR低通濾波器,規(guī)定截止頻率為100 Hz,采樣頻率為10 kHz。得到濾波系數(shù)。
    將濾波系數(shù)的值a存入到FPGA內(nèi)部的ROM中,而FPGA內(nèi)部ROM初始化數(shù)據(jù)只支持整型二進制、十進制和十六進制三種數(shù)據(jù)類型,因此需要把浮點數(shù)a表示為其機器碼。由于FPGA中采用的是單精度浮點算法,而MATLAB中生成的濾波系數(shù)是雙精度浮點格式,因此還需要將雙精度浮點轉(zhuǎn)換為單精度浮點格式。在MATLAB中輸入如下命令得到a的十六進制單精度機器碼b:
    >> b=single(a);
    >> format hex
    >> b
     將b的值保存到后綴為.COE的文件中,用此文件來初始化FPGA內(nèi)部RAM,并配置成只讀模式(ROM),得到FIR濾波器的系數(shù)ROM。
2 濾波器的FPGA實現(xiàn)
    濾波系數(shù)定點化就是對濾波系數(shù)乘以一個較大的系數(shù)然后取整,用整數(shù)來近似替代浮點小數(shù)。濾波器的卷積過程也變成了定點運算,濾波結(jié)束后對濾波結(jié)果除以所乘系數(shù)值便可得到近似的濾波結(jié)果[3]。這種方法使得濾波器設(shè)計簡單、易于實現(xiàn)。但由于激光陀螺數(shù)據(jù)處理是一個對精度要求很高的領(lǐng)域,要達到這種高精度指標(biāo),需要把系數(shù)整形化倍數(shù)提高到226以上,這種誤差的引入對濾波精度有很大影響。若采用浮點運算,濾波系數(shù)也就采用浮點表示,不會因為整形化帶來誤差,輸入輸出范圍較大,輸出也是標(biāo)準(zhǔn)的計算機數(shù)據(jù)格式。但由于FPGA內(nèi)部浮點運算需自己建立運算模塊,實現(xiàn)起來復(fù)雜,一般只用在高精度寬量程領(lǐng)域。
2.1 浮點數(shù)據(jù)格式
    目前計算機中常用的浮點格式是IEEE的單精度32位浮點表示方式以及64位的雙精度浮點表示方式。在FPGA和DSP中,最常用的是32位的浮點表示方式。IEEE 754單精度浮點數(shù)可表示為如圖2所示格式,其中符號位s一位,階碼e占8位,為無符號數(shù),但是e帶有127的偏移量,因此小數(shù)點的移動位數(shù)為e-127,尾數(shù)f占23位,為定點部分?jǐn)?shù)值,但隱藏了1,位數(shù)表示值為1.f。

    按照IEEE 浮點數(shù)計算標(biāo)準(zhǔn)[4],浮點數(shù)X=(-1)S×2e-127×1.f。本模塊中采用IEEE 32位單精度浮點格式,因此對于IEEE中擴展40位單精度和64位雙精度格式就不再進行討論。
2.2 浮點加法模塊設(shè)計
    浮點數(shù)的加減運算過程較為復(fù)雜,需要對加法的兩操作數(shù)進行對階、尾數(shù)運算、結(jié)果規(guī)格化及舍入處理等。為了減少在加、減法器設(shè)計時的工作量,采用XILINX自帶的浮點加減運算IP核,通過較簡單的配置,便可以得到可用的浮點數(shù)加、減模塊。在FPGA程序設(shè)計時,可以通過交換操作數(shù)的方法來避開浮點的減法運算,因此只需生成浮點數(shù)加法模塊,生成的模塊例化圖如圖3所示。在ISE中對該模塊進行仿真,同樣采用50 MHz的主時鐘,仿真波形圖如圖4所示。

   
    對該浮點乘法模塊進行仿真,以驗證乘法器的功能。由于XILINX仿真器中不能直接計算二進制數(shù)對應(yīng)的浮點數(shù)大小,為了減少驗證時手動的計算量,采用與表1一樣的輸入數(shù)據(jù),仿真波形如圖6所示。

 

 

    從仿真結(jié)果中可得,三組輸入數(shù)據(jù)對應(yīng)的輸出分別為:C6F50A00、C1360000、BD360000,對應(yīng)的十進制數(shù)分別為:-31 365、-11.375、-0.032 714 843 75,對照表1可知計算結(jié)果正確,設(shè)計的浮點乘法器能夠精確進行浮點數(shù)的乘法運算,乘法周期大概為8個時鐘周期,模塊在50 MHz時鐘下工作正常。
2.4 濾波器系統(tǒng)設(shè)計
    基于以上設(shè)計的浮點加法器和浮點乘法器,在FPGA中實現(xiàn)FIR濾波器。系統(tǒng)頂層原理圖如圖7所示。

    系統(tǒng)控制邏輯控制firctrl模塊從wrom模塊中讀取浮點濾波系數(shù)、陀螺輸出計數(shù)值寫入firram模塊、計數(shù)值讀出firram以及浮點乘法模塊multfloat的運算,使得幾個模塊能在一定時序下穩(wěn)定工作,firram模塊和firctrl模塊的配合實現(xiàn)了計數(shù)值的存儲及移位功能;浮點乘法器模塊還包括兩個18位×18位的乘法器的組合,通過乘法分解,實現(xiàn)了高位寬32位×32位乘法運算;累加器模塊addfloat負(fù)責(zé)將浮點乘法器輸出值進行累加并取位。整個系統(tǒng)完成了FIR濾波結(jié)構(gòu)計數(shù)值和濾波系數(shù)的卷積過程。
3 實驗測試
3.1陀螺靜態(tài)實驗

    在靜態(tài)(只有地球自轉(zhuǎn))的情況下,利用本濾波器對機械抖動激光陀螺的輸出解調(diào)性能進行測試,在上位機中以1 s為單位進行數(shù)據(jù)分析和波形繪制,上位機測試界面截圖如圖8所示。

    從圖8中可以看出,靜態(tài)時對激光陀螺信號解調(diào)結(jié)果值波動較小,10 S平均值為5.202 8。10 S方差為0.011 0,100 S方差為0.003 1。300 S方差為0.001,本濾波器能很好地完成激光陀螺輸出信號的解調(diào),并且具有很高的精度和穩(wěn)定性。
3.2 陀螺動態(tài)實驗
    為了驗證專用濾波器的動態(tài)性能,需要在外界不同輸入角速率的情況下對進行測試。將激光陀螺放置在標(biāo)準(zhǔn)轉(zhuǎn)臺上,讓轉(zhuǎn)臺處于不同轉(zhuǎn)速下。測試過程中,轉(zhuǎn)臺會在每轉(zhuǎn)動360°時對其外輸出一個定角脈沖,脈沖寬度為2 μs左右,讓濾波結(jié)果在定角脈沖沒有到來時一直累加,當(dāng)定角脈沖到來時向外發(fā)送一次數(shù)據(jù),同時將累加器清零。在去除地球自轉(zhuǎn)影響后,測試結(jié)果如表2所示。

   由表2測試數(shù)據(jù)中可以看出,在不同角速率的情況下,轉(zhuǎn)臺轉(zhuǎn)動360°激光陀螺的輸出值相等,由此可見本專用濾波器同時具有很高的精度和具有很大的動態(tài)處理范圍,能很好地完成對陀螺輸出數(shù)據(jù)的精確解調(diào)。
    通過軟件仿真、靜態(tài)測試和動態(tài)測試,得到一系列測試數(shù)據(jù)。對這些數(shù)據(jù)進行分析,本濾波器具有很高的濾波精度和很寬的動態(tài)響應(yīng)范圍?;谝陨蠈嶒灱皵?shù)據(jù)結(jié)果可知, 利用FPGA實現(xiàn)的浮點濾波算法,能滿足對激光陀螺信號精度和響應(yīng)速度具有苛刻要求的應(yīng)用場合。
參考文獻
[1] U.Meyer-Baese著.數(shù)字信號處理的FPGA實現(xiàn)[M].劉凌,譯. 北京:清華大學(xué)出版社,2011.
[2] 王宏. MATLAB 6.5及其在信號處理中的應(yīng)用[M].北京:清華大學(xué)出版社,2004:220-251.
[3] 任晨綱.基于FPGA的激光陀螺捷聯(lián)慣導(dǎo)系統(tǒng)信號的檢測與處理[D]. 長沙:國防科技大學(xué),2009.
[4] 呂妍紅,崔中興.環(huán)形激光陀螺信號分析與處理[J].傳感技術(shù)學(xué)報,2004(6).
[5] 崔云娟.基于FPGA的浮點運算器的設(shè)計及在雷達中的運用[D]. 西安:西安電子科技大學(xué),2007.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。