文档介绍:综合资讯在线阅读原文阅读在线商城下载专区 DATASHEET 技术论坛商务频道
嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子
自适应LMS滤波器在FPGA中的实现
发布日期:2006-07-29 作者:杨跃忠阙沛文李亮来源:微计算机信息
摘要:本文介绍了自适应滤波器的实现方法,给出了基于LMS算法自适应滤波器在FPGA中的实现,简单介绍了这种实现方法的各个功能模块,主要包括输入信号的延时输出模块、控制模块、误差计算模块、权值计算和存储模块。并通过在ALTERA公司提供的QUARTUS II平台上采用VHDL语言编程,利用MATLAB和QUARTUS II相结合进行了硬件仿真,结果表明了采用FPGA实现自适应滤波器是有效的。
关键词:自适应滤波,FPGA,LMS,VHDL语言
引言对于自适应滤波器,IIR和FIR两种形式都可以考虑,而FIR滤波器是实际应用较广泛的。FIR滤波器只有可调的零点,因此它没有IIR因兼有可调的零点和极点而带来的不稳定问题,另外,LMS计算量小,比较容易进行硬件实现,所以本文所设计的自适应滤波器是在FIR的基础上构建的LMS自适应滤波器。
可以将基于LMS算法的自适应滤波器的算法过程表示成如图1所示。
图1  LMS算法实现的原理框图
根据LMS算法的计算过程完成的功能,在FPGA设计实现时,可以主要分为FIR滤波器模块、误差计算模块、权值更新模块、权值存储模块和控制模块。其模块框图如图2所示。
LMS自适应滤波器的算法中,主要是小数的加法和乘法运算,要把所有小数化为16进制数。例如,N阶FIR滤波器的系数中,我们规定最高位是符号位,其次是3为整数位,最后12位小数。比如,-1400H,-C00H。运算中,所有权值系数均按此方法处理。
 
图2  自适应滤波器FPGA实现模块框图                                                                        
N阶FIR滤波器模块的设计
FIR滤波器是数字滤波器的一种,它的输出y(n)可以用式(1)表示:
差分方程:                          (1)
其中:N是FIR滤波器的抽头系数;x(i)表示第i时刻的输入样本;h(i)是FIR滤波器的第i级抽头系数。
FIR滤波器的单位脉冲响应h(n)是一个有限长序列,因此系统函数为:        (2)
为了节约FPGA资源,提高利用率,这里主要介绍采用串行乘加的实现方法。
主要的模块组成及其功能
主要采用VHDL硬件描述语言在QUARTUS II平台上编程实现,程序框图如图3所示。
FIR滤波器的输入主要分为权值系数输入和数据输入。Din是A/D转换后的输出信号,字宽为12位,其中1位符号位,10位精度位,将这个信号存储在深度为N的SRAM中作为N阶FIR滤波器的输入;,字宽为16位,其中最高1位为符号