基于FPGA的卡尔曼滤波器的设计

合集下载

基于fpga的kalman滤波器实现

基于fpga的kalman滤波器实现
FPGA的硬件描述语言(如VHDL或Verilog)可以用于编写 Kalman滤波器的硬件实现,实现高性能的数字信号处理。
03
基于FPGA的Kalman滤波器设 计
Kalman滤波器算法设计
线性系统模型
根据系统输入和输出数据,建立 线性系统模型,为Kalman滤波器 提供基础。
状态估计
利用Kalman滤波器算法对系统状 态进行估计,包括预测和更新两 个步骤。
02
FPGA与Kalman滤波器理论基 础
FPGA基本原理
现场可编程门阵列(FPGA)是一种 可编程逻辑器件,通过配置其内部的 逻辑门和触发器来实现各种数字电路 功能。
FPGA采用并行处理方式,具有高速、 高可靠性、高灵活性等优点,广泛应 用于通信、图像处理、雷达等领域。
Kalman滤波器基本原理
卡尔曼滤波器是一种递归滤波器,通过状态方程和观测方程描述系统状态的变化 和观测数据之间的关系。
卡尔曼滤波器能够根据一系列不完美的观测数据,估计出系统状态的最优值,广 泛应用于导航、控制、信号处理等领域。
FPGA与Kalman滤波器的结合
基于FPGA的Kalman滤波器实现可以利用FPGA的并行处理 能力,提高滤波器的处理速度,实现实时数据处理。
[3] 张志强, 王建元, 徐心和. 基于FPGA的改进 型Kalman滤波器实现[J]. 系统工程与电子技术, 2007, 29(1): 144-147.
THANKS
谢谢您的观看
FPGA简介
• FPGA是一种可编程逻辑器件,其内 部由多个逻辑单元和可编程连接组成 。通过在FPGA上编程,可以实现各 种数字电路和系统。相比于传统的 ASIC和ASSP,FPGA具有更高的灵活 性和可重构性,可以快速实现各种数 字电路和系统设计。在信号处理和控 制系统领域,FPGA被广泛应用于实 时信号处理、高速数据采集、控制算 法实现等领域。

交互多模型扩展卡尔曼滤波算法的FPGA实现

交互多模型扩展卡尔曼滤波算法的FPGA实现

s h o w t h a t t h e h a r d w a r e ・ b a s e d lg a o r i t h m o f I MME KF c a n r e a l i z e b e a i r n g s - o n l y t r a c k i n g o n s i n g l e t a r g e t , a n d o p e r a t i n g t i me i s s h a r p l y r e d u c e d w h i l e g u ra a n t e e t h e p r e c i s i o n i s c o mp a r a i t v e t o s o f t w a r e s i mu l a t i o n .
计算 和存储 资源的高性能 芯片 , 其最大 的优点是 可 以通 过 可重复配置快速实 现设计验证 。硬件算法 如果要转化成专
b a s e d o n F P G A i s p r o p o s e d . Re s o u r c e o p t i mi z a t i o n a n d t i me o p t i mi z a t i o n i s s u e s a r e d i s c u s s e d . S i mu l a t i o n r e s u l 期
、 。 。
传感 器与微系统 ( T r a n s d u c e r a n d Mi e r o s y s t e m T e c h n o l o g i e s )
1 1
研究 与探 讨
、 c
交 互 多模 型 扩 展 卡 尔曼 滤 波 算 法 的 F P G A 实现

基于FPGA的卡尔曼滤波器的设计与实现

基于FPGA的卡尔曼滤波器的设计与实现

