DSP自适应滤波及拓展.docx
《DSP自适应滤波及拓展.docx》由会员分享,可在线阅读,更多相关《DSP自适应滤波及拓展.docx(43页珍藏版)》请在冰豆网上搜索。
DSP自适应滤波及拓展
数字信号处理(DSP)
综合设计性实验报告
利用DSP实现自适应滤波及拓展
学院:
电子信息工程学院
班级:
通信0803
指导教师:
杨恒
学生:
黄平08211064
孙敏杰08211073
一、概述………………………………………………………………………………3~10
二、算法原理以及软件仿真…………………………………………………………10~12
三、硬件需求…………………………………………………………………………12~15
四、程序说明…………………………………………………………………………16~19
五、实验步骤…………………………………………………………………………19~22
七、程序的调试过程中的问题及解决办法…………………………………………23~24
八、原程序清单………………………………………………………………………24~34
九、总结及心得体会…………………………………………………………………34~35
一十、参考文献…………………………………………………………………………35
自适应滤波器
一、自适应滤波器的概述:
1、自适应滤波器的发展史及基本原理:
自适应滤波其最重要的性能是能有效地在未知环境中跟踪时变的输入信号,使输出信号达到最优。
因而在电信、雷达、声纳、实时控制以及图像处理等领域都有成功的应用。
常规滤波器具有特定的特性,对于输入信号根据这个滤波器特性产生相应的输出。
也就是,先有了滤波器构成的权系数,然后决定相应输出值。
但有些实际应用往往是反过来要求的,即对滤波器输出的要求是明确的,而滤波器特性是无法预先知道的。
例如长话系统,回波相消器的理想输出是无回波信号,这个要求是明确的,而系统本身却不能一开始就确定下来,因为它取决于长话系统话路传输条件的变化,像这样的应用技术就必须依赖自适应滤波技术。
一个自适应滤波器,其权系数可以根据一种自适应算法来不断修改,使系统的冲击响应能满足给定的性能判据。
如语音ADPCM编码中,线性预测自适应滤波器就要尽量实现误差信号e(n)于输入信号x(n)的前端时刻值x(n-1)、x(n-2)、…等等线性无关。
并由此作为判据不断调节滤波器的权系数。
总的来讲,自适应滤波器有两个独立的部分:
一个按理想模式设计的滤波器;一套自适应算法,用来调节滤波器的权系数,使滤波器的性能达到要求。
如图所示,其中输入信号x(n)通过滤波器产生输出信号y(n),而自适应算法调节系数使误差信号e(n)达到最小。
由于自适应滤波器在未知或时变系统中的明显优势,他在众多领域得到广泛应用。
图①:
自适应滤波器基本原理图
根据系统输入/输出结构变化,自适应滤波器可以应用于不同的目的,这些应用很多需要实时处理。
如自适应预测器、回波相消器以及噪声消除器等等。
并且,绝大多数的应用是基于最新发展的DSP来设计的。
基于DSP的自适应滤波器,比用硬件实现的自适应滤波器有很多优点,其功率消耗及体积更小、更容易实现。
特别重要的是修改程序使系统很容易升级,功能进一步完善。
早期的自适应滤波器的研究,是针对自适应天线系统和数字传输系统的均衡器来设计的。
绝大多数对自适应滤波器的研究是基于Widrow提出的最小均方算法(LMS).因为,LMS算法的设计和实现都较为简单,因而在很多应用场合都非常适用。
本文所讨论的自适应滤波器结构是FIR类型滤波器结构,逼近算法采用LMS算法。
这些结构和算法是自适应技术的基础。
当然,现在越来越多的特定应用,它们需要特定的滤波器结构和自适应算法,但其本质还是一样的。
有些评估自适应滤波器性能的交互式软件包就把采用LMS算法和FIR结构的自适应滤波器作为评估的标准。
一个自适应滤波器实现的复杂性,通常用它所需要的乘法次数和阶数来衡量。
基于DSP实现的自适应滤波器系统,其DSP的数据吞吐量和数据处理能力也就成为了考虑的重要因素。
大多数DSP都有并行的硬件乘法器、流水结构以及快速的片内存储器,这些资源使自适应滤波器的实现更容易,且更有效。
本文讨论自适应算法的一些应用和三种自适应FIR滤波器结构及其实现。
这三种结构是:
①横向型结构(TransveralStructure)
②对称型横向型结构(SymmetricTransveralStructure)
③格型结构(LatticeStructure)
2、自适应滤波器的应用
(1)自适应预测
图中给出了自适应预测的系统结构。
原始信号d(n)的延时x(n)是自适应滤波器的输入信号,y(n)为预测信号输出,e(n)为预测误差。
图②:
自适应预测的系统结构原理图
自适应预测的最主要应用例子是语音信号的波形编码。
为了提高信道容量,压缩编码技术是很重要的手段。
自适应滤波器利用语音信号相邻采样值的相关性,可使预测的误差信号e(n)平均来讲比输入信号小得多,因而把误差信号量化并传输给接收端所需要的位数要少得多。
这种波形编码就是自适应差分脉冲编码(ADPCM),它保证以32kbps的速率完成语音无失真传输。
自适应滤波器用作预测器,一般采用横向型结构,即权系数是非平稳模型的AR参数。
AR处理的方程为:
u(n)=a1u(n-1)+a2u(n-2)+…+amu(n-m)+V(n)
其中,a1,…,am为AR参数。
由上式可知,当前预测值是一定阶段的过去值的线性累加,再加上误差信号V(n)。
自适应AR模型也在检测或增强窄带信号时使用。
当窄带信号淹没在带宽的噪声中时,自适应在线增强器能使窄带输出y(n)的信噪比有明显改善。
(2)自适应均衡器
图中给出另一类应用系统——自适应均衡器的框图。
图中,x(n)为接收信号加上信道噪声,它是所接收的信号通过信道滤波的结果。
d(n)为检测码(传输模式)或伪随机码(训练模式).y(n)为均衡输出码,e(n)为码简串扰剩余,再加上噪声。
自适应滤波器是自适应技术在电讯中很重要的应用,其目的是减小信道产生的幅度和相位失真。
因为在数字传输系统中,每个数码的传送会因信道的影响,产生时域上展宽——即会造成接收信号中数码的交叠,形成码间干扰。
自适应滤波器用来分离各个数码,减少码间串扰。
在很多情况下,信道是时变的,或预先根本不可知的,此时使用自适应技术就尤为重要。
图③:
自适应均衡器的框图
(3)自适应回波消除器
在电话系统中,用户设备都是双向走线,从用户到中心局间的电话网采用双线分别携带进来的语音信号和出去的语音信号。
这样做,可以使导线对与中心局终端混频线圈形成桥式平衡。
但在实际应用中,桥式平衡很难完全满足,就使远距离谈话者的语音信号中的一部分以回波的形式返回到原端,影响话音信号的质量。
尤其是在卫星通信这样的大型线路中,回波返回的延迟时间长达几百毫秒,对话音的影响和损害就非常严重。
为此,可以在网络的两端安装自适应回波消除器,如图④所示。
其中,X(n)为远端回波信号加上近端信号,y(n)为远端回波信号的估计,e(n)为近端信号和回波估计剩余。
图④:
自适应回波消除器示意图
自适应回波消除器在长距离话音通讯、高性能电话会议系统以及卫星通信系统中已经成了必不可少的组成部分,并不断有新的应用出现。
(4)自适应噪声消除器
自适应噪声消除器还可以用来构成自适应的噪声消除器,其结构如图⑤所示原始输入信号d(n)中的噪声估计,并把估计值y(n)与原始信道信号相减以达到噪声消除的结果。
噪声消除器的应用十分广泛,例如心电图记录仪的干扰消除,语音信号的镇噪,飞机、汽车、船舱内大量噪声的抑制,天线旁瓣干扰的消除以及消除50HZ纹波等等。
图⑤:
自适应噪声消除器示意图
自适应滤波器的应用远远不止上面所讲的几种。
这些只是在通信中几个最常见的应用。
实际上,自适应技术的应用要广阔的多。
像瞬间频率跟踪、外来干扰检测、声音多普勒提取、在线系统识别、图象信号处理、生物医学信号处理、波束整形以及自适应控制等等。
3自适应滤波器的结构
自适应滤波器的结构可以是IIR型结构,也可以是FIR型结构。
但在实际用中,一般都是采用FIR型,其主要原因是FIR结构的自适应技术实现更容易,其权系数的修正就调节了滤波器的性能。
同时还可以保证其稳定性,对于IIR滤波器,当自适应处理过程中,极点移出单位圆之外时,就会使滤波器产生不稳定。
用FIR型结构作为自适应滤波器的结构,并不会影响它的应用范围,因为从以前的知识可知道,一个稳定的IIR滤波器总是可以用足够多阶的FIR滤波器来近似代替。
一个自适应的FIR滤波器的结构,可以是横向结构(transveralstructure),对称横向结构(symmetrictransveralstructure)以及格形结构(latticestructure)。
(1)横向型结构
横向型结构是在大多数应用情况下所采用的最主要的自适应滤波器结构,如图⑥示滤波器的输出Y(n)表示为
其中X(n)=[x(n),x(n-1),…x(n-x+1)]
为输入矢量,
w(n)=[w
(n),w
(n),…,w
(n)]
是权系数矢量,T为转置符,N为时间序列,N为滤波器的阶数。
由表达式可见,y(n)实际是两矢量的内积——既把X(n)与W(n)相卷的结果。
图⑥:
横向型自适应滤波器结构示意图
(2)对称横向型结构
如果N阶FIR滤波器的单位脉冲响应h(n)为实数,且满足对称性的条件,即
H(n)=h(N-1-n)或h(n)=-h(N-1-n)
则滤波器具有严格的线性特性的语音处理、波形传输系统、图象处理等方面得到广泛应用。
图⑦:
对称横向型结构FIR滤波器示意图
这种关于中心点对称的FIR滤波器的输出y(n)可由下面的表达式给出
其中N为阶数,它一定是偶数。
注意,对于定点处理器,上式的相加运算可能产生溢出。
为此有时需要对归一化的输入数据在右移一位。
(3)格形结构的自适应滤波器
另一种迭代FIR滤波器结构是格形结构。
格形结构的引出是用Durbin算法求解自适应滤波器的最佳权系数所导出来的。
在使用LMS算法求解自适应滤波器最佳权系数时,可以发现,最佳权系数满足一个线性方程组,该方程组的系数矩阵具有toeplitz性质,即该矩阵为对称矩阵,且方阵的任一子方阵的对角线上的元是相等的。
具有Toeplitz性质的线性方程可以按下列思路求解:
先假设导出了只有N-1元的方程组的解,并由此推出N元方程组的解。
这是一种递推算法,应用于最佳权系数估值,就形成了Durbin算法。
这里不做详细推倒了,直接给出格式结构,如图,7.4-8它是基于一系列预测误差滤波器的去相关传输结构。
格形结构的误差预测器的递推公式如下:
图⑧:
格形结构的自适应滤波器示意图
其中,
是前向预测误差,
是后向预测误差,
是反射系数,m是阶数序列值,M是串联的总级数。
格式结构的优点是按阶递归,故增加或减少级数不会影响存在的阶数设计。
要用格形滤波器进行实际数据处理,首先要知道
,这些系数可以使用Durbin算法,由自相关系数的估值来算出,运算量很大。
可以使用下列反射系数的递推方程来递推估计。
0在诸如噪声消除器、信道均衡器、在线信号增强器等自适应滤波器的应用中,可以采用格形结构。
其滤波器框图为图7。
4-9所示。
这个图是通用形式,有两个输出。
一个输出为
,等效与图7。
4—7所示的自适应滤波器系统的e(n)输出;另一个输出为y(n),等效为自适应滤波器本身的输出。
显然这种格形抽头结构完成两类最佳估计:
一类是格形误差预测器,输出分别为前向预测误差
和后向预测误差
;另一类是多路回归滤波器,其特性用下列方程表示:
从上面算法可以看出,格形抽头自适应滤波器的计算要复杂得多,但计算量的增加却带来很多好处。
首先是收敛速度比横向结构来得快,同时稳定性更好。
其次,系数量化精度的影响很小,对于的低位数要求也使舍入误差很小。
另外,格式结构自适应滤波器还提供了误庆差预测值和反射系数最佳值,后者在作其他分析时有明显物理意义。
正是这些优点,使格式结构得到广泛,应用
f0(n)f1(n)fm(n)
x(n)
--
e1(n)
+
+
d(n)∑∑∑em(n)
+
+
-
∑∑y(n)
图⑨:
格形抽头结构估计示意图
二、LMS自适应算法原理
前面已指出,自适应滤波器除包括一个照某种结构设计的滤波器,还有一套自适应的算法。
自适应算法是根据某种判据来设计的。
最常用的判据是最小均方误差,即理想信号与滤波器输出之差的平方值的期望值最小,并且根据这个判据来修改权系数。
由此产生的算法称为LMS,均方误差ε表示为
ε△E[e2(n)]=E[d(n)-y(n)]2
对于横向结构滤波器,代入y(n)的表达式,有
ε=E[d2(n)]+WT(n)RW(n)-2WT(n)P
其中,R=E[X(n)XT(n)]是N*N的自相关矩阵,它是输入信号采样值间的相关性矩阵。
P=E[d(n)X(n)]为N*1互相关矢量,代表理想信号d(n)与输入矢量的相关性。
在均方误差ε达到最小时,得到最佳权系数W*=[w0*,w1*,w2*,……,wN-1*]T。
它应满足下列方程
=0
即R*W-P=0
这是一个线性方程组,如果矩阵是满秩的,R-1存在,可得到权系数的最佳值满足
W*=R-1P
用完整矩阵表示为
-1
w0*øx(0)øx
(1)…øx(N-1)øxd(0)
w1*øx
(1)øx(0)…øx(N-1)øxd
(1)
.=.
.………….
..
wN-1*øx(N-1)øx(N-2)…øx(0)øxd(N-1)
显然,Φx(m)=[x(n)x(n-m)]是x(n)的自相关值,Φxd(R)=E[x(n)d(n-k)]是x(n)与d(n)的互相关值。
在有些应用中,把输入信号的采样值分成相同的段(每段称为一帧),再求出R和P估计值,以得到每帧的最佳权系数。
这种方法称为块对块自适应算法。
如语音信号的线性预测编码LPC,就是把语音信号分成帧进行处理的。
R和P的计算,要求出期望值E,在实际运算中不易实现。
为此,可通过下式进行估计:
=
=
用以上方法获得最佳W*的运算量很大,对于一些在线或实时应用的场合,无法满足其时间要求。
大多数场合使用迭代算法,对每次采样值求出较佳权系数,称为采样值对采样值迭代算法。
迭代算法可以避免复杂的R-1和P的运算,又能实时求得式的近似解,因而切实可行。
LMS算法是以最快下降法为原则的迭代算法,即W(n+1)矢量是W(n)矢量按均方误差性能平面的负斜率大小调节相应一个增量。
W(n+1)=W(n)-u▽(n)
这个u是由系统稳定性和迭代运算收敛速度来决定的自适应步长。
▽(n)为n次迭代的梯度。
对于LMS算法,▽(n)是E[e2(n)]的斜率。
由式W(n+1)=W(n)-u▽(n),产生了求解最佳权系数的两种方法,一种是最陡梯度法。
其思路为,设定初始权系数,用上式迭代公式计算,直到W(n+1)与W(n)误差小于规定范围。
其中▽(n)的E计算,可用估计值表达式
式中K的取值应该足够大。
如果用瞬时-2e(n)X(n)来代替上式对-2E{e(n)X(n)}的估计运算,就产生了另一种算法——随机梯度法,即WidrowHoff的LMS算法。
此时迭代公式为
W(n+1)=W(n)+2ue(n)X(n)
本文讨论的自适应算法都是基于WidrowHoff的LMS算法。
上式的迭代公式,假定滤波器结构为横向结构。
对于对称横向型结构,也可推出类似的迭代公式
W(n+1)=W(n)+2ue(n)[X(n)+X(n-N+1)]
其中,
X(n)=
,
而X(n-N+1)=
。
三、硬件需求
(1)电源电路
由TMS320C5402DSP构成的系统一般包括3种电源:
5V、3.3V和1.8V(或2.5V)电源。
例如由C5402DSP构成的5402DSK板的输入电压,3.3V和1.8V电源分别为DSP的I/O电源和内核电源。
DSP采用多电源而且内核电压和I/O电压分开供电的方式,目的是为了降低芯片的功耗,提高电源利用率。
I/O电压采用3.3V供电,使得DSP可以直接与外部3.3V的逻辑器件相接口,不需要增加附加的逻辑电平变换电路,从而简化硬件电路的设计。
(2)时钟电路
晶体和晶振(晶体振荡器)是为DSP提供系统时钟的两种基本时钟电路。
大多数器件片内均包含振荡电路,只需外加晶体和2个负载电容即可产生所需的时钟信号。
也可禁止片内振荡电路,直接由外部提供时钟信号。
使用晶体与外部振荡器共同构成时钟振荡器时,需要将晶体跨接在X1与X2/CLKIN之间。
也可以将外部晶振提供的时钟信号直接连接到X2/CLKIN输入端,而将X1脚悬空。
(3)复位电路
复位信号RS使DSP结束当前正在执行的程序,重新初始化CPU与外设。
为了保证芯片的正确复位,复位信号RS必须至少保持2个CLKOUT周期的低电平。
当此脚变为高电平之后,芯片内的程序才开始从FF80h地址执行。
有3种复位方式:
上电复位、手动复位和软件复位。
软件复位可通过软件指令来实现,上电复位和手动复位可使用复位电路实现。
(4)JTAG仿真接口
JTAG接口是用仿真器调试DSP系统时所连接的调试接口。
仿真器通过JTAG接口实现与DSP之间的数据交换。
需要注意的是,设计JTAG接口时EMU0和EMU1引脚需要连接4.7K上拉电阻。
(5)DSP程序的存储器接口
5402DSP有16-23条地址总线(不同的芯片地址总线的配置有所不同),16条数据总线,所以只能与数据宽度为16位的存储器相接口。
C5402的地址总线有20条A1~A19,数据总线有16条D0~D15,可以寻址最多1M字的程序存储器空间,64k字的数据存储器空间和64k字的I/O空间。
(6)存储器
C5402存储空间为192K字(每字16BITS),分成3个可选择的存储空间,64K的程序存储空间、64K字的数据存储空间和64K字的I/0空间。
所有的C5402片内所有随机存储器RAM和只读存储器ROM。
RAM有2种类型:
单寻址RAM(SRAM)双寻址RAM(DASAM)C5402片内还有26个映射到数据存储空间CPU寄存器和外围电路寄存器。
C5402结构的并行性以及在片内RAM的双寻址能力,使它能在任何一个给定的机器周期内同时执行4次存储器操作:
1次取址、读2个操作数和写1个操作数。
与片外存储器相比,片内存储器具有不需插入等待状态(因此速度快)、成本和功耗低等优点。
当然,片外存储器能寻址较大存储空间的能力,则是片内存储器无法比拟的。
C5402的存储空间可以分成3个可单独选择的空间:
程序、数据和I/O空间。
在任何一个存储空间内,RAM、ROM、EPROM、EERPOM或存储器映射外围设备都可以驻留在片内或片外。
这3个空间的总地址范围为192K字
程序存储器空间存放要执行的指令和执行中所用的系数表。
数据存储器存放执行命令所要用的数据。
I/O存储空间与存储器映射外围设备相接口,也可以作为附加的数据存储空间使用。
在C5402中,片内存储器的类型有DARAM、SARAM、ROM三种,取决于芯片的型号。
RAM总是安排到数据存储空间,但也可以构成程序存储空间。
ROM一般构成程序存储空间,也可以部分的安排到数据存储空间。
C5402通过3个状态位可以很方便的“使能”和“禁止”趁许和数据空间中的片内存储器。
这3个状态位是:
◆MP/MC位MP/MC=0,则片内RAM安排到程序空间;若MP/MC=1则片内ROM不安排到程序空间。
◆OVLY位若OVLY为=1则片内RAM安排到程序和数据空间,若OVLY位=0,则片内RAM只安排到数据存储空间。
◆DROM位若DROM=1,则片内ROM安排到数据空间;若DROM=0,则片内ROM安排到数据存储空间。
DROM的用法与MP/MC的用法无关。
C548和C549采用分页扩展方法,使其程序空间可扩展到8192K字。
为此,它们有23根地址线,增加了一个额外的存储器的存储器映射寄存器—程序计数器扩展寄存器,以及6条寻址扩展程序空间的指令。
当片内RAM安排到程序空间时,每页程序存储器分成两部分:
一部分是公共的32K字,另一部分是各自独立的32K字。
公共存储区为所有页享有没,而每页独立的32K字存储去只能按指定的页号寻址。
如果片内ROM被寻址MP/MC=0,它只能在0页,不能映射到程序存储器的其他页。
扩展程序存储器的页号由XPC存储器设定。
XPC映射数据存储单元001EH。
在硬件复位时,XPC初始化位0。
C5402的外部程序存储器可寻址64K(16bits)的存储空间。
它们的片内ROM、双寻址RAM(DARAM)以及单寻址RAM(SARAM),都可以通过软件映射到程序空间。
当存储单元映射到程序空间时,处理器就能自动的对它们所处的地址范围寻址。
如果程序地址生成器(PAGEN)发出的地址处在片内存储器地址范围以外,处理器就能自动的对外部寻址。
为了增强处理器的性能,对片内ROM再细分为若干。
这样,就可以在片内ROM的一个块内取址的同时,又在别的块中读取数据。
当DSP复位时,复位和中断向量都映射到程序空间的FF80。
复位后,这些向量可以被重新映射到程序空间中任何一个128字页的开头。
这就很容易将中断向量表引导ROM中移出来,然后再根据存储器图安排。
C5402的片内ROM内容有大有小,容量有大有小,容量大的片内ROM可把用户的程序代码编写进去,但片内高2K字ROM中的内容是由TI公司定义的,不允许用户写入数据。
这2K字程序空间(F800~FFFFH)中包含如下内容:
C5402的数据存储器的容量最多可以达64K字。
除了单寻址和双寻址RAM(SARAM和DARAM)外,C5402还可以通过软件将片内ROM映射为数据存储空间。
当处理器发出的地址处在片内存储器的范围内时,就对片内的RAM或数据ROM寻址。
当数据存储器地址产生器发出的地址不在片内存储器的范围时,处理器酒会自动对外部数据存储器寻址。
数据存储器可以驻留在片内或片外。
片内DARAM都是数据存储空间。
对于某些C5402,拥护可以通过设置PMST寄存器的DROM位,将部分片内ROM映射到数据存储空间。
这一部分片内ROM既可以在数据空间使能(DROM位=1)也可以在程序空间使能(MP/MC=0)。
复位时,处理器将DROM位清零。
对数据ROM的单操作数寻址,包括32位长字操作数寻址,单个周期就可以完成。
而在双操作数寻址时,如果操作数驻留在同一块内,则要2个周期:
若操作数驻留在不同块内,则只需一个周期就可以了。
为了提高处理器的性能,片内RAM也细分成若干块。
分块以后,用户可以在同一个周期内从同一块DARAM中取出两个操作数,并将数据写入到另一块DARAM中。
在64K字的饿数据存储空间中,包括存储器映射寄存器,这些寄存器驻留在数据页0中,数据页0包括:
◆CPU寄存器(总26个)
◆外设寄存器。
外设电路的控制和数据寄存器,地址为0020H~005FH
◆草稿RAM区(scratch-padRAM)。
地址是存储器的60H-7FH,用作临时使用。
寻址寄存器映射CPU寄存器,不需要插入等待周期。
外围电路存储器用于对外围电路的控制和存放数据,对它们寻址,需要2个周期。
外设的控制和操作是通过寻址存储器映射控制寄存器