综合资讯在线阅读原文阅读在线商城下载专区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自适应滤波器。
2.LMS自适应滤波器的算法构想可以将基于LMS算法的自适应滤波器的算法过程表示成如图1所示。
图1 LMS算法实现的原理框图根据LMS算法的计算过程完成的功能,在FPGA设计实现时,可以主要分为FIR滤波器模块、误差计算模块、权值更新模块、权值存储模块和控制模块。
其模块框图如图2所示。
LMS自适应滤波器的算法中,主要是小数的加法和乘法运算,要把所有小数化为16进制数。
例如,N阶FIR滤波器的系数中,我们规定最高位是符号位,其次是3为整数位,最后12位小数。
比如,1.125-1400H,0.75-C00H。
运算中,所有权值系数均按此方法处理。
图2 自适应滤波器FPGA实现模块框图3.自适应滤波器在FPGA中的具体实现3.1 N阶FIR滤波器模块的设计FIR滤波器是数字滤波器的一种,它的输出y(n)可以用式(1)表示:差分方程:(1)其中:N是FIR滤波器的抽头系数;x(i)表示第i时刻的输入样本;h(i)是FIR滤波器的第i级抽头系数。
FIR滤波器的单位脉冲响应h(n)是一个有限长序列,因此系统函数为:(2)为了节约FPGA资源,提高利用率,这里主要介绍采用串行乘加的实现方法。
3.2 主要的模块组成及其功能主要采用VHDL硬件描述语言在QUARTUS II平台上编程实现,程序框图如图3所示。
FIR滤波器的输入主要分为权值系数输入和数据输入。
Din是A/D转换后的输出信号,字宽为12位,其中1位符号位,10位精度位,将这个信号存储在深度为N的SRAM中作为N阶FIR滤波器的输入;FIR的权系数Coeffs.存储在ROM中,字宽为16位,其中最高1位为符号位。
通过使用状态机输出地址信号控制读SRAM中的Xn和ROM中的系数Wn,复用12×16的乘法器和加法器来实现乘加运算。
当N阶乘加运算做完后,输出一个数据输出有效信号yvalid。
Newt信号来自于A/D,表示新一个数据转换好,可以进行下一次运算。
在该设计中,FIR滤波器的文件可以采用原理框图形式设计,结构简单明了。
而输入信号的延时输出和控制模块采用VHDL设计。
乘法器和D触发器都直接使用QUARTUS II自带的库文件。
•输入信号的延时输出模块实现功能:完成A/D转换后的数据通过不同的触发器完成N阶延时。
该延时部分主要采用D触发器实现了8阶信号延时及存储。
在控制信号newt作用下进行延时存储,A/D转换器每采样一次,延时器就顺延一位。
这里,Din是A/D输出信号。
Xn是输出信号。
在地址线sel的控制下输出一位作为乘法器的输入。
地址信号sel由控制模块产生。
•控制模块实现功能:本模块主要是控制从数据输入模块(SRAM中)和权系数输入模块(ROM中)读入数据输入信号和系数作为乘法器的输入,同时控制累加器,并产生输出有效信号yvalid。
主要采用状态机来设计该模块。
本模块是自适应滤波器设计的核心部分。
该模块的主要功能有:①初始化各模块;②产生控制信号,控制每个模块完成特定的功能;③协调各个模块的操作,使系统局部以流水线方式、整体串行方式工作。
•误差计算模块实现功能:该模块主要是计算FIR滤波器输出和期望值之间的误差。
根据上面FIR滤波器输出结果可知,当输出信号yvalid有效时,Dout输出结果,这时可以通过使用一个在next信号控制下的减法器就可以实现误差计算了。
•权值计算及存储模块在权值计算模块中,为了计算方便,可以设u=1/1024即u=04H,这样只需要对误差计算模块输出的误差进行移位运算即可以实现,从而省掉了使用乘法器,节约了大量的FPGA资源,并且提高了计算速度。
计算2ue(k)x(k)时可以先将x(k)右移11位,再使用乘法器与e(k)相乘得出权值变量。
根据设计流程,该模块的功能框图如图4所示。
图4 权值计算及存储模块功能框图权值系数存储在两个RAM中,两个RAM交替读写。
当RAM1处于读状态,输出当前的权值系数,作为FIR滤波器的输入,同时用来更新新的权值。
更新的权值系数则存储在RAM2中。
如此交替轮换,完成系数的更新和存储功能,这样就可以解决RAM同时需要读取和更新权值系数的问题。
(注:图4中的RAM1和RAM2的位置是交替变换使用的)4.自适应滤波器的仿真验证4.1 仿真实现自适应滤波器模块的测试要求全面性和有效性。
在测试仿真验证时不仅要验证控制接口的有效性,还要验证算法的有效性。
模块测试的软件环境是Quartus II。
图5 自适应滤波器模块测试框图由于Quartus II软件自带的仿真工具对复杂设计的性能做评估时,会碰到许多困难。
由于在仿真时需要手工设置输入节点值,对于我们设计的自适应滤波器,输入的数据量大,而且必须经过严格计算得到,很难由手工输入。
在这里我们结合使用matlab和Quartus II来进行仿真测试,系统测试框图如图5所示。
利用Matlab来产生复杂的仿真输入信号,再在Quartus II中进行仿真,输出仿真信号,再利用matlab 进行信号波形分析。
4.2 仿真结果整个程序是在Quartus II平台上实现的。
设计中信号输入和参考输入都是12位,输出是16位。
程序设计中u固定为1/1024。
整个程序综合于APEX20K系列的EPF20K300EQC240-1芯片上,使用的资源为:3347个LEs,占29.1%,3768个Memory,占2.5%。
其时钟频率可达到23.6MHz。
由于在系统设计中,FPGA实现的功能比较多,因此在系统设计选型时,留有的余量比较大。
但是,在该设计中,采用了串行的设计方法,并不是直接使用乘法器,兼顾了速度与资源,所以性能上不是最优的。
对设计的自适应滤波器进行综合仿真,结果如图6所示。
图6 自适应滤波器在FPGA中实现的仿真结果由于在Quartus II中进行仿真时,仿真结果都是以二进制或十六进制表示的,不利于观察自适应滤波器的滤波效果。
将仿真结果转换成Table 文件输出,从Table文件中提出数据,将数据导入到matlab中,画出图形如图7所示。
图7 自适应滤波器仿真结果5.小结由图7中可以看出,在功能上基本实现了自适应滤波器的功能,但是滤波的效果不太好,仍然存在着毛刺。
这主要是因为在该设计中,FIR滤波器的阶数太小,而且在计算中使用的是定值的u,出现了较大的舍入误差。
不过这种方法的优点就是简单容易实现,而且节约了子带分解的自适应滤波器的FPGA实现2010-06-02 23:00:25 来源:维库开发网关键字:子带分解自适应滤波器FPGA0 引言自适应滤波器已经广泛应用于信道均衡、回声取消、系统识别、频谱估计等各个方面。
基于子带分解的自适应滤波在提高收敛性能的同时又节省了一定的计算量。
基于子带分解的自适应滤波是先将输入信号与参考信号经过分解滤波器组进行子带分解、抽取、子带自适应滤波、内插、通过合成滤波器组得到输出信号。
基于子带分解的自适应滤波器的优点:(1)由于对信号的抽取,使完成自适应滤波所需的计算量得以减少;(2)在子带进行自适应滤波使收敛性能有所提高。
l 基于子带分解的自适应滤波结构基于子带分解的自适应滤波,其时域结构如图1所示。
将输入信号x(n)和参考信号d(n)分别进行子带分解,抽取,在子带上进行自适应滤波,再将子带上的估计信号y0(n)和y1(n)经内插和合成滤波器组得到最后的合成信号。
其中滤波器W00(n)和W11(n)是两个子带上的自适应滤波器,而W01(n)和W10(n)表示子带间自适应滤波器。
这是由于滤波器组均是FIR滤波器,不可能有锐截止的理想特性,只能以长度为代价来换取近似的特性;这时在严格采样下得到的子带信号必然有混叠,需加入子带间滤波以消除其影响。
这里的子带自适应滤波器采用基于NLMS算法自适应滤波器。
NLMS算法和LMS算法相比。
虽然计算量稍有增加,但可使得自适应滤波器收敛速度大大提高。
2 双通道滤波器组的设计本文采用的分析和综合滤波器之间的关系如下:H1(z)=H0(-z),G1(z)=-2H0(-z),G0(z)=2H1(-z)。
由上述表达式可知设计的关键是设计H0(z),只要H0(z)确定,H1(z),G0(z),G1(z)也可确定。
本文采用等波纹逼近设计法进行滤波器设计。
该方法设计的滤波器呈现等波纹频响特性。
等波纹逼近设计法设计的滤波器具有如下优点:(1)由于误差均匀分布于整个频带,对固定的阶数N,可以得到最优良的滤波特性;(2)通带最平坦,阻带最小衰减达到最大。
Matlab集成了一套强大的滤波器设计工具FDATOOL,可以完成多种滤波器的设计、分析和性能*估。
本文中FPGA硬件实现部分用到的4个FIR滤波器的频率特性曲线见图2。
3 系统建模与仿真DSP Builder是Altera公司推出的一个面向DSP开发的系统级工具,它是作为Matlab 的一个Simulink工具箱(ToolBox)出现的。
DSP Bui-lder作为Simulink中的一个工具箱,使得在使用FPGA设计DSP系统时完全可以通过Simulink的图形化界面进行,只需简单地进行DSP Builder工具箱中的模块调用即可。
图3中的基于子带分解的自适应滤波器模块框图系统由分析滤波器子系统h00,h01,h10,h11,综合滤波器子系统g00,g01、抽取,插值,加法,减法器,自适应滤波器等模块组成。
h00和h10是完全一模一样的低通滤波器,h01和h11是完全一模一样的高通滤波器。