LMS自适应滤波器的DSP实现_第1页
LMS自适应滤波器的DSP实现_第2页
LMS自适应滤波器的DSP实现_第3页
LMS自适应滤波器的DSP实现_第4页
LMS自适应滤波器的DSP实现_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、如文档对您有帮助,欢迎下载支持,谢谢!LMS自适应滤波器的DSP实现如文档对您有帮助,欢迎下载支持,谢谢!LMS自适应滤波器的DSP实现摘要在传统的LMS(LeastMeanSquare)算法中,固定步长的选取影响收敛速度与稳态误差,而且两者不可兼得。因此,为在相应的领域内合理使用此类算法,针对这个问题在对多种自适应滤波LMS类算法进行原理分析后,得出此类算法在不同领域的特点,对今后不同人群的合理使用提供了良好条件。为了达到最佳的滤波效果,使自适应滤波器在工作环境变化时自动调节其单位脉冲响应特性,提出了一种自适应算法:最小均方算法(LMS算法)。这种算法实现简单且对信号统计特性变化具有稳健性,

2、所以获得了极为广泛的应用。针对用硬件实现LMS算法的自适应滤波器存在的诸多缺点,采用Matlab工具对基于LMS算法的自适应滤波器进行了仿真试验。仿真结果表明,应用LMS算法的自适应滤波器不仅可以实现对信号噪声的自适应滤除,还能用于系统识别。关键词:自适应滤波;LMS算法;Matlab;FIRLMSadaptivefilteroftheDSPtoachieveAbstractTheconvergentspeedandsteadystateerrorareaffectedbythefixedstepsizeandcannotbeimprovedsimultaneouslyinclassicalL

3、MSalgorithm.Therefore,touseitcorrectlyinrelevantfields,forthiscontradiction,afteranalyzingavarietyofLMSadaptivefilteringalgorithmsonprinciple,thecharacteristicofthesealgorithmsindifferentfieldsispresented,thisalsoprovidesdifferentpeoplescorrectusewithabetterfoundation.Inordertoachievetheoptimumfilte

4、ringeffect,itmakestheadaptivefilteradjustitsunitsimpulseresponsecharacteristicsautomaticallyontheworkingenvironmentchanged.Thispaperpresentsakindofadaptivealgorithm:LeastMeanSquare(LMSalgorithm).Asthealgorithmisrealizedsimplyandhasstabilitywithrespecttothechangeofsignalstatisticalcharacteristics,LMS

5、algorithmisusedwidely.AccordingtodisadvantagesofadaptivefiltertorealizeLMSusinghardwareadaptivefilterissimulatedwhichisbasedonLMSalgorithmwithMatlab.Resultsofsimulationshowthatthiskindofadaptivefilternotonlycanfilterthesignalnoise,butalsorecognizethesystem.Keywords:adaptivefiltering;LMSalgorithm;Mat

6、lab;FIR.目录TOC o 1-5 h z绪论1 HYPERLINK l bookmark10 1.1研究目的和意义1 HYPERLINK l bookmark12 1.2研究背景及现状1 HYPERLINK l bookmark14 1.3本文研究内容2 HYPERLINK l bookmark16 自适应滤波LMS类算法种类2 HYPERLINK l bookmark18 2.1传统LMS算法2 HYPERLINK l bookmark28 2.2变步长的LMS算法3 HYPERLINK l bookmark36 2.3变化域的LMS算法3 HYPERLINK l bookmark54

7、 2.4DSP5 HYPERLINK l bookmark56 2.5MATLAB5 HYPERLINK l bookmark58 6本章小结6 HYPERLINK l bookmark60 自适应滤波器的DSP实现6 HYPERLINK l bookmark62 DSP实现6 HYPERLINK l bookmark64 流程图6 HYPERLINK l bookmark66 设计思想7 HYPERLINK l bookmark68 2程序实现结果7 HYPERLINK l bookmark70 3本章小结8 HYPERLINK l bookmark72 自适应滤波器的算法实现8 HYPER

8、LINK l bookmark74 4.1自适应滤波器的MATLAB仿真8 HYPERLINK l bookmark76 C语言的实现9 HYPERLINK l bookmark78 4.3汇编的实现10 HYPERLINK l bookmark82 4.4LMS应用实例15 HYPERLINK l bookmark88 4本章小结16 HYPERLINK l bookmark90 总结和展望16 HYPERLINK l bookmark92 1总结16 HYPERLINK l bookmark94 5.2工作展望17参考文献17I960年Widrow和Hoff提出最小均方误差(LMS)算法。

