LMS自适应滤波器的仿真与实现
扫描二维码
随时随地手机看文章
0 引言
自适应滤波器可广泛应用于系统识别、信号处理和数字通信等许多领域。而超大规模集成电路和FPGA的飞速发展,也促进了自适应滤波技术的进步。此外,由于其对干扰频率不敏感,且其权值调整是基于对系统参数的优化,因此,自适应滤波器仍然越来越多地受到人们的关注。
1 LMS自适应滤波器
1.1 LMS算法
最小均方误差(LMS)算法具有计算量小、易于实现等优点,因此,在实践中被广泛应用。LMS算法的基本思想是调整滤波器自身的参数,使滤波器的输出信号与期望输出信号之间的均方误差最小,并使系统输出为有用信号的最佳估计。实质上,LMS可以看成是一种随机梯度或者随机逼近算法,可以写成如下的基本迭代方程:
其中,μ为步长因子,是控制稳定性和收敛速度的参量。从上式可以看出,该算法结构简单、计算量小且稳定性好,但固定步长的LMS算法在收敛速度、跟踪速率及权失调噪声之间的要求相互制约。为了克服这一缺点,人们提出了各种变步长的LMS改进算法,主要是采用减小均方误差或者以某种规则基于时变步长因子来跟踪信号的时变,其中有归一化LMS算法(NLMS)、梯度自适应步长算法、自动增益控制自适应算法、符号一误差LMS算法、符号一数据LMS算法、数据复用LMS算法等。
1.2 LMS自适应滤波器的结构原理
自适应滤波是在部分信号特征未知的条件下,根据某种最佳准则,从已知的部分信号特征所决定的初始条件出发,按某种自适应算法进行递推,在完成一定次数的递推之后,以统计逼近的方式收敛于最佳解。当输入信号的统计特性未知,或者输入信号的统计特性变化时。自适应滤波器能够自动地迭代调节自身的滤波器参数.以满足某种准则的要求,从而实现最优滤波。因此,自适应滤波器具有自我调节和跟踪能力。在非平稳环境中,自适应滤波在一定程度上也可以跟踪信号的变化。图1为自适应滤波的原理框图。
2 LMS滤波器的仿真与实现
2.1 LMS算法参数分析
传统的LMS算法是最先由统计分析法导出的一种实用算法.它是自适应滤波器的基础。通过Matlab仿真对LMS算法中各参数的研究,总结出其对算法的影响。现针对时域LMS算法的各参数进行一些讨论。
(1)步长
步长μ是表征迭代快慢的物理量。由LMS算法可知:该量越大,自适应时间μ越小,自适应过程越快,但它引起的失调也越大,当其大于1/λmax时,系统发散;而该值越小,系统越稳定,失调越小,但自适应过程也相应加长。因此,对步长μ的选择应从整个系统要求出发,在满足精度要求的前提下,尽量减少自适应时间。
(2)级数
自适应滤波器的级数应与噪声通道的传递函数F(z)的阶数一致。事实上,只有在二者相等时,自适应滤波器传递函数才有可能等于F(z),以实现噪声抵消。而当其级数小于F (z)的阶数时,参考通道的噪声将无法与输入通道的噪声抵消,故会引起最小均方差增大;当其级数大于F(z)的阶数时,过多的级数则会引起失调的增大。因此,只有当滤波器的级数等于F(z)的阶数时,自适应滤波器的性能才能达到最佳。
(3)信噪比
当信噪比升高时,LMS算法的性能将急剧恶化。故可采用频域LMS算法来克服时域LMS算法的性能局限。
2.2 DSP Builder建模
采用Altera公司的FPGA器件可进行数字信号的处理设计。Altera公司提供有可视化的开发工具软件DSP Builder。利用它可在MATIAB的图形仿真环境Simulink中建立一个*mdl模型文件,同时在DSP Builder和其他Simulink库中找到相应的图形模块并调入Simulink窗口。图2所示为4阶LMS滤波器模型界面。利用其强大的图形化仿真和分析功能,可以分析系统的正确性。
图中以shuru.mat为输入信源,qiwang.mat为期望,信宿为Scope。除图中这些模块外,还有一些总线控制模块和权系数控制模块。其运行模型观察的显示结果如图3所示。在这种FIR滤波器的LMS算法中,其误差将随着权的逼近逐渐减小,但没有等于零,而是在零值上下起伏,这说明了LMS算法是用平方误差代替均方误差而造成的误差缺点。
3 基于FPGA的实现方法
模型通过以后,运行SigalCompiler可将模型转化成VHDL语言和Tcl脚本。由于在Simuilnk中进行的模型仿真是算法级的,属于系统验证性质的仿真,并没有对VHDL代码进行仿真。而生成的VHDL代码是RTL级且是针对具体的硬件结构的,因此,转化后的VHDL代码实现就可能与*mdl模型描述的情况不符,故有必要再对生成的RTL级VHDL代码进行功能验证。ALTERA公司的ModelSim平台是使用最广泛的基于单内核的VerilogHDL/VHDL混合仿真器,利用它可方便地将信号波形显示为类似模拟信号的格式,特别适合显示复杂信号的波形。这给仿真调试带来了极大的方便。在QuartusⅡ调用上述文件,便可用ModelSim对生成的VHDL代码进行功能级仿真。转化成功后再调用VHDL综合器进行综合并生成底层网表文件。然后再调用OuartusⅡ进行编译,接着用QuartusⅡ根据网表文件及设置的优化约束条件进行布线布局和优化设计的适配,最后生成编程文件和仿真文件。这样,生成的POF/SOF FPGA配置文件便可用于对目标器件的编程配置和硬件实现。
4 结束语
本文采用自上而下的设计思想,并用FPGA实现了自适应滤波器。同时用MATIAB和OuartersⅡ混合仿真实现了LMS算法的设计方案。结果表明,该自适应滤波器具有良好的消燥能力。