Kaiman濾波算法在FPGA上的設(shè)計(jì)與實(shí)現(xiàn)
2.2 有限狀態(tài)機(jī)的運(yùn)用
有限狀態(tài)機(jī)是一種用來進(jìn)行對(duì)象行為建模的工具,其作用主要是描述對(duì)象在它的生命周期內(nèi)所經(jīng)歷的狀態(tài)序列,以及如何響應(yīng)來自外界的各種事件。Kalman濾波中,由于解算過程中的邏輯關(guān)系,需要分步進(jìn)行,所以需要用有限狀態(tài)機(jī)來控制各步的轉(zhuǎn)移。根據(jù)各步間的邏輯關(guān)系,可以將其大致分為4個(gè)狀態(tài):S0,S1,S2和S3狀態(tài)。其中,S0為初始化狀態(tài),之后進(jìn)入S1狀態(tài),計(jì)算和Pk+1/k,然后進(jìn)入S2狀態(tài),計(jì)算Kk+1,最后計(jì)算解算結(jié)果和Pk+1/k+1。計(jì)算Kk+1時(shí),也需要將其分步實(shí)現(xiàn)。若將各步的解算歸于同一個(gè)狀態(tài)機(jī)內(nèi),則顯得邏輯復(fù)雜。為使得各步的邏輯更加清晰,并且增加狀態(tài)機(jī)的穩(wěn)定性和安全性,使用交互狀態(tài)機(jī),如圖2所示。
圖2中,狀態(tài)機(jī)的交互過程中,沒置標(biāo)志信號(hào)enble和finish分別用于啟動(dòng)和終止計(jì)算K值的狀態(tài),初始化時(shí)其值均為0。當(dāng)計(jì)算完第一步進(jìn)入S2時(shí),enble置為1,啟動(dòng)計(jì)算K值的狀態(tài);當(dāng)K值計(jì)算完成時(shí),finish置為1,進(jìn)入S3,enble和finish置為初值0,為下次狀態(tài)交互做準(zhǔn)備。進(jìn)入原狀態(tài)機(jī)繼續(xù)進(jìn)行下面的計(jì)算。
書寫狀態(tài)機(jī)時(shí),采用三段式寫法,一個(gè)模塊采用同步時(shí)序描述狀態(tài)轉(zhuǎn)移,另一個(gè)模塊采用組合邏輯判斷轉(zhuǎn)移條件并進(jìn)行狀態(tài)轉(zhuǎn)移,第三個(gè)模塊實(shí)現(xiàn)同步輸出。三段式描述方法的狀態(tài)機(jī),做到了同步寄存器輸出,消除了組合邏輯輸出的不穩(wěn)定和毛刺現(xiàn)象,而且更利于時(shí)序路徑分組,綜合與布局布線效果更佳。
2.3 資源分時(shí)復(fù)用
FPGA設(shè)計(jì)中,資源與速度是個(gè)矛盾體。FPGA中的資源是有限的,所以必須考慮資源的節(jié)省問題。由于Kalman濾波可以分3步進(jìn)行,所以每一步可以利用其它步中相同的資源。此種方法可以在不降低總體速度的情況下,減少資源利用量;而對(duì)于階次較高的Kalman濾波,此方法可以最大限度的增加并行性,提高速度。該設(shè)計(jì)中用到大量的乘法器、加法器以及CLB等資源,計(jì)算第一步時(shí)用到的資源會(huì)在第二步和第三步中用到,即同一資源被用到3次。以其中用到的某乘法器的分時(shí)復(fù)用為例,其輸入端口在不同的時(shí)刻可以有不同的賦值,實(shí)現(xiàn)語句如下:
3 性能對(duì)比及分析
為驗(yàn)證本文研究利用FPGA實(shí)現(xiàn)Kalman濾波算法的性能,采用二階Kalman濾波器進(jìn)行實(shí)際性能對(duì)比測(cè)試。建立數(shù)學(xué)模型如下:選取狀態(tài)轉(zhuǎn)移矩陣,無控制量,即控制陣Uk=0,噪聲系數(shù)矩陣,Wk是系統(tǒng)動(dòng)態(tài)噪聲,是均值為0、方差陣為的白噪聲隨機(jī)序列。
對(duì)于該濾波器分別利用三種方式實(shí)現(xiàn):采用Matlab在PC機(jī)上實(shí)現(xiàn)、利用DSP實(shí)現(xiàn)和利用FPGA實(shí)現(xiàn)。其中,PC機(jī)為DELL Dimension4700臺(tái)式機(jī),安裝Matlab 7.0軟件;DSP選用雙精度浮點(diǎn)型TMS320C6713型號(hào)的芯片;FPGA型號(hào)為XC2VP30,主頻100 MHz,內(nèi)嵌多達(dá)136個(gè)硬核乘法器和2 MB硬件RAM。為得到更準(zhǔn)確合理的結(jié)果,分別截取第1~3次、11~13次、21~23次的計(jì)算結(jié)果來對(duì)比。因?yàn)樵赑C機(jī)上利用Matlab實(shí)現(xiàn)的Kalman濾波器通過軟件設(shè)置可以達(dá)到很高的計(jì)算精度,所以將其得到的結(jié)果作為標(biāo)準(zhǔn)值(真值),分別用FPGA實(shí)現(xiàn)和DSP實(shí)現(xiàn)的結(jié)果與其進(jìn)行對(duì)比分析。選取估計(jì)均方誤差陣Pk+1/k+1的第一個(gè)元素來進(jìn)行對(duì)比分析各實(shí)現(xiàn)方式的性能,其解算結(jié)果對(duì)比如表2和表3所示。
評(píng)論