当前位置:首页 > EDA > 电子设计自动化
[导读]摘要:卡尔曼(Kalman)滤波计算精度和速度是工程应用中是否成功的决定性条件,为进一步提高Kalman滤波算法在更复杂的环境下使用的性能,并能够同时满足实时性和精度的要求,采用现场可编程逻辑阵列(FPGA)技术,设计了

摘要:卡尔曼(Kalman)滤波计算精度和速度是工程应用中是否成功的决定性条件,为进一步提高Kalman滤波算法在更复杂的环境下使用的性能,并能够同时满足实时性和精度的要求,采用现场可编程逻辑阵列(FPGA)技术,设计了Kaiman滤波算法在FPGA上的实现方案,选择了一种可以同时满足精度和实时性的方案进行实现,对算法中的矩阵相乘、状态机的应用以及资源分时复用等关键技术进行了设计。通过与Matlab及DSP的计算结果相对比,验证了在FPGA内实现Kalman滤波器的优势。
关键词:FPGA;Kalman滤波器;IP核;实时性

    Kalman滤波理论在20世纪60年代一经提出,便得到了军事、控制、通信等领域的极广泛的应用。它可以实现随机干扰下的线性动态系统的最优估计,目前Kalman滤波器的实现方式主要有两种,一是在PC机上实现,可以同时满足计算精度和实时性的要求,但是PC机体积大,质量重,成本高;二是通过DSP等芯片来实现,用这种方式实现的Kalman滤波器虽然体积小,质量轻,但是因其指令顺序执行的CPU架构,在系统复杂时无法满足系统的实时性要求。随着控制系统的复杂性的提高,系统的阶次变大,如组合导航系统的滤波,其滤波的阶次一般都要18阶,如果对系统进一步细化建模或增加其复杂性,其滤波阶次可以达到几十阶。因此,Kalman滤波器在工程应用中的实现遇到了系统体积、重量、成本和系统精度、速度等性能不能兼顾的问题。随着现代电子技术的发展,FPGA具有系统结构和逻辑单元灵活、集成度高以及适用范围宽等特点,可以很好地解决这个难题。因为FPGA采用的是硬件并行算法,能很好的解决速度和实时性的问题,并且其具有灵活的可配置特性和优良的抗干扰能力,使得FPGA构成的数字信号处理系统非常易于修改、测试及硬件升级。随着FPGA技术的不断成熟,其内嵌资源不断丰富,硬核乘法器和块RAM的数目不断增长,使得FPGA实现复杂的数字信号处理算法变得更为简单和快速。因此,本文对FPGA技术和Kalman滤波算法进行结合研究,探索Kalman滤波算法在FPGA中的实现方式并进行性能验证,以对基于FPGA的Kalman滤波算法的工程实现提供参考。

1 Kalman滤波算法理论
    Kalman滤波是在时域内以信号的一、二阶统计特性已知为前提、以均方误差极小为判据,能自动跟踪信号统计性质的非平稳变化,具有递归性质的一种算法。它处理的对象是随机系统,并能正确估计出有用信号。设离散系统差分方程如下:
   
    则Kalman滤波方程组如下:
    状态一步预测方程:

    从式(1)~(6)可知,若利用传统的处理器实现Kalman滤波算法,由于其指令执行的顺序性,至少需要分为5步来实现,其中每一步还都需要进行至少1次的加法和乘法等运算,每次运算都要顺序执行,其执行速度和效率很低;如果利用FPGA来进行Kalman滤波,根据其各步的逻辑关系,可以分为3步来实现,即第一步计算状态一步预测值和一步预测均方误差Pk+1/k,第二步计算滤波增益Kk+1,第三步计算状态最优估值和估计均方误差Pk+1/k+1。由此可知,利用FPGA技术可以实现Kalman滤波的并行计算,压缩计算时间,提高解算速度。因此,对FPGA的Kalman滤波进行研究开发,可实现基于FPGA的快速Kalman滤波解算,满足在对实时性要求更高的环境中使用。

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


    图1中,Kalman滤波解算在FPGA内完成,RAM和ROM使用FPGA内嵌的硬件RAM存储器,其中RAM暂存每步的中间结果,ROM存放滤波中的固定系数,如观测矩阵、噪声系数阵等。Kalman滤波的解算过程主要利用内嵌的硬核乘法器等资源来完成。因解算速度较快,解算结果暂存于一个稍大的存储器内,同时通过串行口输出到PC机上保存用于分析。该方案的关键问题是在FPGA中实现Kalman滤波算法。
    FPGA实现Kalman滤波器,其实质就是控制数据的转移和存储并实现矩阵的相乘、加、减、求逆等运算。其中,数据的转移控制需要有限状态机(FSM)来完成,同时FPGA设计中,不可避免的会遇到资源与速度的问题。因此,需要对上述各关键技术进行研究和实现。
