首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的Kalman滤波器的设计(3)

基于FPGA的Kalman滤波器的设计(3)

输出有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是特殊值)。浮点小数计算时,指数值减去偏正值将是实际的指数大小。
继承事业,薪火相传
返回列表