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