




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DSP系统课程设计利用DSP实现自适应滤波小组成员 通信0X0X XX XXXXXX 通信0X0X XXX XXXXXX 2011-1-12利用DSP实现自适应滤波摘要:自适应滤波不仅能够选择信号,而且能够控制信号的特性。自适应滤波器具有跟踪信号和噪声变化的能力,它的系数能够被一种自适应算法所修改。利用DSP可以实时地对信号进行自适应滤波。本设计利用DSP的DMA方式进行信号采集和信号输出,同时对外部输入的信号进行数字滤波。首先利用DSP的DMA方式对外部信号进行实时采集,外部模拟信号先进行A/D转换,利用MCBSP的接收寄存器接收数据,编写程序,调用DSPLIB中的lms滤波函数,对信号进行
2、自适应滤波。滤波后信号存放数据区满发出中断,请求信号输出。利用DMA方式将传输输出数据,经D/A转换后输出。关键词:自适应滤波一 自适应滤波器的基本原理常规滤波器具有特定的特性,对于输入信号根据这个滤波器特性产生相应的输出。也就是,先有了滤波器构成的权系数,然后决定相应输出值。但有些实际应用往往是反过来要求的,即对滤波器输出的要求是明确的,而滤波器特性是无法预先知道的。例如长话系统,回波相消器的理想输出是无回波信号,这个要求是明确的,而系统本身却不能一开始就确定下来,因为它取决于长话系统话路传输条件的变化,像这样的应用技术就必须依赖自适应滤波技术。一个自适应滤波器,其权系数可以根据一种自适应算
3、法来不断修改,使系统的冲击响应能满足给定的性能判据。如语音ADPCM 编码中,线性预测自适应滤波器就要尽量实现误差信号e(n)于输入信号x(n)的前端时刻值x(n-1)、x(n-2)、 等等线性无关。并由此作为判据不断调节滤波器的权系数。总的来讲,自适应滤波器有两个独立的部分:一个按理想模式设计的滤波器;一套自适应算法,用来调节滤波器的权系数,使滤波器的性能达到要求。如图所示,其中输入信号x(n)通过滤波器产生输出信号y(n),而自适应算法调节系数使误差信号e(n)达到最小。由于自适应滤波器在未知或时变系统中的明显优势,他在众多领域得到广泛应用。x(n)d(n)e(n)y(n)-+滤波器结构自
4、适应算法图1:自适应滤波器基本原理图早期的自适应滤波器的研究,是针对自适应天线系统和数字传输系统的均衡器来设计的。绝大多数对自适应滤波器的研究是基于Widrow提出的最小均方算法(LMS).因为,LMS算法的设计和实现都较为简单,因而在很多应用场合都非常适用。本文所讨论的自适应滤波器结构是FIR类型滤波器结构,逼近算法采用LMS算法。这些结构和算法是自适应技术的基础。当然,现在越来越多的特定应用,它们需要特定的滤波器结构和自适应算法,以使蛋的复杂性取代系统性能的提高。但其本质还是一样的。有些评估自适应滤波器性能的交互式软件包就把采用LMS算法和FIR结构的自适应滤波器作为评估的标准。一个自适应
5、滤波器实现的复杂性,通常用它所需要的乘法次数和阶数来衡量。基于DSP实现的自适应滤波器系统,其DSP的数据吞吐量和数据处理能量也就成为了考虑的重要因素。大多数DSP都有并行的硬件乘法器、流水结构以及快速的片内存储器,这些资源使自适应滤波器的实现更容易,且更有效。此外,FIR滤波器有三种结构。这三种结构是:横向型结构(Transveral Structure)对称型横向型结构(Symmetric Transveral Structure)格型结构(Lattice Structure)二 自适应滤波器的应用自适应滤波其最重要的性能是能有效地在未知环境中跟踪时变的输入信号,使输出信号达到最优。因而在
6、电信、雷达、声纳、实时控制以及图像处理等领域都有成功的应用。(1)自适应预测图2中给出了自适应预测的系统结构。原始信号d(n)的延时x(n)是自适应滤波器的输入信号,y(n)为预测信号输出,e(n)为预测误差。d(n)延 时自适应滤波器结构+-y(n)e(n)x(n)图2:自适应预测的系统结构原理图自适应预测的最主要应用例子是语音信号的波形编码。为了提高信道容量,压缩编码技术是很重要的手段。自适应滤波器利用语音信号相邻采样值的相关性,可使预测的误差信号e(n)平均来讲比输入信号小得多,因而把误差信号量化并传输给接收端所需要的位数要少得多。这种波形编码就是自适应差分脉冲编码(ADPCM),它保证
7、以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)自适应回波消除器在电话系统中,用户设备都是双向走线,从用户到中心局间的电话网采用双线分别携带进来的语音信号和出去的语音信号。这样做,可以使导线对与中心局
8、终端混频线圈形成桥式平衡。但在实际应用中,桥式平衡很难完全满足,就使远距离谈话者的语音信号中的一部分以回波的形式返回到原端,影响话音信号的质量。尤其是在卫星通信这样的大型线路中,回波返回的延迟时间长达几百毫秒,对话音的影响和损害就非常严重。为此,可以在网络的两端安装自适应回波消除器,如图所示。其中,X(n)为远端回波信号加上近端信号,y(n)为远端回波信号的估计,e(n)为近端信号和回波估计剩余。图3:自适应回波消除器示意图自适应回波消除器在长距离话音通讯、高性能电话会议系统以及卫星通信系统中已经成了必不可少的组成部分,并不断有新的应用出现。除此之外,自适应滤波在均衡器,噪声消除器等方面也有广
9、泛的应用。三 自适应滤波器的结构自适应滤波器的结构可以是IIR型结构,也可以是FIR型结构。但在实际用中,一般都是采用FIR型,其主要原因是FIR结构的自适应技术实现更容易,其权系数的修正就调节了滤波器的性能。同时还可以保证其稳定性,对于IIR滤波器,当自适应处理过程中,极点移出单位圆之外时,就会使滤波器产生不稳定。用FIR型结构作为自适应滤波器的结构,并不会影响它的应用范围,因为从以前的知识可知道,一个稳定的IIR滤波器总是可以用足够多阶的FIR滤波器来近似代替。一个自适应的FIR滤波器的结构,可以是横向结构(transveral structure),对称横向结构(symmetric tr
10、ansveral structure)以及格形结构(lattice structure)。 我们在本次设计中采用的是横向型结构:横向型结构是在大多数应用情况下所采用的最主要的自适应滤波器结构,如图4示 滤波器的输出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)相卷的结果。 图4:横向型自适应滤波器结构示意图四LMS自适应算法原理前面已指出,自适应滤波器除包括一个照某种结构设计的滤波器,还有一套自适应的算
11、法。自适应算法是根据某种判据来设计的。最常用的判据是最小均方误差,即理想信号与滤波器输出之差的平方值的期望值最小,并且根据这个判据来修改权系数。由此产生的算法称为LMS,均方误差表示为Ee2(n)=Ed(n)-y(n)2对于横向结构滤波器,代入y(n)的表达式,有= Ed2(n)+WT(n)RW(n)-2 WT(n)P其中,R = EX(n) XT(n)是N*N的自相关矩阵,它是输入信号采样值间的相关性矩阵。P = Ed(n) X(n)为N*1互相关矢量,代表理想信号d(n)与输入矢量的相关性。在均方误差达到最小时,得到最佳权系数W*=w0*, w1* , w2*, , wN-1*T。它应满足
12、下列方程=0即 R*W-P=0这是一个线性方程组,如果矩阵是满秩的,R-1存在,可得到权系数的最佳值满足W*=R-1P用完整矩阵表示为 -1w0* 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) =Ex(n)d(n-k)是x(n)与d(n)的互相关值。在有些应用中,把输入信号的采样值分成相同的段(每段称为一帧),再求出R和P估计值,以得到每帧的最佳权系数。这种方法称为块对块自适应算法。如语音信号
13、的线性预测编码LPC,就是把语音信号分成帧进行处理的。R和P的计算,要求出期望值E,在实际运算中不易实现。为此,可通过下式进行估计:=用以上方法获得最佳W*的运算量很大,对于一些在线或实时应用的场合,无法满足其时间要求。大多数场合使用迭代算法,对每次采样值求出较佳权系数,称为采样值对采样值迭代算法。迭代算法可以避免复杂的R-1和P的运算,又能实时求得式的近似解,因而切实可行。LMS算法是以最快下降法为原则的迭代算法,即W(n+1)矢量是W(n)矢量按均方误差性能平面的负斜率大小调节相应一个增量。W(n+1)= W(n)-u(n)这个u是由系统稳定性和迭代运算收敛速度来决定的自适应步长。(n)为
14、n次迭代的梯度。对于LMS算法,(n)是Ee2(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)的估计运算,就产生了另一种算法随机梯度法,即Widrow Hoff的LMS算法。此时迭代公式为W(n+1)= W(n)+2u e(n)X(n)本文讨论的自适应算法都是基于Widrow Hoff的LMS算法。上式的迭代公式,假定滤波器结
15、构为横向结构。对于对称横向型结构,也可推出类似的迭代公式W(n+1)= W(n)+2u e(n)X(n)+ X(n-N+1) 其中,X(n)=,而X(n-N+1)=。五 硬件需求(1)电源电路由TMS320C5402 DSP构成的系统一般包括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的逻辑器件相接口,不需要增加附加
16、的逻辑电平变换电路,从而简化硬件电路的设计。(2)时钟电路 晶体和晶振(晶体振荡器)是为DSP提供系统时钟的两种基本时钟电路。大多数器件片内均包含振荡电路,只需外加晶体和2个负载电容即可产生所需的时钟信号。也可禁止片内振荡电路,直接由外部提供时钟信号。使用晶体与外部振荡器共同构成时钟振荡器时,需要将晶体跨接在X1与X2/CLKIN之间。也可以将外部晶振提供的时钟信号直接连接到X2/CLKIN输入端,而将X1脚悬空。(3)复位电路复位信号RS使DSP结束当前正在执行的程序,重新初始化CPU与外设。为了保证芯片的正确复位,复位信号RS必须至少保持2个CLKOUT周期的低电平。当此脚变为高电平之后,
17、芯片内的程序才开始从FF80h地址执行。有3种复位方式:上电复位、手动复位和软件复位。软件复位可通过软件指令来实现,上电复位和手动复位可使用复位电路实现。(4)JTAG仿真接口JTAG接口是用仿真器调试DSP系统时 所连接的调试接口。仿真器通过JTAG接口实现与DSP之间的数据交换。需要注意的是,设计JTAG接口时EMU0和EMU1引脚需要连接4.7K上拉电阻。(5)DSP程序的存储器接口5402 DSP有16-23条地址总线(不同的芯片地址总线的配置有所不同), 16条数据总线,所以只能与数据宽度为16位的存储器相接口。C5402的地址总线有20条A1A19,数据总线有16条D0D15,可以
18、寻址最多1M字的程序存储器空间,64k字的数据存储器空间和64 k字的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个操作数。与片外存储器相
19、比,片内存储器具有不需插入等待状态(因此速度快)、成本和功耗低等优点。当然,片外存储器能寻址较大存储空间的能力,则是片内存储器无法比拟的。C5402的存储空间可以分成3个可单独选择的空间:程序、数据和I/O空间。在任何一个存储空间内,RAM、ROM、EPROM、EERPOM或存储器映射外围设备都可以驻留在片内或片外。这3个空间的总地址范围为192K字。程序存储器空间存放要执行的指令和执行中所用的系数表。数据存储器存放执行命令所要用的数据。I/O存储空间与存储器映射外围设备相接口,也可以作为附加的数据存储空间使用。在C5402中,片内存储器的类型有DARAM、SARAM、ROM三种,取决于芯片的
20、型号。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和
21、C549采用分页扩展方法,使其程序空间可扩展到8192K字。为此,它们有23根地址线,增加了一个额外的存储器的存储器映射寄存器程序计数器扩展寄存器,以及6条寻址扩展程序空间的指令。当片内RAM安排到程序空间时,每页程序存储器分成两部分:一部分是公共的32K字,另一部分是各自独立的32K字。公共存储区为所有页享有没,而每页独立的32K字存储去只能按指定的页号寻址。如果片内ROM被寻址MP/MC=0,它只能在0页,不能映射到程序存储器的其他页。扩展程序存储器的页号由XPC存储器设定。XPC映射数据存储单元001EH。在硬件复位时,XPC初始化位0。C5402的外部程序存储器可寻址64K(16bit
22、s)的存储空间。它们的片内ROM、双寻址RAM(DARAM)以及单寻址RAM(SARAM),都可以通过软件映射到程序空间。当存储单元映射到程序空间时,处理器就能自动的对它们所处的地址范围寻址。如果程序地址生成器(PAGEN)发出的地址处在片内存储器地址范围以外,处理器就能自动的对外部寻址。为了增强处理器的性能,对片内ROM再细分为若干。这样,就可以在片内ROM的一个块内取址的同时,又在别的块中读取数据。当DSP复位时,复位和中断向量都映射到程序空间的FF80。复位后,这些向量可以被重新映射到程序空间中任何一个128字页的开头。这就很容易将中断向量表引导ROM中移出来,然后再根据存储器图安排。C
23、5402的片内ROM内容有大有小,容量有大有小,容量大的片内ROM可把用户的程序代码编写进去,但片内高2K字ROM中的内容是由TI公司定义的,不允许用户写入数据。这2K字程序空间(F800FFFFH)中包含如下内容:C5402的数据存储器的容量最多可以达64K字。除了单寻址和双寻址RAM(SARAM和DARAM)外,C5402还可以通过软件将片内ROM映射为数据存储空间。当处理器发出的地址处在片内存储器的范围内时,就对片内的RAM或数据ROM寻址。当数据存储器地址产生器发出的地址不在片内存储器的范围时,处理器酒会自动对外部数据存储器寻址。数据存储器可以驻留在片内或片外。片内DARAM都是数据存
24、储空间。对于某些C5402,拥护可以通过设置PMST寄存器的DROM位,将部分片内ROM映射到数据存储空间。这一部分片内ROM既可以在数据空间使能(DROM位=1)也可以在程序空间使能(MP/MC=0)。复位时,处理器将DROM位清零。对数据ROM的单操作数寻址,包括32位长字操作数寻址,单个周期就可以完成。而在双操作数寻址时,如果操作数驻留在同一块内,则要2个周期:若操作数驻留在不同块内,则只需一个周期就可以了。为了提高处理器的性能,片内RAM也细分成若干块。分块以后,用户可以在同一个周期内从同一块DARAM中取出两个操作数,并将数据写入到另一块DARAM中。在64K字的饿数据存储空间中,包
25、括存储器映射寄存器,这些寄存器驻留在数据页0中,数据页0包括: CPU寄存器(总26个) 外设寄存器。外设电路的控制和数据寄存器,地址为0020H005FH 草稿RAM区(scratch-pad RAM)。地址是存储器的60H-7FH,用作临时使用。寻址寄存器映射CPU寄存器,不需要插入等待周期。外围电路存储器用于对外围电路的控制和存放数据,对它们寻址,需要2个周期。外设的控制和操作是通过寻址存储器映射控制寄存器和数据寄存器来完成的,这些寄存器也可以在DSP和外设之间传送数据。C5402除了程序和数据存储器空间外,还有个I/O存储器空间。它是个64K字的地址空间(0000HFFFFH)都在片外
26、。可以用两条指令(输入指令PORTR和输出指令PORTW)对I/O空间寻址。本实验系统C5402DSK的CPLD就利用了DSP的I/O空间。静态数据存储器5402 DSP设计有片上RAM存储器。C5402 片上就有16K字的RAM。使用内部RAM可以全速运行程序,不需要插入任何的等待周期,此时DSP的运行速度最快。所以在一般的应用设计中,应尽可能的选用内部RAM足够大的芯片,尽量避免扩充外部RAM存储器。如果在某些应用中需要用到大量的RAM存储器而内部RAM不能满足要求时,只能通过扩展外部RAM的方式满足设计要求。(7)DSP系统模数(A/D D/A)接口电路在以 DSP为核心的数字信号处理系
27、统中,模数(A/D)、数模(D/A)转换是系统重要的组成部分。因为往往需要进行信号分析、处理的对象是模拟量,例如语音信号、各种传感器输出的模拟信号。这些信号经过放大、滤波以及A/D转换后,从模拟信号转换位数字信号,有DSP芯片对这些数字信号按照某种算法进行处理,例如FIR 滤波器算法。处理后的数字信号在送往D/A转换器进行数模转换,变为模拟信号,在经过平滑滤波之后便可得到最后的模拟输出信号了。(8)MCBSP多通道缓冲串行口C5402 具有2个告诉的全双工同步串行口,可用来与系统中的其他串行器件直接接口。这两个串行口均为多通道串行口MCBSP(Multi-channel Buffer Seri
28、al Port).它支持全双工通信,双缓冲数据寄存器,允许连续的数据流,可以与工业标准的编/解码器、AICS接口。支持多种方式的传输接口。(9)直接存储器访问(DMA)控制器DMA控制器可以在不影响CPU 的情况下完成数据的传输,其数据源和目的可以是片内存储器、片上外设和片外设备。C5402的DMA 拥有6个独立的可编程通道,允许6个不同的DMA 操作。DMA还响应HPI的服务请求。DMA寄存器的寻址:与MCBSP相似,DMA 的控制寄存器有两种访问方式,对少数寄存器是采用直接的存储器影射寄存器访问,而对绝大多数寄存器均采用了同地址的方式来进行访问。DMA寄存器的设置:在众多的DMA寄存器中,
29、通道优先级和使能控制(DMPREC)寄存器控制DMA系统总体操作的几种功能,包括:各个DMA 通道的使能选择、复用中断控制和通道优先级控制。DMPREC位于数据空间0045h处,是DMA 寄存器中唯一非同地址访问的寄存器。每个DMA通道都可以通过设置DE字段(使能位)独立地使用,当该通道完成了一次块传输后,DMA控制器会将使能位清零,因此CPU可以通过查询的方式来检测DMA是否完成,如果DMA控制器和CPU同时修改使能位时,DMA控制器优先。DMA事件可以在一次传输完成后触发中断,但由于C5400 的中断资源有限,所以DMA中断是与其他的外设中断复用的。通过INTOSEL字段可以设置不同的复用
30、配置。DMA通道的优先级可以通过DPRC字段设置,优先级高的将优于优先级低的传输,如果同时有几个优先级相同通道都使能时,DSP将循环地为这几个通道服务。除DMPREC外,其他的DMA寄存器可以分为两类:通道寄存器和全局寄存器,通道寄存器指与每一个通道的特定设置相关的寄存器,如源地址寄存器、目的地址寄存器、单元计数寄存器等,每一个通道都有一套自己的通道寄存器;全局寄存器指对所对通道操作都起作用的寄存器,如帧地址索引寄存器、全局源地址寄存器等。DMA的执行事件是一个较为复杂的问题,它与源和目的的位置、外部接口、运行中的DMA通道和通道的优先级等多个因素有关。每次16bits 的DMA传输包括一次读
31、和一次写,当源和目的都在片内,共需要4个CPU时钟,其中读和写操作个耗费2个时钟。因此DMA最快的速度为CPU时钟的四分之一,当源和目的涉及到片外设备时需要根据实际情况计算。另外,DMA通道传输时间与其优先级也有关系,优先级高的通道总是优于优先级低的,同等优先级的通道是轮流传输的。除DMA通道外,增强的HPI 也使用DMA的总线来访问片内存储器,它在DMA控制器内有一个专门的端口来产生对DMA总线的请求。当HPI产生了总线请求后,DMA控制器会在当前的一个数据传输完成后,将总线交给HPI使用,同时将所有的DMA传输挂起来。直到HIP释放总线后,DMA再继续执行。所以,DMA的传输时间与HPI
32、也有关系。需要指出的是,双字传输出不会被HPI打断的,保证了DMA数据的完整性。虽然HPI在DMA控制器有专门的端口,但他并不占有DMA通道资源。六 程序说明(1)程序流程图如下所示:主程序 中断服务程序J5口通过MIC输入语音信号 J6口通过耳机输出语音信号数据送AD50进行数模转换信号送至AD50,进行模数转换 经MCBSP数据经MCBSP通道读取数据到CPU数据经中断子程序自适应滤波数据送CPU等待中断子程序数据送MOMERY存储 图5:信号采集和处理流程图 (2)主要程序及其注释DMA在CCS集成开发环境下的相关头文件: 在CCS集成开发环境中,与DMA相关的头文件有:regs54xx
33、.h、dma54xx.h。它们位于C:tic5400dsk5402include目录下。在这两个头文件中,定义了DMA寄存器资源以及使用方法。 在reg54xx.h头文件中,定义了DMA寄存器的地址和基本访问方式,以及寄存器的各个比特域和访问方法。与此相关的定义如下所示(部分):/*/* 定义DMA寄存器部分地址*/*/ #define DMPREC *(volatile unsigned int*)0x54#define DMPRE_ADDR 0x54#define DMSBA_ADDR0x55 #define DMSAI_ADDR0x56/*定义全局重新安装寄存器(部分地址)*/#defi
34、ne DMA_CH00x00 /* DMA Channel 0 */#define DMA_CH10x01 /* DMA Channel 1 */#define DMA_CH20x02 /* DMA Channel 2 */#define DMA_CH30x03 /* DMA Channel 3 */#define DMA_CH40x04 /* DMA Channel 4 */#define DMA_CH50x05 /* DMA Channel 5 */DMA寄存器配置与初始化:本实验利用DMA通道2接受数据,利用DMA通道3将滤波后信号数据发送出去。因此对DMA通道2和通道3都要进行配置和初
35、始化。/* 初始化DMA通道2*/dmsefc = (DSYNC_REVT1 12); dmmcr = (AUTOINIT_ENABLE 15) | (DINM_ENABLE 14) | (IMOD_HALFBLOCK 13) | (CTMOD_DEC 12) | (INDEXMODE_NOMOD 8) | (SPACE_DATA 6) | (INDEXMODE_INC 2) | (SPACE_DATA); dmctr = 0xFF; src_addr = DRR1_ADDR(HANDSET_CODEC); dst_addr = (unsigned int) &buffer; dma_init
36、(DMA_CH2, dmsefc, dmmcr, dmctr, SPACE_DATA, src_addr, SPACE_DATA, dst_addr);/* 设置通道2的帧数 */ DMA_FRAMECOUNT(DMA_CH2, 2); /* Set up global autoinit registers for DMA CH2 Input */ dmgsa = src_addr; dmgda = dst_addr; dmgcr = 0xFF; dmgfr = 2; /* Set up global priority and enable control register for Ch2 *
37、/ dmpre = (HIGH_PRIORITY 10) | (INTSEL_01 6); dmsrcp = SPACE_DATA; dmdstp = SPACE_DATA; dmidx0 = 0; dmidx1 = 0; dmfri0 = 0; dmfri1 = 0; dma_global_init(dmpre, dmsrcp, dmdstp, dmidx0, dmidx1, dmfri0, dmfri1, dmgsa, dmgda, dmgcr, dmgfr);/* 使能DMA通道2 */ DMA_ENABLE(DMA_CH2); DMA通道3的设置在中断服务程序中,设置方法与通道2相似。
38、/* 使能DMA通道3,将数据发送出去*/DMA_ENABLE(DMA_CH3);从TMS320C54xDSPLIB库中调用DLMS只适应滤波程序:利用DSPLIB库时,在工程中要包含库文件:54xdsp.lib下面是关于DLMS函数的说明。DLMS函数调用格式:Short dlms (DATA*x,DATA*h,DATA*r,DATA*d,DTAT*des,DATA step,ushort nh,ushort nx)入口参数说明:xnx 表示含有nx个实数的实输入信号向量;hnh 表示含有nh个实数的系数向量,按自然顺序排列,即滤波器的单位脉冲响应。存储器的配置要求:这是一个循环缓冲区,其起
39、点必须位于Kbit的边界处,即起始地址K值的最低有效为必须为0。rnx 表示含有nx个实数的输出向量;允许原位运算,即r=x。desnx 表示含有nx个实数的期望向量。dbuffernh 延迟缓冲区:在多个输入缓冲区的清况下,此数组阵列只能在一个数据块运算之前初始化为0,在连续的数据块计算时,延迟缓冲区保存着后一次计算所需要的前一次的输出数据。对存储器的要求同hnh。step 步长。步长越长,收敛的时间越短,但滤波器的稳定性较差;步长越短,收敛的时间越长,但滤波器的稳定性较好,失真小。nh 系数的个数。nx 向量x中实数的个数。功能说明:输入的实数存在向量x中,滤波的输出结果存在向量r中。此函
40、数包含延迟滤波器存储器的地址dbuffer,此地址包含了前一次的延迟结果,以允许数据块的连续处理。此函数可用于块-块滤波也可用于点-点(nx=1)滤波。七 实验步骤:本实验信号的实时采集和处理过程是:1、信号采集: 模拟输入信号通过DSK的J5端口输入,经TLC320AD50进行A/D转换得到数字信号,数字信号通过DSP的MCBSP1的接受寄存器进行接受,然后到达DMA通道2。2、信号滤波:本实验滤波程序是直接调用TI的DSPLIB库中的DLMS函数,并将滤波后的信号放在一个存储区中。3、信号输出或显示:滤波后的信号可以在CCS上显示,或供下一级程序使用,也可以通过DMA将信号输出。过程是,滤
41、波后信号经由DMA通道3放到DSP的McBSP1的发送寄存器,将信号发送到TLC320AD50,经D/A转换后输出到DSK的J6端口。其步骤图如下图所示: 图6:实验步骤流程图八 实验结果:我们采用输入两个正弦信号。(1) 输入信号buffer的时域波形为:图7:输入时域波形图(2) 输出信号out_buffer时域波形为:图8:输出时域波形图频谱为:图9:输出频域波形图九 自适应滤波在回波抵消的应用 设计背景因为自适应回波是由于话音信号在电话网中传输时由于阻抗不匹配而产生的在模拟电话里,由于二-四线转换混合线圈不平衡造成电流泄露,一部分信号能量被反射回信号源会产生回波回波的影响因通信距离和某
42、些网络设备的因素而加剧在语音识别应用里,回波也会影响信号检测的准确性通信信道中的回波是无法预先知道其特性的噪声,是随时间而变化的所以处理回波信号应采用具有跟踪信号和噪声变化能力的,且其特性也随信号和噪声的变化而变化的滤波器,以达到最优滤波即采用自适应滤波器远端语音Y(n)作为其输入信号,近端信号s(n)作为其输入信号,其中s(n)包含参考信号的回波r(n)和近端语音信号(n)滤波器的输出是回波估计 r(n),将r(n)从近端信号s(n)中滤除,其差值e(n)称为误差信号,即e(n)=s(n)-r(n)若不考虑近端语音信号x(n),e(n)再回馈到自适应滤波器并自适应校正FIR横向数字滤波器的抽
43、头系数,则实际回波r(n)与估计回波r(n)最小均方差为最小. 设计方案通过dsk板J5口输入外部语音信号,通过J6口输出经过处理的语音信号,修改程序参数观察效果:mode=0时,输入没有回声的语音信号,未经处理直接输出。Mode=1时,输入语音信号,在此基础上叠加延迟的原信号,近似模仿回声的产生。未经滤波直接输出。Mode=2时,输入语音信号并叠加回声,经过自适应滤波器处理后输出,可以通过耳机听到放音效果与mode=0时几乎相同。开 始初始化滤波器系数,输出DSK板初始化读语音采样值更新输入数组Mode=? 0 1 2全 通F I RLMS滤波器输 出 信 号结束 ?结 束图10:程序流程图
44、十 具体程序:(一). 自适应滤波器源程序1:firlab.c/*/* Adaptive Filtering.C AIC,McBSP,DMA initialization for Adaptive Filter */* */* Goal: This code performs the following functions: */*- toggle the three LEDs on the DSK 设置LED灯 */*- setup AIC (CODEC) parameters设置CODEC参量 */* - initialize DMA Channel (CH2-input)初始化DMA通道
45、 */*- turn on interrupts 启动中断服务程序 */*- run forever (waiting for DMA interrupts to transfer data) */*等待DMA中断 */*/ /*/*IncludeFiles */*/#include /*声明头文件*/#include #include #include #include #include /*/* Function Prototypes 函数原型 */*/void delay(s16 period); /*延迟子程序声明*/extern void DMAC2ISR(); /*外部中断子程序声
46、明*/*/* Global Variables */*/HANDLE hHandset; /*句柄变量*/unsigned int dmsefc, dmmcr, dmctr, src_addr, dst_addr;unsigned int dmpre, dmsrcp, dmdstp, dmidx0, dmidx1, dmfri0, dmfri1, dmgsa, dmgda, dmgcr, dmgfr;/* Create specific data section for buffer (symbol, section_name) 开辟数据存储空间 */#pragma DATA_SECTION(
47、buffer,audio_buffer);int buffer0x500;#pragma DATA_SECTION(out_buffer,outt_buffer);int out_buffer0x500; /* Create specific data section for coeffiecients */#pragma DATA_SECTION(coeffs,coefficients);int coeffs10;/* Create specific data section for delay buffer */#pragma DATA_SECTION(delaybuff,delay);i
48、nt delaybuff16=0; /* declare and initialize two variables for DMAC ISRs 定义并初始化ISR寄存器*/int frame=0; int flag=0;int temp; int currbuff = 0;/* delayptr holds the address of the start of the delay buffer 获取初始地址*/ int *delayptr1 = &(delaybuff0); interrupt void DMAC2ISR(); /声明中断服务子程序/*/*MAIN */*/void main() /主程序 s16 cnt=2;/* These are the items that BIOS will set when we use it */ BSCR = 0x8806; /*切换控制寄存器*/ XPC = 0; /*程序计数器扩展寄存器,在硬件复位时,XPC初始化为0 */ PMST = 0xA0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国文件阅读器行业市场调研分析及投资战略咨询报告
- 2025年中国智能手机电感市场运营态势及发展前景预测报告
- 税务师美姗冲刺课件
- 2025年 西安齐力铁路技工学校招聘考试笔试试题附答案
- 2025年 禄丰市焊工证理论考试练习题附答案
- 香滑绿豆蓉行业深度研究分析报告(2024-2030版)
- 中国通信控制处理机行业市场全景调研及投资规划建议报告
- 2025年 常德汉寿县事业单位招聘考试笔试试题附答案
- 2020-2025年中国浓香型白酒行业市场调查研究及未来发展趋势报告
- 中国海口市房地产行业市场深度分析及投资策略咨询报告
- 坚守廉洁底线弘扬清风正气
- 小区物业管理计划书:范文
- 公司法务部职责与职能
- 泉州市石狮市2024-2025学年六年级下学期小升初数学考前押题卷含解析
- 水电工程验收单
- 2025年广东省高中历史学业水平考试综合测评(一)历史试题(原卷版+解析版)
- (2025)全国交管12123学法减分考试题库附答案
- 攸县2024-2025学年小学六年级第二学期小升初数学试卷含解析
- 2025译林版高中英语高考复习必背全七册单词表(精校打印)
- 撬装加油站承包合同协议书
- 国家开放大学行管本科《政府经济学》期末考试总题库2025春期考试版
评论
0/150
提交评论