基于FPGA的Kalman濾波器的設(shè)計
輸出有3種模式:同步、異步及掉電模式,異步模式與Kalman濾波器數(shù)據(jù)輸入接口連接比較方便。其時序如圖3所示。本文引用地址:http://www.butianyuan.cn/article/191740.htm
2.2 FPGA設(shè)計
FPGA的特點在于靈活,通用。如果資源夠用,可以實現(xiàn)各種數(shù)字組合,包括CPU。本系統(tǒng)采用的:FPGA是Ahera公司低價位的EP1C12,該芯片內(nèi)含有兩個PLLs,12060LEs及239616 Total RAMbits。在本系統(tǒng)的設(shè)計中,F(xiàn)PGA內(nèi)主要實現(xiàn)以下幾個功能:Kalman狀態(tài)控制信號、Kalm-an濾波運算、A/D控制模塊、時鐘及波特率設(shè)置等??柭?a class="contentlabel" href="http://www.butianyuan.cn/news/listbylabel/label/濾波器">濾波器的系統(tǒng)結(jié)構(gòu)圖,如圖4所示。
通過A/D轉(zhuǎn)換芯片采集轉(zhuǎn)換數(shù)據(jù)后,進入FPGA的A/D控制模塊,在Kalman狀態(tài)控制信號的作用下,進行濾波運算,然后通過控制接口將濾波數(shù)據(jù)輸出。由此可見,卡爾曼濾波的實現(xiàn)包括兩部分:Kalman狀態(tài)控制信號和Kalman濾波運算。
3 Kalmaft濾波器的設(shè)計
在FPGA中實現(xiàn)Kalman濾波器,重點在于平衡資源利用率和處理速度、數(shù)據(jù)運算精度之間的矛盾,難點在于浮點加、減、乘、除的硬邏輯及卡爾曼濾波流程控制的實現(xiàn)。一般地,實際應(yīng)用中,數(shù)字采樣重復(fù)頻率是待采樣信號最高頻率成分的5倍以上能保證較好恢復(fù)原信號,本設(shè)計中出于后期升級的考慮,將采樣率設(shè)置在800次/s,是輸出信號帶寬的20倍。
通過第2節(jié)中的分解,Kalman濾波器由16次加法、20次乘法、1次除法以及必要的輸入、輸出及循環(huán)控制組成,共45步。狀態(tài)控制器(Kal-man狀態(tài)控制信號)實際是一個有限狀態(tài)機,分別控制濾波器中的45步運算,決定其執(zhí)行順序,每一步利用計數(shù)器為其提供必要的時鐘周期。
Kalman濾波運算主要是浮點計算,浮點表示常用的標準是IEEE 754,IEEE二進制浮點數(shù)算術(shù)標準(IEEE754)是最廣泛使用的浮點數(shù)運算標準,為許多CPU與浮點運算器所采用。IEEE 754規(guī)定了4種表示浮點數(shù)值的方式:單精確度(32位元)、雙精確度(64位元)、延伸單精確度(43位元以上,較少使用)與延伸雙精確度(79位元以上,通常以80位元實做)。
二進制浮點數(shù)是以符號數(shù)值表示法格式儲存,將最高效位元指定為符號位元(Sign Bit);“指數(shù)部分”,即次高效的e位元,為浮點數(shù)中經(jīng)指數(shù)偏差(Exponent Bias)處理過后的指數(shù);“小數(shù)部分”,即剩下的f位元,為有效位數(shù)(Significand)減掉有效位數(shù)本身的最高效位元,如圖5所示。
文中采用的單精度二進制小數(shù),使用32個位元存儲,如圖6所示。
其中,31位是符號位;0表示正;1表示負;30~23位為階數(shù);22~0表示數(shù)值的有效位。偏正值為+127。其表示的具體值可用式(27)表示
指數(shù)部分采用一個無符號的正數(shù)值存儲。單精度的指數(shù)部分是-126~+127加上127,指數(shù)值的大小為1~254(0和255是特殊值)。浮點小數(shù)計算時,指數(shù)值減去偏正值將是實際的指數(shù)大小。
評論