基于FPGA的Kalman濾波器的設(shè)計(jì)
由于資源的限制,濾波中的運(yùn)算過(guò)程只能以有限的精度進(jìn)行,但過(guò)低的精度容易引起濾波發(fā)散,同時(shí)為了兼顧A/D高達(dá)24 bit的分辨率精度,在IEEE754單精度浮點(diǎn)數(shù)格式的基礎(chǔ)上按照浮點(diǎn)表示的原則做了改造,將指數(shù)部分減少到6位,尾數(shù)增加到25位,25位尾數(shù)可以完全表示A/D輸出的24位采樣值,并削弱舍入誤差的影響,其格式如圖7所示。本文引用地址:http://www.ex-cimer.com/article/191740.htm
本系統(tǒng)對(duì)處理速度的要求并不高,運(yùn)算部件的設(shè)計(jì)并不考慮速度優(yōu)化。
加法器按以下通用的規(guī)則設(shè)計(jì):
(1)階碼相減:兩個(gè)操作數(shù)階碼相減,求得階差d=|Ea-Eb|;
(2)尾數(shù)對(duì)齊:階碼小的操作數(shù)的尾數(shù)右移d位;
(3)尾數(shù)相加:完成移位處理后的尾數(shù)相加運(yùn)算;
(4)轉(zhuǎn)換:尾數(shù)相加的結(jié)果為負(fù)數(shù)時(shí),轉(zhuǎn)換為符號(hào)尾數(shù)的表示方式;
(5)前導(dǎo)0/1的判定:判定由于減法結(jié)果產(chǎn)生的左移位數(shù),對(duì)于加法判定是否右移一位或不移,對(duì)前導(dǎo)0/1判定的結(jié)果進(jìn)行編碼以驅(qū)動(dòng)規(guī)格化移位;
(6)規(guī)格化:規(guī)格化有效位并且根據(jù)移位的方向和位數(shù)修改最終的階碼Ef;
(7)舍入:根據(jù)IEEE標(biāo)準(zhǔn)判定最終結(jié)果的舍入,如果需要入,則最末有效位加1;如舍入引起溢出,則需要有效位右移1位,同時(shí)階碼Ef加1。
乘法器的設(shè)計(jì)相對(duì)簡(jiǎn)單,與加法器一樣采用簡(jiǎn)單的設(shè)計(jì)規(guī)則:
(1)指數(shù)相加:完成兩個(gè)操作數(shù)的指數(shù)相加運(yùn)算;
(2)尾數(shù)調(diào)整:將尾數(shù)f調(diào)整為l/f的補(bǔ)碼格式;
(3)尾數(shù)相乘:完成兩個(gè)操作數(shù)的尾數(shù)相乘運(yùn)算;
(4)規(guī)格化:根據(jù)尾數(shù)運(yùn)算結(jié)果調(diào)整指數(shù)位,對(duì)尾數(shù)進(jìn)行舍入截位操作,規(guī)格化輸出結(jié)果。
采用Altera提供的IP核,除法器能完成IEEE754單精度除法運(yùn)算。數(shù)據(jù)進(jìn)入該除法器前需要將自定義的浮點(diǎn)格式的階碼擴(kuò)展為8位加上95,尾數(shù)右移兩位,轉(zhuǎn)換為標(biāo)準(zhǔn)單精度浮點(diǎn),計(jì)算結(jié)果再由標(biāo)準(zhǔn)單精度浮點(diǎn)的按相反的方法轉(zhuǎn)換為自定義浮點(diǎn)。
文中硬件編程語(yǔ)言是用Verilog實(shí)現(xiàn)的。
4 實(shí)測(cè)結(jié)果分析與結(jié)論
從系統(tǒng)輸出數(shù)據(jù)中隨機(jī)抽取一段數(shù)據(jù)用Matlab分析,其結(jié)果如圖8所示。實(shí)線C表示的是濾波前的噪聲:虛線B表示的是濾波后的噪聲。很容易看出經(jīng)過(guò)濾波后噪聲降低了很多。仿真與實(shí)測(cè)對(duì)比分析如表1所示。
5 結(jié)束語(yǔ)
卡爾曼濾波器在很多領(lǐng)域具有重要的作用,可以實(shí)現(xiàn)數(shù)字信號(hào)處理功能,并能滿足實(shí)時(shí)性的要求。用FPGA實(shí)現(xiàn)Kalman濾波過(guò)程,實(shí)現(xiàn)簡(jiǎn)便、成本較低、濾波效果好,被廣泛應(yīng)用于圖像視頻、陀螺慣導(dǎo)去噪、電子羅盤、雷達(dá)接收機(jī)目標(biāo)跟蹤處理、目標(biāo)預(yù)測(cè)等圖像、數(shù)據(jù)采集與處理領(lǐng)域。
評(píng)論