图12 卡尔曼滤波的时序仿真图
QuartusⅡ时序仿真(续)
用DSP Builder设计卡尔曼滤波模型是整个系统设计 中的一个子模块,把卡尔曼滤波模型转化后的VHDL文 件生成图元文件,如下图所示,以便在整个系统设计 中调用。
图13 生成的卡尔曼图元文件
基于FPGA的卡尔曼滤波器各功能模块设计
利用LA1032逻辑分析仪验证总体设计的正确性
DSP Builder是 Altera公司推出的 FPGA 的系统级 设计工具。它将 Matlab 和 Simulink系统级设计工 具的算法开发、仿真和验证功能与QuartusII的基 于 Verilog HDL 及 VHDL 语言的设计流程整合在一
起,实现了这些工具的集成,为用户提供了一个从 软件到硬件的完整的 DSP 开发平台。
基于FPGA的卡尔曼滤波器各功能模块设计
芯片模块结构
芯片模块的划分如下图所示,分频模块和AD控 制模块采用VHDL语言编程实现,卡尔曼滤波模块 用DSP Builder软件进行设计。
图1 芯片模块结构划分示意图
基于FPGA的卡尔曼滤波器各功能模块设计
单元功能模块设计 *分频模块 分频模块是将外部时钟进行分频设定,得到系统 内部AD控制模块和卡尔曼滤波模块所需要的时钟, 并为AD芯片提供时钟信号基准。此模块采用VHDL语 言编程实现。这里给出10分频时序仿真图,其中分 频模块的外部时钟输入频率为50MHz,产生的时钟 频率为5MHz。
使用 DSP Builder设计数字信号处理系统的流程为:
(1)在Matlab/Simulink中建立一个*.mdl模型文件,用图形方式调用 Altera DSP Builder和Simulink其他库中的图形模块进行数学模型 设计; (2)利用Simulink图形化仿真分析功能对此设计模型进行纯数学上的仿 真、验证及修改; (3)通过Altera DSP Builder中的SignalCompiler模块把 Matlab/Simulink的设计文件(· mdl)转成相应的硬件描述语言 VHDL设计文件(·vhd),以及用于控制综合与编译的RTL脚本; (4)在 SignalCompiler里用选定的工具自动进行综合和编译,或用 QuartusII 调用上述VHDL 文件,选择器件型号锁定引脚重新编译; (5)配置芯片(program device),即把SRAM对象文件(*.sof)下载到FPGA 芯片.

基于_FPGA_的卡尔曼滤波器的设计与实现

基于_FPGA_的卡尔曼滤波器的设计与实现

基于_FPGA_的卡尔曼滤波器的设计与实现FPGA(Field Programmable Gate Array)是一种可以重新编程的可编程逻辑器件,可以根据用户的需要进行重新配置和编程,从而实现不同的应用。

卡尔曼滤波器是一种用于估计系统状态的滤波器,能够通过利用过去观测值和当前的测量值来估计未来的状态。

在本文中,我们将探讨基于FPGA的卡尔曼滤波器的设计与实现。

卡尔曼滤波器是一种递归的估计算法,用于估计状态变量的最优估计。

它将过去的观测值和当前的测量值进行加权平均,得到对未来状态的估计。

在实时应用中,常常需要高速和高准确度的数据处理,这就需要一种高效的硬件实现方法。

基于FPGA的卡尔曼滤波器可以提供高性能的实时数据处理,同时还能够灵活地适应不同的实时应用的需求。

基于FPGA的卡尔曼滤波器的设计与实现主要包括以下几个方面:首先,需要设计FPGA的硬件结构。

硬件结构通常包括状态估计器、卡尔曼增益计算器和误差估计器等关键模块。

状态估计器用于估计当前系统的状态变量,卡尔曼增益计算器用于计算卡尔曼增益矩阵,误差估计器用于估计状态估计器的误差。

这些模块之间需要进行数据传递和计算,因此需要设计合适的数据通路和控制信号。

其次,需要进行FPGA的编程和配置。

FPGA可以通过硬件描述语言(如VHDL或Verilog)进行编程和配置。

在设计过程中,需要将卡尔曼滤波器的算法转化为相应的硬件描述,并利用FPGA的配置工具将其加载到FPGA芯片中。

然后,需要进行系统级的仿真和验证。

在设计过程中,可以通过使用仿真工具对系统进行仿真和验证。

通过仿真可以检查系统的功能和性能,并进行必要的调试和优化。

最后,需要进行性能评估和优化。

FPGA的设计和实现需要考虑多个指标,如延迟、功耗和面积等。

通过性能评估和优化可以找出系统的瓶颈,并进行相应的改进,以提高系统的性能。

总结起来,基于FPGA的卡尔曼滤波器的设计与实现是一个复杂的过程,需要进行硬件结构设计、FPGA编程和配置、系统仿真和验证以及性能评估和优化等多个步骤。

基于FPGA的滤波器的设计

基于FPGA的滤波器的设计

摘要自适应滤波器是统计信号处理的一个重要组成部分。

在现代滤波处理技术中,自适应滤波器的处理效果尤为突出。

