資源描述:
《基于fpga的kalman濾波器實現(xiàn)研究》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、基于FPGA的Kalman濾波器實現(xiàn)研究摘要:卡爾曼(kalman)濾波計算精度和速度是工程應(yīng)用中是否成功的決定性條件,為進(jìn)一步提高kalman濾波算法在更復(fù)雜的環(huán)境下使用的性能,并能夠同時滿足實時性和精度的要求,采用現(xiàn)場可編程邏輯陣列(fpga)技術(shù),設(shè)計了kalman濾波算法在fpga上的實現(xiàn)方案,選擇了一種可以同時滿足精度和實時性的方案進(jìn)行實現(xiàn),對算法中的矩陣相乘、狀態(tài)機(jī)的應(yīng)用以及資源分時復(fù)用等關(guān)鍵技術(shù)進(jìn)行了設(shè)計。通過與matlab及dsp的計算結(jié)果相對比,驗證了在fpga內(nèi)實現(xiàn)kalman濾波器的優(yōu)勢。關(guān)鍵詞
2、:fpga;kalman濾波器;ip核;實時性kalman濾波理論[1]在20世紀(jì)60年代一經(jīng)提出,便得到了軍事、控制、通信等領(lǐng)域的極廣泛的應(yīng)用。它可以實現(xiàn)隨機(jī)干擾下的線性動態(tài)系統(tǒng)的最優(yōu)估計,目前kalman濾波器的實現(xiàn)方式主要有兩種,一是在pc機(jī)上實現(xiàn),可以同時滿足計算精度和實時性的要求,但是pc機(jī)體積大,質(zhì)量重,成本高;二是通過dsp等芯片來實現(xiàn),用這種方式實現(xiàn)的kalman濾波器雖然體積小,質(zhì)量輕,但是因其指令順序執(zhí)行的cpu架構(gòu),在系統(tǒng)復(fù)雜時無法滿足系統(tǒng)的實時性要求。隨著控制系統(tǒng)的復(fù)雜性的提高,系統(tǒng)的階次變大
3、,如組合導(dǎo)航系統(tǒng)的濾波,其濾波的階次一般都要18階,如果對系統(tǒng)進(jìn)一步細(xì)化建?;蛟黾悠鋸?fù)雜性,其濾波階次可以達(dá)到幾十階。因此,kalman濾波器在工程應(yīng)用中的實現(xiàn)遇到了系統(tǒng)體積、重量、成本和系統(tǒng)精度、速度等性能不能兼顧的問題。隨著現(xiàn)代電子技術(shù)的發(fā)展,fpga具有系統(tǒng)結(jié)構(gòu)和邏輯單元靈活、集成度高以及適用范圍寬等特點,可以很好地解決這個難題。因為fpga采用的是硬件并行算法,能很好的解決速度和實時性的問題,并且其具有靈活的可配置特性和優(yōu)良的抗干擾能力,使得fpga構(gòu)成的數(shù)字信號處理系統(tǒng)非常易于修改、測試及硬件升級。隨著fp
4、ga技術(shù)的不斷成熟,其內(nèi)嵌資源不斷豐富,硬核乘法器和塊ram的數(shù)目不斷增長,使得fpga實現(xiàn)復(fù)雜的數(shù)字信號處理算法變得更為簡單和快速。因此,本文對fpga技術(shù)和kalman濾波算法進(jìn)行結(jié)合研究,探索kalman濾波算法在fpga中的實現(xiàn)方式并進(jìn)行性能驗證,以對基于fpga的kalman濾波算法的工程實現(xiàn)提供參考。1kalman濾波算法理論kalman濾波是在時域內(nèi)以信號的一、二階統(tǒng)計特性已知為前提、以均方誤差極小為判據(jù),能自動跟蹤信號統(tǒng)計性質(zhì)的非平穩(wěn)變化,具有遞歸性質(zhì)的一種算法。它處理的對象是隨機(jī)系統(tǒng),并能正確估計出
5、有用信號。設(shè)離散系統(tǒng)差分方程如下:xk+1=φk+1,kxk+tk+1,kuk+γk+1wkzk+1=hk+1xk+1+vk+1則kalman濾波方程組如下:狀態(tài)一步預(yù)測方程:k+1/k=φk+1,kk/k+tk+1,kuk(1)一步預(yù)測均方誤差方程:pk+1/k=φk+1,kpk/kφtk+1.k+γk+1,kqkγtk+1,k(2)濾波增益方程:kk+1=pk+1/khtk+1(hk+1pk+1/khtk+1+rk+1)-1(3)狀態(tài)估值方程:k+1/k+1=k+1/k+kk+1(zk+1-hk+1k+1/k)(
6、4)估計均方誤差方程:pk+1/k+1=(i-kk+1hk+1)pk+1/k(i-kk+1hk+1)t+kk+1rk+1ktk+1(5)或pk+1/k+1=(i-kk+1hk+1)pk+1/k(6)從式(1)~(6)可知,若利用傳統(tǒng)的處理器實現(xiàn)kalman濾波算法,由于其指令執(zhí)行的順序性,至少需要分為5步來實現(xiàn),其中每一步還都需要進(jìn)行至少1次的加法和乘法等運算,每次運算都要順序執(zhí)行,其執(zhí)行速度和效率很低;如果利用fpga來進(jìn)行kalman濾波,根據(jù)其各步的邏輯關(guān)系,可以分為3步來實現(xiàn),即第一步計算狀態(tài)一步預(yù)測值k+1
7、/k和一步預(yù)測均方誤差pk+1/k,第二步計算濾波增益kk+1,第三步計算狀態(tài)最優(yōu)估值k+1/k+1和估計均方誤差pk+1/k+1。由此可知,利用fpga技術(shù)可以實現(xiàn)kalman濾波的并行計算[2],壓縮計算時間,提高解算速度。因此,對fpga的kalman濾波進(jìn)行研究開發(fā),可實現(xiàn)基于fpga的快速kalman濾波解算,滿足在對實時性要求更高的環(huán)境中使用。2在fpga中實現(xiàn)kalman濾波算法研究由于fpga實現(xiàn)kalman濾波[3]解算速度非??欤衾胒pga的串行口依次輸入觀測值,由于數(shù)據(jù)串行輸入的特點,會使f
8、pga的解算部分等待數(shù)據(jù)接收完畢才能執(zhí)行濾波解算,導(dǎo)致整體的解算時間過長。為檢驗fpga實現(xiàn)kalman濾波器的計算性能,本文預(yù)先將觀測值輸入并保存于fpga內(nèi)的rom中,以使fpga可以連續(xù)地進(jìn)行濾波解算,實現(xiàn)方案原理如圖1所示。圖1采用fpga實現(xiàn)kalman濾波算法原理框圖圖1中,kalman濾波解算在fpga內(nèi)完成,ram和rom使用f