开源无线网络-OSRAN

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 592|回复: 0

基于FPGA设计卡尔曼滤波器

[复制链接]

42

主题

42

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2023-6-23 01:40:09 | 显示全部楼层 |阅读模式
公式写起来太不方便了,所以写在word,用截图的形式呈现出。
本文主要内容分成6部分:
  • 卡尔曼滤波器简介
  • 卡尔曼滤波器基本原理
  • 简化卡尔曼滤波器公式
  • 基于MATLAB仿真
  • verilog实现卡尔曼滤波器算法
  • 基于Modelsim仿真
1. 卡尔曼滤波器简介
在产生、传输和接收信号的过程中,由于外界环境的不确定性,信号很容易受到干扰,而排除这些干扰的过程,称为滤波。
由Wiener提出维纳滤波理论,最初应用在火炮的弹道估计。它设计滤波器的方法为分解功率谱,因为被Wiener所提出的Wiener方程的计算量超出当时计算机的运算水平,对计算机的存储性能要求极高,无法应用到工程领域,限制了Wiener滤波算法的发展。于1979年,现代Wiener滤波算法由捷克斯洛伐克国籍的科学家V.Kucere所提出,可以真正的将Wiener算法设计成滤波器,用于处理非平稳信号和多维信号,但是计算量仍然过大,而且是非递归结构,无法满足实际需求。
由于递归算法可以有效的解决运算速度和内存问题,在此出发点上,具备离散随机特性的卡尔曼滤波算法被美国科学家R.E.Kalman所提出,也称KF算法。在接下来的第二年,Kalman与R.S.Bucy两位数学家共同完善卡尔曼滤波算法,将原来应用到离散领域的拓宽到连续时间系统,至此,卡尔曼滤波算法得到了完善。KF滤波算法优于Wiener滤波算法主要有两个方面,第一,KF滤波算法基于时域估计算法,并且具备状态空间与滤波理论相结合的思想的数据处理方式,可以对非平稳信号、多维信号以及时变系统进行数据处理。第二,KF算法采用递推形式,极大的提升了计算效率,降低了对计算机的存储能力的要求,可以真正的设计出滤波器原型。
在接下来的几十年里,卡尔曼滤波理论快速发展,在技术领域有许多的应用,如信号处理计量经济学机器人运动规划及控制、轨迹最佳化和中轴神经系统运动控制建模等。
卡尔曼滤波主要分为两步骤,分别为预测和更新,预测主要包括预测前一时刻的状态以及前一时刻的协方差矩阵;更新过程主要包括测量残差、测量残差的协方差和最优卡尔曼增益,根据更新的三个变量,来进一步更新本时刻状态值以及本时刻的协方差矩阵。上面的过程正是体现卡尔曼滤波器的递归特性。
2. 卡尔曼滤波器基本原理

3. 简化卡尔曼滤波器公式
4. 基于MATLAB仿真
5. verilog实现卡尔曼滤波器算法
整体框架如图(根据简化后的卡尔曼滤波器进行编写,包含卡尔曼滤波器五个公式的数据流向):
(1)Kalman_1
(2)Kalman_2_3
(3)Kalman_4_5
其它的模块不一一贴出,可以点击下面链接进行下载,包括卡尔曼滤波算法推导和Verilog代码源文件。
[color=inherit !important]卡尔曼滤波算法与FPGA实现方法.rar-电信文档类资源-CSDN下载​download.csdn.net/download/qq_43017318/21406120
源文件:
仿真文件:
6. 基于Modelsim仿真
仿真时直接tb_jingdu.v即可,图中的in_date是输入带有高斯白噪声的数据,通过Kalman_ctrl.v输入我们需要仿真的数据;date是滤波后的数据。
以上阐述的内容有问题可以评论或私信我,欢迎交流~

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|OpenXG  

Copyright © 2001-2013 Comsenz Inc.Template by Comsenz Inc.All Rights Reserved.

Powered by Discuz!X3.2

快速回复 返回顶部 返回列表