在众多滤波器中,特别是在一些对信号处理的实时性要求比较高,体积功耗有严格限制的场合,使用FPGA硬件实现的数字滤波器更为广泛。

本论文从自适应滤波器研究的重要意义入手,介绍了线性自适应滤波器的算法,对几种基于最小均方误差准则或最小平方误差准则的自适应滤波器算法进行研究,就滤波器的基本原理及设计方法做了简单的介绍,最终设计基于FPGA的LMS算法设计复数自适应滤波器,对设计方法进行叙述,并以VHDL语言编写程序进行仿真测试。

关键词:自适应滤波器;FPGA;自适应算法LMS;有限冲激响应滤波器FPGA-based design of adaptive filterStudent:TAN xx Teacher:CHEN xxAbstract:Adaptive filter is a statistical signal processing as an important component. Processing technology in the modern filter, the adaptive filter, particularly in the treatment effect. Among the filters, especially in some of the real-time signal processing requirements of higher power, there are strict restrictions on the size of the occasion, the use of FPGA hardware to achieve a wider range of digital filters.In this paper, adaptive filter from the importance of research to start to introduce the linear adaptive filter algorithm, based on several criteria MMSE or least square error criteria for the study of adaptive filter algorithm, it filters The basic principle and design method of a brief introduction, the final design of FPGA-based design of complex LMS adaptive filter algorithm, the design methods described, and VHDL languages in maxplus simulation test platform.Keywords: adaptive filter;FPGA;LMS adaptive algorithm;finite impulse response filter目录摘要 (I)1 绪论 (1)1.1 引言 (1)2 自适应算法研究及分析 (1)2.1 自适应滤波基本概念 (1)2.2 变步长自适应滤波算法 (2)2.3 仿射投影算法 (3)2.4 RLS自适应滤波算法 (3)2.5 LMS算法及其推广 (3)2.6小结 (6)3 滤波器原理介绍 (7)3.1 自适应滤波器原理 (7)3.2 本文滤波器的工作原理 (8)4 基于FPGA的自适应滤波器的设计 (11)4.1 基本设计方法 (11)4.2 设计流程 (12)4.2.1 设计准备 (13)4.2.2 设计输入 (13)4.2.3 功能仿真 (14)4.2.4 设计处理 (14)4.2.5 时序仿真 (14)4.2.6 器件编程测试 (14)4.3 自适应滤波器设计 (15)4.3.1 自适应滤波器结构 (16)4.3.2 复数滤波器设计与实现 (18)4.3.3 基本设计准备 (19)4.3.4 复数自适应滤波器设计防真 (22)4.4小结 (24)5 结论 (25)致谢 (26)参考文献 (27)1 绪论1.1 引言随着信号处理技术的不断发展,对信号处理速度的要求也不断提高。

纯方位目标跟踪的伪线性卡尔曼滤波器FPGA实现

纯方位目标跟踪的伪线性卡尔曼滤波器FPGA实现