9、LMS算法具有计算量小,结构简单,易于实现等诸多优点,尤其是这种算法是最先由统计分析法导出的一种实用算法,它是一类自适应滤波器的基础,因此在很多领域得到了广泛的应用【1】。研究目的和意义自适应滤波器属于现代滤波器的范畴,他是20世纪40年代发展起来的自适应信号处理领域的一个重要应用,其设计方法对滤波器的性能影响很大【2】。实际上自适应滤波器是一种能够自动调整本身参数的特殊维纳滤波器,在设计时不需要事先知道关于输入信号和噪声的统计特性的知识,他能够在自己的工作过程中逐渐“了解”或估计出所需的统计特性,并以此为依据自动调整自己的参数,以达到最佳滤波效果。一旦输入信号的统计特性发生变化,他又能够跟踪

10、这种变化,自动调整参数,使滤波器性能重新达到最佳。因此,自适应滤波器具有“自我调节”和“跟踪”能力。研究背景及现状FIR和IIR是两种具有固定系数的滤波器,它们的特性都是已知的。但是在许多DSP应用场合中,信号所处的系统是时变的,信号本身的特性也是时变的,或者无法预先知道信号和噪声的特性,此时使用固定参数的滤波器,无法实现最优的设计效果。因此设计能够满足系统或环境动态变化的滤波器成为研究热点。一方面,这种滤波器的性能要具有自学习或者训练能力,能随着时间作相应的变化或更新;更一方面,滤波器的参数调整能够自适应递推更新,避免大计算量的运算,符合实时处理的要求。这类滤波器可以统称为自适应滤波器【3】

11、。自适应滤波器的研究包括滤波器的结构设计、滤波器的自适应算法、算法的统计性能分析以及在各种场合下的应用问题。自适应滤波器可以采用FIR和IIR结构。由于IIR滤波器存在稳定性问题,因此一般采用FIR滤波器作为自适应滤波器的结构。用FIR具体实现时,还可以分为横向结构、对称横向结构和格型结构等几种。自适应算法通过调整滤波器系数的方法实现自适应滤波器的特性变化,这是自适应滤波器性能好坏的基础。自适应算法的设计需要满足一定的最优设计准则,现在最常用的是均方误差最小准则,及时得估计的均方误差最小。这种理论称为最佳线性滤波理论,并得到一套完整的递推估计算法,即Kalman滤波理论。这两种理论是现在自适应

12、滤波中研究最多的理论。1.3本文研究内容本文重点介绍最小均方差(LMS)自适应算法。在传统的LMS(LeastMeanSquare)算法中,固定步长的选取影响收敛速度与稳态误差,而且两者不可兼得。因此,为在相应的领域内合理使用此类算法,针对这个问题在对多种自适应滤波LMS类算法进行原理分析后,得出此类算法在不同领域的特点,对今后不同人群的合理使用提供了良好条件。为了达到最佳的滤波效果,使自适应滤波器在工作环境变化时自动调节其单位脉冲响应特性,提出了一种自适应算法:最小均方算法(LMS算法)。这种算法实现简单且对信号统计特性变化具有稳健性,所以获得了极为广泛的应用。针对用硬件实现LMS算法的自适