2.1 矩阵相乘在FPGA中的实现
    Kalman滤波计算中最基本的步骤就是矩阵相乘。对于其中最常见的D=A×B×C型的矩阵相乘,有两种实现方式:方式一,分步相乘;方式二,直接相乘。事先将矩阵A,B,C分别存入ROM1,ROM2,ROM3中,方式一中,首先进行两个矩阵的相乘,多路选择开关MUX选通ROM1和ROM2,依次读取其中的数据进行乘加,完成前面两个矩阵的相乘,结果存入ROMTEMP中;然后,MUX选通ROMTEMP和ROM3,利用前面同样的资源,完成三个矩阵的连乘。方式二中,ROM1,ROM2,ROM3同时输出数据,MUX根据解算需要配置乘法器和加法器的输入,所有的过程同时进行。从上面的执行过程可知,方式一的执行需要占用更多的时间,而方式二的执行会占用更多的资源。对于上述N阶的3个矩阵相乘,其占用资源和所需时间如表1所示。


    由表1可知,对于维数越大的矩阵相乘,需要的浮点加法器越多。由于浮点加法器的生成利用FPGA内的基本逻辑单元——可配置逻辑块(CLB),所以其占用的CLB等资源也越多。这种现象在上述方式二中尤为突出。本文中研究拟先实现二阶Kalman滤波器,阶次较低,资源相对充足,为检验FPGA实现Kalman滤波器的快速性,选用第二种方式进行矩阵相乘,以得到最快的解算速度。
2.2 有限状态机的运用
    有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。Kalman滤波中,由于解算过程中的逻辑关系,需要分步进行,所以需要用有限状态机来控制各步的转移。根据各步间的逻辑关系,可以将其大致分为4个状态:S0,S1,S2和S3状态。其中,S0为初始化状态,之后进入S1状态,计算和Pk+1/k,然后进入S2状态,计算Kk+1,最后计算解算结果和Pk+1/k+1。计算Kk+1时,也需要将其分步实现。若将各步的解算归于同一个状态机内,则显得逻辑复杂。为使得各步的逻辑更加清晰,并且增加状态机的稳定性和安全性,使用交互状态机,如图2所示。


    图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次。以其中用到的某乘法器的分时复用为例,其输入端口在不同的时刻可以有不同的赋值,实现语句如下:
   

3 性能对比及分析
    为验证本文研究利用FPGA实现Kalman滤波算法的性能,采用二阶Kalman滤波器进行实际性能对比测试。建立数学模型如下:选取状态转移矩阵,无控制量,即控制阵Uk=0,噪声系数矩阵,Wk是系统动态噪声,是均值为0、方差阵为的白噪声随机序列,观测系数矩阵Hk+1=[1,0],Vk+1表示观测噪声,为均值为0,方差为2的白噪声;初始状态协方差阵为。
    对于该滤波器分别利用三种方式实现:采用Matlab在PC机上实现、利用DSP实现和利用FPGA实现。其中,PC机为DELL Dimension4700台式机,安装Matlab 7.0软件;DSP选用双精度浮点型TMS320C6713型号的芯片;FPGA型号为XC2VP30,主频100 MHz,内嵌多达136个硬核乘法器和2 MB硬件RAM。为得到更准确合理的结果,分别截取第1~3次、11~13次、21~23次的计算结果来对比。因为在PC机上利用Matlab实现的Kalman滤波器通过软件设置可以达到很高的计算精度,所以将其得到的结果作为标准值(真值),分别用FPGA实现和DSP实现的结果与其进行对比分析。选取估计均方误差阵Pk+1/k+1的第一个元素来进行对比分析各实现方式的性能,其解算结果对比如表2和表3所示。


    由表2可知,利用FPGA实现的滤波结果,其精度与用Matlab实现的精度相差无几,且略高于利用DSP实现的单精度的结果。由表3可知,在解算时间方面,利用FPGA实现方式的快速性远远高于利用其他两种方式。而且,对于阶次越高的Kalman滤波器的实现,传统处理器所需的时间越长,利用FPGA实现方式的时间的优越性越显著。

4 结语
    针对Kalman滤波的传统实现方法的不足,本文提出利用具有可并行计算特点的FPGA来实现Kalman滤波的方案,并对FPGA实现Kalman滤波的三种方式进行了研究,确定了利用IP核作为主要计算元件的实现方式。对Kalman滤波实现过程中的关键问题进行了研究和实现。通过对PC机、DSP和FPGA三种实现方式的结果对比,验证了利用FGPA实现的Kalman滤波器具有较高的精度和极高的实时性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