新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于FPGA的Kalman滤波器实现研究

基于FPGA的Kalman滤波器实现研究

作者: 时间:2012-04-25 来源:网络 收藏

2 在中实现滤波算法研究
由于实现滤波解算速度非常快,若利用的串行口依次输入观测值,由于数据串行输入的特点,会使FPGA的解算部分等待数据接收完毕才能执行滤波解算,导致整体的解算时间过长。为检验FPGA实现的计算性能,本文预先将观测值输入并保存于FPGA内的ROM中,以使FPGA可以连续地进行滤波解算,实现方案原理如图1所示。

本文引用地址:https://www.eepw.com.cn/article/190479.htm

和Pk+1/k,然后进入S2状态,计算Kk+1,最后计算解算结果j.jpg和Pk+1/k+1。计算Kk+1时,也需要将其分步实现。若将各步的解算归于同一个状态机内,则显得逻辑复杂。为使得各步的逻辑更加清晰,并且增加状态机的稳定性和安全性,使用交互状态机,如图2所示。

e.JPG


图2中,状态机的交互过程中,没置标志信号enble和finish分别用于启动和终止计算K值的状态,初始化时其值均为0。当计算完第一步进入S2时,enble置为1,启动计算K值的状态;当K值计算完成时,finish置为1,进入S3,enble和finish置为初值0,为下次状态交互做准备。进入原状态机继续进行下面的计算。
书写状态机时,采用三段式写法,一个模块采用同步时序描述状态转移,另一个模块采用组合逻辑判断转移条件并进行状态转移,第三个模块实现同步输出。三段式描述方法的状态机,做到了同步寄存器输出,消除了组合逻辑输出的不稳定和毛刺现象,而且更利于时序路径分组,综合与布局布线效果更佳。
2.3 资源分时复用
FPGA设计中,资源与速度是个矛盾体。FPGA中的资源是有限的,所以必须考虑资源的节省问题。由于Kalman滤波可以分3步进行,所以每一步可以利用其它步中相同的资源。此种方法可以在不降低总体速度的情况下,减少资源利用量;而对于阶次较高的Kalman滤波,此方法可以最大限度的增加并行性,提高速度。该设计中用到大量的乘法器、加法器以及CLB等资源,计算第一步时用到的资源会在第二步和第三步中用到,即同一资源被用到3次。以其中用到的某乘法器的分时复用为例,其输入端口在不同的时刻可以有不同的赋值,实现语句如下:
f.JPG



评论


相关推荐

技术专区

关闭