R(k+l I志+1)一又(五+1 I志)+K(志+1)[z(五+1)一
z(矗+1 I正)]
(11)
P(五十1 Ik+1)=P(志+1 l五)一 K(五+1)SQ+1)K@+1)7 (12)
式(7)~式(12)构成了伪线性卡尔曼递推公式, 由此可得到目标的位置估计以及速度估计。
2 伪线性卡尔曼滤波器的FPGA实现
分别为D。与一D。,F。Q)是测量高斯自噪声。
由于噪声研(志)很小,可以令COSY;(五)≈1,
sinvf(点)≈O,则
cosg,(k)*z(志)--sinai(k)-'A-y(五)+
/1f(足)*sinvl(足)=D*cosg,(k)
(3)
其中,肚(五)=sinai(k)*(z(矗)一D)+
cos展(志)*.y(五)。
以被动传感器双基阵的中心为原点建立直角坐
标系,那么基阵和目标的几何关系如图1所示。
正北方向k
p(七).,(一
始 \ 侈。

基 1(一D0,0) 基阵Z(Do。o)戈
图1双基阵模型
蕊(五)=展(五)+仇(点)=arctg等+口i(愚), 根据图1所示,得出各个基阵的观测方程为:
i一(1,2)
(2)
其中,展为方位角,D为两基阵的横坐标位置
算法的实现是基于模块化的,为了使多个进程 协调进行,一般的方法可以设置一些握手信号,在进 程中检测这些握手信号的状态,以决定是否进行必 要的操作。如在除法器完成计算时,设置一个ready 信号告知下一模块,数据处理完毕,驱动下一进程。
本文针对对伪线性卡尔曼滤波器的数据特点以 及virtex一4系列芯片自带的DSP48处理模块的数 据特点,设计了专用的运算单元,以满足滤波器的精 度要求。同时,本文根据伪线性卡尔曼滤波器的特 点,充分利用了FPGA的并行机制,极大地缩短了 系统的处理周期。在增益计算模块中,多达32个乘 法器同时进行并行运算,这是DSP(数字信号处理 器)难以比拟的。 2.1运算单元

【matlab编程代做】基于FPGA的滤波器设计-推荐下载

【matlab编程代做】基于FPGA的滤波器设计-推荐下载
1.2 FIR与IIR数字滤波器
1.2.1 有限冲击响应(Finite Impulse Response,FIR)滤波器
有限长冲击响应滤波器,即FIR滤波器,是指离散系统的单位冲击响应h(k)是一个有限 长的序列,即系统的单位冲击响应只在给定的时间区间里有非零值。此时,系统的传输函数 是:
N
H (z) h(k)zk (3-1) k 0
第一章.数字滤波器原理与选择
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看与全22过,22度并22工且22作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

基于FPGA分布式算法的滤波器设计

基于FPGA分布式算法的滤波器设计

基于FPGA分布式算法的滤波器设计摘要:本文介绍了一种基于FPGA分布式算法的滤波器设计。

该算法的思路是将原始信号划分为多个子信号,每个子信号在不同的FPGA上运算,在计算完成后,在各个FPGA上的结果被收集并进行合并。

这种算法可以大大提高计算效率,适用于需要处理大量数据的信号处理应用。

本文通过实验验证了该算法的有效性,并进行了性能比较。

关键词:FPGA、分布式算法、滤波器设计正文:引言滤波器是一种对信号进行处理的重要工具,它能够去除信号中的噪音,并提高信号的质量。

随着信号处理应用的不断发展,越来越多的数据需要被处理,因此提高滤波器的计算效率变得尤为重要。

FPGA作为一种快速灵活的硬件平台,可以提供高效并行计算的能力,因此在滤波器设计中得到了广泛的应用。

本文提出了一种基于FPGA分布式算法的滤波器设计。

该算法的思路是将原始信号划分为多个子信号,每个子信号在不同的FPGA上运算,在计算完成后,在各个FPGA上的结果被收集并进行合并。

这种算法可以大大提高计算效率,适用于需要处理大量数据的信号处理应用。

本文通过实验验证了该算法的有效性,并进行了性能比较。

算法设计FPGA分布式算法可以将一个大问题分解成多个小问题并行处理,在处理单个小问题时,CPU将其发送到FPGA,FPGA在本地完成处理后将结果返回给CPU。

这种算法可以大大提高计算效率,适用于需要处理大量数据的信号处理应用。

在滤波器设计中,我们可以将输入信号分为多个子信号,每个子信号在不同的FPGA上运算,在计算完成后,各个FPGA上的结果被收集并进行合并。

下面我们将介绍该算法的详细步骤。

1.将输入信号分割成多个子信号对于一个长为N的原始信号,我们将其划分为m个长度为L 的子信号:S1,S2,…,Sm。

其中,m=N/L。

这种划分方式可以平均分配计算量,并且每个FPGA处理的数据量不会过大,在保证精度的前提下,可以充分利用FPGA的并行计算能力。

2.在FPGA上滤波对于每个子信号Si,我们将其发送到不同的FPGA上进行处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的卡尔曼滤波器的设计
时间:2010-04-12 12:52:33 来源:电子科技作者:米月琴,黄军荣西安电子科技大学摘要:针对电路设计中经常碰到数据的噪声干扰现象,提出了一种Kalman滤波的FPGA实现方法。

该方法采用了TI公司的高精度模数转换器ADSl25l以及Altera公司的EPlCl2,首先用卡尔曼滤波算法
设计了一个滤波器,然后将该滤波器分解成简单的加、减、乘、除运算。

通过基于FPGA平台的硬件与
软件的合理设计,成功地实现了数据噪声的滤除设计,并通过实践仿真计算,验证了所实现滤波的有效性。

关键词:卡尔曼;FPGA;最小方差估计
卡尔曼滤波是一个“Optimal Recursive Data Processing Algorithm(最优化自回归数据处
理算法)”,对于解决很大部分的问题,是最优化的,效率最高甚至是最有用的。

传统的卡尔曼滤波是
在DSP上实现的。

但是DSP成本相对较高,而且指令是串行执行的,不能满足有些要求较高的场合。

而FPGA由于其硬件结构决定了它的并行处理方式,无论在速度还是实时性都更胜一筹。

文中以基于FPGA
器件和A/D转换器的数据采集系统为硬件平台,进行了卡尔曼滤波算法设计,详述了基于FPGA的卡尔
曼滤波器的设计实现。

1 卡尔曼滤波算法
工程中,为了了解工程对象(滤波中称为系统)的各个物理量(滤波中称为状态)的确切数值,或为了
达到对工程对象进行控制的目的,必须利用测量手段对系统的各个状态进行测量。

但是,量测值可能仅
是系统的部分状态或是部分状态的线性组合,且量测值中有随机误差(常称为量测噪声)。

最优估计就是
针对上述问题的一种解决方法。

它能将仅与部分状态有关的测量进行处理,得出从统计意义上讲误差最
小的更多状态的估值。

误差最小的标准常称为估计准则,根据不同的估计准则和估计计算方法,有各种
不同的最优估计,卡尔曼滤波是一种递推线性最小方差估计的最优估计。

系统的状态方程可设定为
式(3)为系统噪声。

设设备的量测噪声为Vk,系统得量测方程为
式中,是利用当前状态预测的结果,是当前状态最优的结果,Pk+1/k是
*对应的covariance,Rk是对应的covanance,表示A的转置矩阵,Q是系统过程的covariance。

式(1),式(2)就是卡尔曼滤波器5个公式中的前两个,也就是对系统的预测。

可以得到将来状态k+l的最优化估算值。

式(9)中I为单位矩阵,对于单模型单测量,I=1。

当系统进入k+2状态时,Pk+1就是式(2)的Pk。

这样,算法就可以自回归的运算下去。

R为测量数据的方差;Q为系统过程噪声的方差,取值为,根据经验可设置为测量数据方差的1/10;P的初值可选为单位阵,I为单位阵,X的处置可选为(0,0)T。

算法示意图,如图1所示。

将算法矩阵展开并写成乘加形式,令
这些公式包含了一些加、减、乘、除的数学运算,用FPGA实现卡尔曼滤波就是用FPGA实现这些运算。

2 硬件设计
2.1 A/D选择
ADSl251是TI公司生产的一种高精度、宽动态范围的24位△~∑乏结构的模数转换器。

采样保持器的输入形式采用差分模拟输入方式,设计了一个简单的电平转换电路使得端和端之间的电压波动范围为士2.5 V。

ADSl251的时钟频率由8 MHz的外部晶振提供,系统时钟由FPGA给出。

ADSl251的内部结构图,如图2所示。

输出有3种模式:同步、异步及掉电模式,异步模式与Kalman滤波器数据输入接口连接比较方便。

其时序如图3所示。

2.2 FPGA设计
FPGA的特点在于灵活,通用。

如果资源够用,可以实现各种数字组合,包括CPU。

本系统采用的:FPGA是Ahera公司低价位的EP1C12,该芯片内含有两个PLLs,12060LEs及239616 Total RAMbits。


本系统的设计中,FPGA内主要实现以下几个功能:Kalman状态控制信号、Kalm-an滤波运算、A/D控
制模块、时钟及波特率设置等。

卡尔曼滤波器的系统结构图,如图4所示。

通过A/D转换芯片采集转换数据后,进入FPGA的A/D控制模块,在Kalman状态控制信号的作用下,进行滤波运算,然后通过控制接口将滤波数据输出。

由此可见,卡尔曼滤波的实现包括两部分:Kalman状态控制信号和Kalman滤波运算。

3 Kalmaft滤波器的设计
在FPGA中实现Kalman滤波器,重点在于平衡资源利用率和处理速度、数据运算精度之间的矛盾,
难点在于浮点加、减、乘、除的硬逻辑及卡尔曼滤波流程控制的实现。

一般地,实际应用中,数字采样
重复频率是待采样信号最高频率成分的5倍以上能保证较好恢复原信号,本设计中出于后期升级的考虑,将采样率设置在800次/s,是输出信号带宽的20倍。

通过第2节中的分解,Kalman滤波器由16次加法、20次乘法、1次除法以及必要的输入、输出及
循环控制组成,共45步。

状态控制器(Kal-man状态控制信号)实际是一个有限状态机,分别控制滤波器
中的45步运算,决定其执行顺序,每一步利用计数器为其提供必要的时钟周期。

Kalman滤波运算主要是浮点计算,浮点表示常用的标准是IEEE 754,IEEE二进制浮点数算术标准(IEEE754)是最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。

IEEE 754规定了4种表
示浮点数值的方式:单精确度(32位元)、双精确度(64位元)、延伸单精确度(43位元以上,较少使用)
与延伸双精确度(79位元以上,通常以80位元实做)。

二进制浮点数是以符号数值表示法格式储存,将最高效位元指定为符号位元(Sign Bit);“指数部分”,即次高效的e位元,为浮点数中经指数偏差(Exponent Bias)处理过后的指数;“小数部分”,
即剩下的f位元,为有效位数(Significand)减掉有效位数本身的最高效位元,如图5所示。

文中采用的单精度二进制小数,使用32个位元存储,如图6所示。

其中,31位是符号位;0表示正;1表示负;30~23位为阶数;22~0表示数值的有效位。

偏正值为
+127。

其表示的具体值可用式(27)表示
指数部分采用一个无符号的正数值存储。

单精度的指数部分是-126~+127加上127,指数值的大小
为1~254(0和255是特殊值)。

浮点小数计算时,指数值减去偏正值将是实际的指数大小。

由于资源的限制,滤波中的运算过程只能以有限的精度进行,但过低的精度容易引起滤波发散,同
时为了兼顾A/D高达24 bit的分辨率精度,在IEEE754单精度浮点数格式的基础上按照浮点表示的原
则做了改造,将指数部分减少到6位,尾数增加到25位,25位尾数可以完全表示A/D输出的24位采
样值,并削弱舍入误差的影响,其格式如图7所示。

本系统对处理速度的要求并不高,运算部件的设计并不考虑速度优化。

加法器按以下通用的规则设计:
(1)阶码相减:两个操作数阶码相减,求得阶差d=|Ea-Eb|;
(2)尾数对齐:阶码小的操作数的尾数右移d位;
(3)尾数相加:完成移位处理后的尾数相加运算;
(4)转换:尾数相加的结果为负数时,转换为符号尾数的表示方式;
(5)前导0/1的判定:判定由于减法结果产生的左移位数,对于加法判定是否右移一位或不移,对
前导0/1判定的结果进行编码以驱动规格化移位;
(6)规格化:规格化有效位并且根据移位的方向和位数修改最终的阶码Ef;
(7)舍入:根据IEEE标准判定最终结果的舍入,如果需要入,则最末有效位加1;如舍入引起溢出,则需要有效位右移1位,同时阶码Ef加1。

乘法器的设计相对简单,与加法器一样采用简单的设计规则:
(1)指数相加:完成两个操作数的指数相加运算;
(2)尾数调整:将尾数f调整为l/f的补码格式;
(3)尾数相乘:完成两个操作数的尾数相乘运算;
(4)规格化:根据尾数运算结果调整指数位,对尾数进行舍入截位操作,规格化输出结果。

采用Altera提供的IP核,除法器能完成IEEE754单精度除法运算。

数据进入该除法器前需要将自
定义的浮点格式的阶码扩展为8位加上95,尾数右移两位,转换为标准单精度浮点,计算结果再由标准
单精度浮点的按相反的方法转换为自定义浮点。

文中硬件编程语言是用Verilog实现的。

4 实测结果分析与结论
从系统输出数据中随机抽取一段数据用Matlab分析,其结果如图8所示。

实线C表示的是滤波前
的噪声:虚线B表示的是滤波后的噪声。

很容易看出经过滤波后噪声降低了很多。

仿真与实测对比分析
如表1所示。

5 结束语
卡尔曼滤波器在很多领域具有重要的作用,可以实现数字信号处理功能,并能满足实时性的要求。

用FPGA实现Kalman滤波过程,实现简便、成本较低、滤波效果好,被广泛应用于图像视频、陀螺惯导去噪、电子罗盘、雷达接收机目标跟踪处理、目标预测等图像、数据采集与处理领域。

相关文档
最新文档