【技术实现步骤摘要】
基于FPGA的高维卡尔曼滤波器及其实现方法
本专利技术涉及基于FPGA的高维卡尔曼滤波器及其实现方法,属于航空航天中的导航
技术介绍
卡尔曼滤波采用状态空间法在时域内设计滤波器,是一种解决离散系统线性滤波问题的递推最优估计算法。本世纪60年代以来,卡尔曼滤波算法得到了深入的研究和广泛的工程应用,许多非凡技术成就都可部分地归因于卡尔曼滤波器,它有许多军事的、工业的以及科学的应用。其中主要应用包括:宇宙飞船的航行、导弹的制导和控制、卫星导航与定位、雷达和飞机自动驾驶仪等等。在实际应用中,卡尔曼滤波器常采用通用的处理器来实现,如单片机,DSP处理器以及ARM处理器。通用处理器上的卡尔曼滤波器一般通过C语言编程实现,因而它具有设计简单的特点。但由于卡尔曼滤波器在运算的过程中存在大量的高维矩阵加减乘除运算,同时通用的处理器采用了程序顺序执行的硬件架构,因而在对实时性要求比较高的场合,通用处理器上的卡尔曼滤波器往往不能够满足系统对运行速度的要求。针对通用微处理器执行速度较慢、效率偏低的缺陷,充分利用FPGA(FieldProgrammableGateArray,现场可编程门阵列)自身高度并行性、执行速度快的特点,近些年来人们对在FPGA中定制卡尔曼滤波算法的硬件电路展开了初步的研究。而目前基于FPGA的卡尔曼滤波器限于FPGA芯片内部逻辑资源有限,因而所设计的滤波器的矩阵维数较低,同时采用定点小数进行运算节省运算资源,这大大降低了卡尔曼滤波器的滤波性能。
技术实现思路
本专利技术技术解决问题:克服现有技术的不足,提供一种基于FPGA的高维卡尔曼滤波器及其实现方法 ...
【技术保护点】
基于FPGA的高维卡尔曼滤波器,其特征在于包括:滤波逻辑控制器(2),双精度运算器(3)及数据存储器(4);所述滤波逻辑控制器(2)由状态预测控制器(2a),协方差预测控制器(2b),卡尔曼增益更新控制器(2c),状态更新控制器(2d)及协方差更新控制器(2e)五个逻辑子控制器组成;所述运算器由双精度乘法器(3a),双精度除法器(3b),双精度加法器(3c)以及双精度减法器(3d)四个子运算器,每个子运算器有两个数据输入端口和一个数据输出端口;逻辑控制器(2)给定滤波时序,在滤波时序的约束下把从数据存储器(4)中读出的数据赋值给运算器(3)的输入端口,并把运算器(3)的输出数据写入到数据存储器(4)中;双精度乘法器(3a),双精度除法器(3b),双精度加法器(3c)以及双精度减法器(3d)四子运算器彼此独立,它们的输入输出数据均通过数据总线与数据存储器(4)相连接;当状态预测控制器(2a),协方差预测控制器(2b),卡尔曼增益更新控制器(2c),状态更新控制器(2d)及协方差更新控制器(2e)五个逻辑子控制器所给定时序依次执行后,则完成一次滤波,此时再循环执行,实现实时滤波。
【技术特征摘要】
1.基于FPGA的高维卡尔曼滤波器,其特征在于包括:滤波逻辑控制器,运算器及数据存储器;所述滤波逻辑控制器由状态预测控制器(2a),协方差预测控制器(2b),卡尔曼增益更新控制器(2d),状态更新控制器(2c)及协方差更新控制器(2e)五个逻辑子控制器组成;所述运算器由双精度乘法器(3a),双精度除法器(3b),双精度加法器(3c)以及双精度减法器(3d)四个子运算器构成,每个子运算器有两个数据输入端口和一个数据输出端口;逻辑控制器给定滤波时序,在滤波时序的约束下把从数据存储器中读出的数据赋值给运算器的输入端口,并把运算器的输出数据写入到数据存储器中;双精度乘法器(3a),双精度除法器(3b),双精度加法器(3c)以及双精度减法器(3d)四个子运算器彼此独立,它们的输入输出数据均通过数据总线与数据存储器相连接;当状态预测控制器(2a),协方差预测控制器(2b),卡尔曼增益更新控制器(2d),状态更新控制器(2c)及协方差更新控制器(2e)五个逻辑子控制器所给定时序依次执行后,则完成一次滤波,此时再循环执行,实现实时滤波;状态预测控制器(2a)控制读取存储器中与状态预测有关的数据,送至所需要的双精度乘法器(3a),双精度除法器(3b),双精度加法器(3c)以及双精度减法器(3d)四个子运算器进行计算,并把计算结果写入到数据存储器中的状态预测结果存储区域,在此过程完成1次“方阵×列向量”运算;协方差预测控制器(2b)依次控制读取数据存储器中与协方差预测有关的数据,送至所需要的双精度乘法器(3a),双精度除法器(3b),双精度加法器(3c)以及双精度减法器(3d)四个子运算器进行计算,并把计算结果写入到数据存储器中的协方差预测结果存储区域,在此过程完成1次“方阵×方阵”运算,1次“方阵×方阵”运算和1次“方阵+方阵”运算;卡尔曼增益更新控制器(2d)依次控制读取数据存储器中与卡尔曼增益更新有关的数据,送至所需要的双精度乘法器(3a),双精度除法器(3b),双精度加法器(3c)以及双精度减法器(3d)四个子运算器进行计算,并把计算结果写入到数据存储器中的卡尔曼增益更新结果存储区域,在此过程完成1次“方阵×方阵”运算,1次“方阵×方阵”运算,1次“方阵+方阵”运算,1次矩阵求逆运算和1次“方阵×方阵”运算;状态更新控制器(2c)依次控制读取数据存储器中与状态更新有关的数据,送至所需要的双精度乘法器(3a),双精度除法器(3b),双精度加法器(3c)以及双精度减法器(3d)四个子运算器进行计算,并把计算结果写入到数据存储器中的状态更新结果存储区域,在此过程完成1次“方阵×列向量”运算,1次“列向量-列向量”运算,1次“方阵×列向量”运算和1次“列向量+列向量”运算;协方差更新控制器(2e)依次控制读取数据存储器中与协方差更新有关的数据,送至所需要的双精度乘法器(3a),双精度除法器(3b),双精度加法器(3c)以及双精度减法器(3d)四个子运算器进行计算,并把计算结果写入到数据存储器中的协方差更新结果存储区域,在此过程完成1次“方阵×方阵”运算,1次“方阵-方阵”运算和1次“方阵×方阵”运算;数据存储器实现为,卡尔曼滤波器的维数为D,一个列向量所需的空间大小即为D,一个方阵所需要的空间大小为D*D,把各个矩阵依次存储在RAM中,根据以上的矩阵空间分配原则,对维数不同的卡尔曼滤波器计算出相应矩阵的偏移地址,当维数...
【专利技术属性】
技术研发人员:陶飞,刘轶龙,王聪,张霖,
申请(专利权)人:北京航空航天大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。