13、应滤波器存在的诸多缺点,采用Matlab工具对基于LMS算法的自适应滤波器进行了仿真试验。仿真结果表明,应用LMS算法的自适应滤波器不仅可以实现对信号噪声的自适应滤除,还能用于系统识别。2自适应滤波LMS类算法种类2.1传统LMS算法20世纪60年代初由Widrow和Hoff提出的最小均方误差(LMS)算法,因其具有计算量小、易于实现等优点而在实践中被广泛采用。基于最速下降法的最小均方误差(LMS)算法的迭代公式如下:y(n)-WT(n)X(n)e(n)-d(n)-y(n)-d(n)-WT(n)-X(n)W(n+1)-W(n)+2“(时X(n)(2-1)式(2-1)中,W(n)为n时刻自适应滤

14、波器的权矢量,W(n)=w0(n),wl(n),wN-l(n)T,N为自适应滤波器的阶数,X(n)为n时刻自适应滤波器的参考输入矢量,由最近N个信号采样值构成:X(n)=x(n-N+1)F(2-2)式(2-2)中d(n)是期望的输出值;e(n)为自适应滤波器的输出误差调节信号(简称失调信号);是控制自适应速度与稳定性的增益常数,又叫收敛因子或步长因子。LMS算法收敛的条件为:0口0控制函数的形状,参数B0控制函数的取值范围。该函数比Sigmoid函数简单,且在误差e(n)接近零处具有缓慢变化的特性,克服了Sigmoid函数在自适应稳态阶段步长调整过程中的不足。2.3变化域的LMS算法当输入信号

15、具有高度的相关性时,LMS算法的收敛性能降低,这是由于LMS算法的收敛性能依赖于输入信号自相关矩阵的特征值发散程度。输入信号自相关矩阵的特征值发散程度越小,LMS算法的收敛性能越好。采用变换域算法可以增加LMS算法的收敛速度。其基本思路是,对输入信号做某些正交变换以去其相关性或衰减其相关性,则输入信号自相关矩阵的特征值发散程度会变小,其收敛性能自然就得以改善【6】。变换域自适应滤波的基本思想是把时域信号转变为变换域信号,在变换域中采用自适应算法。变换域LMS算法的一般步骤是:选择正交变换,把时域信号转变为变换域信号;变换后的信号用其能量的平方根归一化;米用某一自适应算法进行滤波。如文档对您有帮

16、助,欢迎下载支持,谢谢!设输入信号为:x(n)-|x(n),兀(?1一1),x(n-N+1)7(2-5)式(2-5)经过T变换后为:X(n)=T-x(n)(2-6)式(2-6)中T是NXN正交变换矩阵,常用的正交变换有卡亨南洛厄维(KarhuenLoeve)、变换离散余弦变换(DCT)、离散傅里叶变换(DFT)、离散Hartly变换及WalshHadamard变换等。自适应滤波器的权系数向量定义如式(2-7)所示:vr(n)rw(n)(2-7)滤波器的输出信号如式(2-8)所示:y(n)-WT(n)-X(n)(2-8)误差信号如式(2-9)所示:d(n)-y(n)(2-9)权系数向量的迭代方程

17、为:w(n+1)-iv(n)+2(ie(n)p-l(n)X(n)p(n)=diagp(n,0),p(n,1),p(n,N-1)p(n?0=-1,D+(l-XT(n,Q1-0,1N-1(2-10)式(2-10)中。为控制估计精度和跟踪能力的平滑系数,0火1。若令A2=P(n),则权系数向量的迭代方程为:w(n+1)-w(n)+2e(n)A-2X(n)(2-11)由上式(2-11)可知变换有很多方法,无论用何种正交变换,只要滤波器权系数的数目相同,即变换矩阵T的阶数一样,则TRLMS算法的最小均方误差总是相同的。近年来小波变换也被引入自适应滤波器,用小波变换的方法对自适应滤波器的输入进行正交变换,

18、将输入信号向量正交分解到多尺度空间,利用小波的时频局部特性,减小了自适应滤波器输入向量自相关阵特征值的分散程度,大大增加了算法的收敛步长,提高了LMS算法的收敛速度和稳定性。如文档对您有帮助,欢迎下载支持,谢谢!DSPDSP(digitalsignalprocessor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。

19、它的强大数据处理能力和高运行速度,是最值得称道的两大特色【7】。DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:在一个指令周期内可完成一次乘法和一次加法;程序和数据空间分开,可以同时访问指令和数据;片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;具有低开销或无开销循环及跳转的硬件支持;快速的中断处理和硬件I/O支持;具有在单周期内操作的多个硬件地址产生器;可以并行执行多个操作;支持流水线操作,使取指、译码和执行等操作可以重叠执行。当然,与通用微

20、处理器相比,DSP芯片的其他通用功能相对较弱些。MATLABMATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领

21、域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用【8】。本章小结本章介绍了LMS的几种常见的算法包括传统的LMS算法、变步长的LMS算法和变化域的LMS算法。以

22、及一些DSP和MATLAB的相关知识。DSP(digitalsignalprocessor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。MATLAB是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。3自适应滤波器的DSP实现DSP实现数字信号处理器以其运行速度快、运算精度高、硬件配置强等特点,在现代数字信号处理中得到了广泛应用。基于DSP的自适应滤波器与用硬件实现的滤波器相比有很多优点,其功耗以及体积更小,更容易实现,修改程序使系统很容易升级,功能进一步完善【9】。一个自适应滤波器的实现的复杂程度通常是它所需的乘法次数和阶数来衡量的。大多数DSP都有并

23、行的硬件乘法器、流水线结构、快速的片内存储器以及特殊的运算指令,这些资源使自适应滤波器的实现更容易、更有效。C54xDSP的LMS、STMPY和RPTBD指令可以为自适应滤波器减少代码的执行时间。本文在通用DSP芯片TMS320C54X上编程调试实现了基于LMS算法的64阶自适应滤波器。利用TMS320C54X实现LMS自适应算法时,存储器中数据的存放形式对DSP的有效运用有着特殊的意义,合理的存放形式,可以使算法实现起来更加快速和高效,为了实现算法中输入样值x(n)和滤波器系数W(n)的对应项相乘,他们在存储器中的存放形式如图3.1所示。图3.1TMS320C54X自适应滤波器存储器组织形式

24、3.1.1流程图图3.2为自适应滤波DSP实现的程序流程图。整个实现过程主要分为3步滤波运算前的相关运算单元、寄存器以及变量的初始化;根据输入的采样值计算滤波器的输出并求出误差;根据LMS算法的迭代公式更新滤波器参数,有新的采样输入后转到第二步循环执行。设计思想在编写程序的初始阶段,首先应该进行自适应系数、缓冲区、变量的初始化,并设置循环缓冲区的地址以及数据和程序段在存储区内的分配。基于LMS自适应算法的输入信号应该同时从输入端口输入,或者利用指令把所需的数据调入指定的存储区间,这些信号既可以直接存储在数据区内(当运行归一化LMS时,直接从这些存储区内调用),也可以利用数据定义指令直接定义在指

25、定的存储区内。值得注意的是,当利用调用指令调用上一程序运行的结果时,主程序一定要保证在数据区的分配上不再定义上一程序的输出数据空间,否则原来存入的数据可能会改变,进而导致程序运行结果不正确。在本程序中,采用直接把数据定义到所指定的存储空间的方法,例如输入信号x(n)被定义在片内RAM中0800H开始的一段字长为128的空间内,期望的响应数据d(n)被定义在以0880H开始的空间内,输出数据y(n)被分配在从0900H开始的128字长的数据区内。自适应滤波器的系数在每次迭代后都要重新修改赋值,所以也要存放在可读写的片内RAM中,而不能存放在ROM区中。此外,还有误差信号e(n),步长因子等。为了

26、避免数据区的重叠,可以把各个数据区之间留一定的保留空间。程序实现结果按照上述设计思想,我们在通用DSP芯片TMS320C54X上具体实现了基于LMS算法的64阶自适应滤波器,程序输入的测试信号是由数字正弦波振荡器(采用DSP和相应算法软件实现,只需简单改变参数即可产生不同频率的正弦波以满足自适应滤波器不同的输入要求)产生的500Hz正弦波,如图3.3所示。自适应滤波器采样频率为8000Hz,实现对128个采样点进行自适应滤波,自适应步长因子在取值范围内取0.01,程序运行后自适应滤波器的输出信号如图3.4所示。可以看出经过一段时间的自适应后滤波器的输出便能够“跟踪”输入信号的频率和幅度,与滤波

27、器的期望输出信号相一致。图3-3自适应滤波器的输入(0.5kHz正弦波)图3-4自适应滤波器输出波形图3.5给出了自适应过程中滤波器的系数变化波形。自适应滤波器之所以能够“聪明”地跟踪输入信号,就在于算法不断地根据实际输出和期望输出的误差调整滤波器的系数,从而使输出跟踪输入。程序调试过程中改变自适应滤波器输入正弦信号的频率或将输入改为阶跃信号等其他不同的信号,滤波器的输出同样能够跟踪输入(波形在此不再列出),这表明基于DSP实现的自适应滤波器能有效地在未知环境中跟踪时变的输入信号,使输出信号达到最优。图3-5输出为0.5kHz正弦波时自适应滤波器的系数变化波形本章小结本章研究了利用TMS320

28、C5402定点DSP实现LMS算法的自适应滤波器的方法,并用DSP汇编语言编程实现了一个64阶的FIR横向结构的数字自适应滤波器。程序运行结果表明,只要选取合适的收敛因子,自适应滤波器对外界信号和噪声有实时跟踪和自我参数调整优化的能力,而米用高速可编程的DSP芯片可以实时地处理各种运算量大的自适应算法,这将使得自适应滤波器在实际中的应用越来越广泛。4自适应滤波器的算法实现4.1自适应滤波器的MATLAB仿真下面的函数是利用Matlab实现的LMS函数,为加快滤波器的收敛速度,采用归一化LMS算法。其中滤波器结构采用横向滤波器,输入信号为s,滤波器阶数为order,期望信号为d,输出的滤波器系数

29、为w,滤波结果为y。Functiony,w=nlms(s,order,d)w=zeros(order,1)s=s(:);N=size(s,1);alpha=0.95;%beita=0.001;%M=5;Forn=order:NU=s(n:-l:n-order+1);y(n)=w*u;e(n)=d(n)-y(n);mu=alpha*2/(M*(beita+u*u);%自适应步长计算w=w+mu*u*e(n);end同时Matlab软件提供了一个基本的自适应滤波程序,它的调用方法如下:y,e,S=adaptnlms(x,d,S);其中,x是输入信号,d是期望信号,y是滤波输出,e是滤波误差,S是一

30、个包含自适应滤波器信息的结构体。S的构成包括S.coeffs:自适应滤波器的系数S.step:LMS的步长大小;S.states:自适应滤波器的状态;S.leakage:自适应滤波器的泄露参数;S.offset:归一化选项的可选偏移值;ter:自适应滤波器的迭代次数;采用同样的方法,还可以利用函数adaptlms,sdaptrls,adaptkalman等函数实现其他类型的自适应滤波器算法。由于通过这些函数无法直接理解计算过程,也不便于算法的改进,就不再详细介绍了。使用LMS算法的自适应滤波器进行信噪分离,也就是去噪。仿真过程为了确保噪声的相关性,首先让噪声通过一个11阶的低通FIR滤波器,然

31、后将滤波后的噪声加到信号中去;最后再用LMS算法的自适应滤波器去噪。Matlab仿真程序运行结果如图4.1所示。仿真结果分析:图4.1的(a)为去噪前信号和噪声的合成时域图,(b)为际信号和去掉噪声后信号的时域图。比较(a)和(b)后可以看出,采用自适应滤波处理后信号得到明显的加强和改善。图4-1自适应滤波器信噪分离仿真结果数据C语言的实现实现的归一化LMS算法如下所示,使用的各个参数说明为:信号输入长度n,滤波器的长度为l,输入数据矢量为x(0:n-1),同时也作为输出数据的缓存,期望信号矢量为d(0:n-1),一阶自适应滤波器的系数为b(0:1)。处理缓存px,用于保存x的延迟数据,长度为

32、l。自适应滤波器的收敛因子为mu,在计算归一化的自适应步长时,使用的信号功率估计值为pow,同时设定功率估计的遗忘因子为al,利用下面的公式估计信号功率:pow(k)=al*(x(k)*x(k)+(l-al)*pow(k-1)voidnlms(float*x,long*n,float*d,float*b,long*l,float*mu,float*pow,float*al,float*px)longk,ll;floate,tmp;if(*mu=1.0)return;if(*sig=0.0)return;if(*al=1.0)return;for(k=0;k*n;+k)px0=xk;xk=0.0

33、;for(ll=0;ll=*l;+ll)xk+=bll*pxll;e=dk一xk;*pow=*al*(px0*px0)+(1.0-*al)*pow;tmp=*mu*2/(1.0+(float)*l)*pow);for(ll=0;ll=l;-ll)pxll=pxll-1;return;汇编的实现Function:ndlmsDescription:ndlmsfirfilter.mmregs局部变量的定义.asg(0),mu_error;2*mu*error(i)variableasg(1),inv_abs_power;inverseabsolutepowerasg(2),abs_power;abs

34、olutepower(long-aligned)asg(4),save_stlasg(5),save_st0asg(6),save_ar7asg(7),save_ar6;stackdescriptionasg(8),save_ar1asg(9),ret_addrasg(10)arg_hasg(11)arg_yasg(12)arg_dasg(13)arg_desasg(14)arg_nhasg(15)arg_nasg(16)arg_l_tauasg(17)arg_cutoffasg(18)arg_gainasg(19)arg_norm_d寻址寄存器的定义asgar1,ar_countasgar2

35、,ar_dasgar3,ar_hasgar4,ar_norm_dasgar5,ar_xasgar6,ar_yasgar7,ar_des.global_ndlms_ndlms:压栈,保护现场,设置环境pshmar1pshmar6pshmar7PSHMST0PSHMST1RSBX0VARSBXOVBFrame-4;保留4个字空间作为局部变量存储单元,;保存误差更新值、功率的逆及绝对功率初始化ssbxsxmst#0,*sp(mu_error)从调用参数中获得访问地址stlma,ar_x;设置信号X的指针ld#0,adsta,*sp(abs_power)mvdk*sp(arg_h),*(ar_h);设

36、置滤波器系数指针mvdk*sp(arg_y),*(ar_y);设置输出信号指针mvdk*sp(arg_norm_d),*(ar_norm_d);设置归一化缓存器指针mvdk*sp(arg_d),*(ar_d)mvdk*sp(arg_des),*(ar_des);圆周寻址mvdk*s(arg_n),*(ar_count);样点计数器mar*ar_count-;设置寻址计数器-nsamples-lld*sp(arg_nh),astlma,bk;圆周寻址的缓存区大小为nhsub#02,astla,*sp(arg_nh)循环计算neXt_sample:;更新功率估计值ld*ar_X,0,babsb;输

37、入信号的绝对值ld*sp(arg_l_tau),tld*sp(arg_l_tau),asmdld*sp(abs_power),asub*sp(abs_power),TS,a;a=Power-power*2“LTAUaddb,ASM,a;a=a+abs(x)*2“LTAUadd*ap(arg_cutoff),TS,A;a=a+CUTOFF*2“LTAUdsta,*sp(abs_power);利用衰减因子和下限值计算功率更新值ld#1,16,brpt#14subc*sp(abs_power),bstlb,*sp(inv_abs_power);inv_abs_power=1/abs_powerld#

38、0,ASM;清除ASM(在指令stllmpy中使用)ssbxfrctstm#1,AR0;设置信号循环的更新步长mvdk*sp(arg_nh),brc;设置循环次数ld*sp(mu_error),t;t=2*mu*error(i)subb,b;累加器b清零mvdd*ar_d+O%;更新缓存单元,新样点输入到dbuffer中;下面是循环,在(nh-1)个抽头处循环rptbdnlms_end-1mpy*ar_norm_d+%,a;a=muerror*n_x+i-N),更新信号缓存指针lms*ar_h,*ar_d+0%;LMS指令,b=b+h(1)*x(i-N+1);a=a+h(1)nlms_begs

39、ta,*ar_h+0%;更新滤波器系数,并更改滤波器系数指针mpy*ar_norm_d+0%,a;a=mu_error*n_x(i-N+1),更新信号缓存扌旨针lms*ar_h,*ar_d+d+0%;LMS指令,b=b+h(2)*x(i-N+2);a=a+h(2)nlms_endstha,*ar_h+0%;更新最后一个滤波器系数sthb,*ar_y+;输出滤波结果;计算新的误差sub*ar_des+,16,b,anega;ah=error(i)=des(i)-y(i)mpya*sp(inv_abs_power);(Q0*Q15)1=Q16sftab,15satb;将匕设为Q13的精度表示ld*

40、sp(arg_gain),tnormb;归一化,b=barg_gainsthb,*sp(mu_error);更新归一化的延时缓存ld*ar_x+,16,ampya*sp(inv_abs_power);(Q0*Q15)t。根据上述的分析知道,对回波抵消器系数的估计需要在近端无话的条件下进行。因此完整的回波抵消算法必须考虑近端的话音检测,否则无法保证滤波器的误差信号最小。目前近端话音检测采用最多的方法是Geigel算法。Geigel算法要求,如果满足式(4-2),即检测到近端话音为|x(n-l)|:|x(n-JV+1)|)(4-2)在回波抵消的计算中,还可以增加一些其他的控制算法来提高系统性能,例如截止检测和回波抑制等。为了保证回波抵消器在无远端话音时稳定工作,不至于由于没有远端话音激励而造成算法发散,因此需要判断远端信号的大小,当小于截止门限时,停止回波抵消器的抽头更新,此时截止检测中需要设置的参数为截止电平。4.4本章小结本章详细介绍了LMS算法的几

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论