《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的激光陀螺信號(hào)高速解調(diào)濾波設(shè)計(jì)
基于FPGA的激光陀螺信號(hào)高速解調(diào)濾波設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2014年第1期
溫 鋒, 李錦明
中北大學(xué) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,, 山西 太原030051
摘要: 在FPGA中實(shí)現(xiàn)DSP和計(jì)算機(jī)常用的IEEE單精度32位浮點(diǎn)表示方式,通過模塊化設(shè)計(jì),,能夠進(jìn)行相關(guān)的浮點(diǎn)加法和乘法操作,。利用內(nèi)部邏輯單元、乘法器,、ROM,、RAM等資源,經(jīng)過正確的邏輯控制和可靠的時(shí)序設(shè)計(jì),,設(shè)計(jì)了一個(gè)能對(duì)激光陀螺信號(hào)進(jìn)行高速,、精確濾波的專用濾波器,,并且更簡(jiǎn)便實(shí)現(xiàn)后續(xù)DSP或計(jì)算機(jī)對(duì)濾波數(shù)據(jù)的格式處理,。
中圖分類號(hào): TP274
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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

     由于激光陀螺具有高精度、可靠性好,、性價(jià)比高,、適合高動(dòng)態(tài)環(huán)境等優(yōu)點(diǎn),廣泛用于國(guó)防工業(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ī)噪聲,。針對(duì)激光陀螺解調(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)化就是對(duì)濾波系數(shù)乘以一個(gè)較大的系數(shù)然后取整,,用整數(shù)來近似替代浮點(diǎn)小數(shù),。濾波器的卷積過程也變成了定點(diǎn)運(yùn)算,濾波結(jié)束后對(duì)濾波結(jié)果除以所乘系數(shù)值便可得到近似的濾波結(jié)果[3],。這種方法使得濾波器設(shè)計(jì)簡(jiǎn)單,、易于實(shí)現(xiàn)。但由于激光陀螺數(shù)據(jù)處理是一個(gè)對(duì)精度要求很高的領(lǐng)域,要達(dá)到這種高精度指標(biāo),,需要把系數(shù)整形化倍數(shù)提高到226以上,,這種誤差的引入對(duì)濾波精度有很大影響。若采用浮點(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)格式,,因此對(duì)于IEEE中擴(kuò)展40位單精度和64位雙精度格式就不再進(jìn)行討論。
2.2 浮點(diǎn)加法模塊設(shè)計(jì)
    浮點(diǎn)數(shù)的加減運(yùn)算過程較為復(fù)雜,,需要對(duì)加法的兩操作數(shù)進(jìn)行對(duì)階,、尾數(shù)運(yùn)算,、結(jié)果規(guī)格化及舍入處理等,。為了減少在加、減法器設(shè)計(jì)時(shí)的工作量,,采用XILINX自帶的浮點(diǎn)加減運(yùn)算IP核,,通過較簡(jiǎn)單的配置,便可以得到可用的浮點(diǎn)數(shù)加,、減模塊,。在FPGA程序設(shè)計(jì)時(shí),可以通過交換操作數(shù)的方法來避開浮點(diǎn)的減法運(yùn)算,因此只需生成浮點(diǎn)數(shù)加法模塊,,生成的模塊例化圖如圖3所示,。在ISE中對(duì)該模塊進(jìn)行仿真,同樣采用50 MHz的主時(shí)鐘,,仿真波形圖如圖4所示,。

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

 

 

    從仿真結(jié)果中可得,三組輸入數(shù)據(jù)對(duì)應(yīng)的輸出分別為:C6F50A00,、C1360000,、BD360000,對(duì)應(yīng)的十進(jìn)制數(shù)分別為:-31 365,、-11.375,、-0.032 714 843 75,對(duì)照表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)測(cè)試
3.1陀螺靜態(tài)實(shí)驗(yàn)

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

    從圖8中可以看出,靜態(tài)時(shí)對(duì)激光陀螺信號(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)性能,,需要在外界不同輸入角速率的情況下對(duì)進(jìn)行測(cè)試。將激光陀螺放置在標(biāo)準(zhǔn)轉(zhuǎn)臺(tái)上,,讓轉(zhuǎn)臺(tái)處于不同轉(zhuǎn)速下,。測(cè)試過程中,轉(zhuǎn)臺(tái)會(huì)在每轉(zhuǎn)動(dòng)360°時(shí)對(duì)其外輸出一個(gè)定角脈沖,,脈沖寬度為2 μs左右,,讓濾波結(jié)果在定角脈沖沒有到來時(shí)一直累加,當(dāng)定角脈沖到來時(shí)向外發(fā)送一次數(shù)據(jù),,同時(shí)將累加器清零,。在去除地球自轉(zhuǎn)影響后,測(cè)試結(jié)果如表2所示,。

   由表2測(cè)試數(shù)據(jù)中可以看出,,在不同角速率的情況下,轉(zhuǎn)臺(tái)轉(zhuǎn)動(dòng)360°激光陀螺的輸出值相等,,由此可見本專用濾波器同時(shí)具有很高的精度和具有很大的動(dòng)態(tài)處理范圍,,能很好地完成對(duì)陀螺輸出數(shù)據(jù)的精確解調(diào)。
    通過軟件仿真,、靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試,,得到一系列測(cè)試數(shù)據(jù)。對(duì)這些數(shù)據(jù)進(jìn)行分析,,本濾波器具有很高的濾波精度和很寬的動(dòng)態(tài)響應(yīng)范圍,。基于以上實(shí)驗(yàn)及數(shù)據(jù)結(jié)果可知, 利用FPGA實(shí)現(xiàn)的浮點(diǎn)濾波算法,,能滿足對(duì)激光陀螺信號(hào)精度和響應(yīng)速度具有苛刻要求的應(yīng)用場(chǎ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)的檢測(cè)與處理[D]. 長(zhǎng)沙:國(guó)防科技大學(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.

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