语音噪声滤波教材_第1页
语音噪声滤波教材_第2页
语音噪声滤波教材_第3页
语音噪声滤波教材_第4页
语音噪声滤波教材_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

1、DSP课程设计实验报告语音噪声滤波院(系):电子信息工程学院小组成员:通信0707班 高砾琦07211201通信0708班 李淼07281156指导教师:高海林DSP设计实验报告语音噪声滤波通信0707班高砾琦通信0708班李淼目录一、设计任务 3二、设计内容 4三、设计思路5四、算法原理61、FIR滤波器算法62、直接存储器访问DMA 73、A/D和D/A转换器 94、LMS 算法9五、主要函数介绍 14六、程序设计、调试 19七、实验结果分析 371、低通滤波器的对比 372、语音自适应滤波效果 49八、实验心得与体会 5367亠、设计任务语音通信的目的是传递声音信息。位于甲地的通信者发出

2、的声音经语音传感 器变换成为电信号,经发送端设备变换为适合传输的形式, 通过传输信道传输到 乙地。在乙地经接收端设备恢复出原来的语音信号, 经耳机或者喇叭转换为接收 者可以听到的声音信号。这就是最基本的语音通信系统,但是由于周围环境的原 因,我们采集到语音信号经常含有不同程度的噪声。典型语音通信系统中的噪声来自三个方面: 信号处理设备产生的电噪声及 传输信道中的电噪声; 信号发送端空间环境中的音频噪声信号经麦克风变换 为电信号之后,与有用信号其同传递到接收端;信号接收端空间环境中的音频 噪声对信号接收者的影响。噪声是由于发生体作无规则振动产生的。在很多情况下,环境中的背景噪声是通信系统中噪声干

3、扰的主要来源。当语音信号受到背景噪声干扰时语音通信质量变得不可接受,因此要对语音信号中的噪声滤除。DS利用直接存储器访问方式DMA( Direct MemoryAccess)采集数据 时不打扰CPU因此利用DM方式工作时,CP可以对语音信号进行实时地滤波。 本设计要求利用DSP勺DM方式进行信号采集和信号输出,对语音信号进行数字编 码,滤波后进行解码。自适应滤波不仅能够选择信号,而且能够控制信号的特性。自适应滤波器具 有跟踪信号和噪声变化的能力,它的系数能够被一种自适应算法所修改。利用DSP 可以实时地对信号进行自适应滤波。DSP用直接存储器访问方式DM采集数据时 不打扰CPU因此CP可以对信

4、号进行实时地滤波。本设计要求利用DSP勺DM方式 进行信号采集和信号输出,同时对外部输入的信号进行数字滤波。这就是这次设计所要完成的任务。二、设计内容基本部分:(1)对DM进行初始化;(2)对A/D、D/A进行初始化;(3)编写DM中断服务程序和滤波算法程序,实现语音信号的实时滤波;(4)设计FFT算法,或调用DSPLIB中的FFT函数,实现对信号的频谱分析;(5)设计子自适应滤波算法,调用DSPLIB的自适应函数,实现对信号的 自适应滤波。发挥部分:1)利用自适应滤波实现语音信号的回波对消。2)比较加不同窗和阶数时滤波器的滤波效果;3)测试所设计滤波器的幅频特性和相频特性,并与MATLIBF

5、的设计结果进行比较。要求完成的任务(1)编写C语言程序,并在CCSM成开发环境下调试通过;(2)将包含噪声的语音信号进行滤波,从扬声器输出端口输出,比较滤波 前后的信号的变化;(3)按要求撰写设计报告。三、设计思路首先利用DS的DM方式对外部含噪声的语音信号进行实时采集, 语音信号先 经过A/D转换为数字信号,利用MCBS的接收寄存器接收数据。编写滤波算法程序, 而且调用DSPLIB勺Ims中的滤波函数,对信号进行滤波。滤波后的数据利用 DM方 式送到D/A转换器转换为模拟信号。这就是我们的设计思路。具体的设计方案原理图如下。模拟输入信号通过 DSK勺MIC端口输入,经A/D 转换,然后到达D

6、S的DM通道2, DS接收到信号后,调用中断服务程序进行滤波, 选择滤波模式进行不同种类的滤波,滤波后的信号可以在 CC上显示,也可以通 过DM通道3将信号输出到D/A转换器,经D/A转换后从SPEAKER口输出。主程序中断服务程序四、算法原理1、FIR滤波器算法FIR滤波器是指系统的单位脉冲响应hk仅在有限范围内有非零值的滤波 器。在本设计实验中,滤波占有十分重要的地位。数字滤波是数字信号处理的基 本方法。在许多信息处理过程中,如对信号的过滤、检测、预测等,都要广泛地 用到滤波器,而数字滤波器则因其设计灵活、 实现方便等特点而广为接受。 所谓 数字滤波器就是具有某种选择性的器件、网络或以计算

7、机硬件支持的计算程序。 其功能本质是按事先设计好的程序,将一组输人的数字序列通过一定的运算后转 变为另一组输出的数字序列,从而改变信号的形式和内容,达到对信号加工或滤 波以符合技术指标的要求。数字滤波器是语音、图象处理、模式识别以及谱分析中的重要的处理运算环 节。DSP由于其本身具有并行的硬件乘法器、流水结构以及快速的片内存储器等 资源,其技术已广泛地应用于噪声及振动的各个领域。因此用DS芯片实现FIR数字滤波,除具有准确度高、不受环境影响等优点外,由于DS芯片具有可编程特性,程序的可移植性好,灵活性强。实际应用时只需按要求修改滤波器参数, 并对程序作较少的改动,即可实现不同截止频率的FIR滤

8、波器,实用性较强。下面简单介绍一下数字滤波器的基本原理。数字滤波器原理一般具有如下差分方程:y(n)= EakX(n- k)+ Eb ky(n-k)(1)式中x(n)为输人序列,y(n)为输出序列,ak和bk为滤波器系数,,N是滤波器 阶数。当所有的bk均为零,则有y(n)= Ea kx( n-k)(2)(2)式是FIR滤波器的差分方程,其一般形式为y(n)=刀 h(k)x(n -k)(3)对(3)式进行z变换,整理后可得FIR滤波器的传递函数:kH(Z)=刀 h(k) z-(4)FIR数字滤波器的设计方法主要有窗函数法和频率抽样设计法,其中窗函数 法是基本而有效的设计方法。下面为FIR滤波器

9、的算法实现方法。FIR滤波为有限冲击响应滤波,其滤波结构是一个分节的延时线,每节的输 出加权累加,得到滤波器的输出。由前面的分析知,FIR滤波器数学上可表示为:y(n)=刀 h(k)x(n -k)(5)式(5)中xn为最近(t=nT)的输人信号,xn-k是延时了 k个取样周期的 输人信号,hk是第k个延时节的加权值(即滤波器系数),可由MATLA设计出来, yn是时刻t=nT时滤波器的输出信号,N是滤波器的阶数也称滤波器的抽头数, 为实整数,且须满足NX t1/fs,其中fs为采样频率,tmac为每个抽头数乘加运 算的时间,从这个式子和结构可以看出,为什么称之为有限冲激响应滤波器。因为该滤波器

10、的冲激响应在N个周期后变为0也就是每次乘加运算都要用到之前NT 数。滤波器系数可通过MATLA设计得到,若采用海明窗设计的FIR滤波器是一个 32阶的低通滤波器,截止频率为150Hz.由“ MATLA设计FIR滤波器”可得h(n), 这样设计的滤波系数再经过量化即得。本次设计实验中,FIR滤波器可以通过编写滤波算法程序,或调用 DSPLI沖 的滤波函数来实现。但一般调用 DSPLI沖的滤波函数不能够达到很好的滤波效 果,所以我们采用编写滤波算法程序来实现FIR滤波器。2、直接存储器访问 DMA直接存储器访问(Direct MemoryAccess)是C54x DS非常重要的片上外设, DM控制

11、器可以在不影响CPU勺情况下完成数据的传输,因此数据传输速度快,在 要求信号实时采集和处理的系统中常采用 DM方式进行信号采集和传输。C5402 有6个可独立编程的DM通道,每个DM通道受各自的5个16位寄存器控制:源地址 寄存器DMSR、目的地址寄存器DMDST单元计数寄存器DMCTR同步事件和计数 寄存器DMSFC发送模式控制寄存器DMMCR目的地址寄存器DMDST定DM要传送 数据目的地址和首地址。单元计数寄存器 DMCTR定DM传送数据的个数为DMCTR 寄存器的值加1。同步事件和桢计数寄存器DMSF规定DM传送数据的同步事件类 型和传送一块数据所含桢信号的个数。 发送模式控制寄存器D

12、MMCR定DM通道的 传输模式,当DM工作在自动初始化模式时,CPUfe一个DM事件完成后自动装载 下一个DM初始化设置并继续进行数据传送。DINM位和IMO位设置DM中断产生方 式。CTMO位设置发送计数模式控制,CTMO位为0时,DM工作在多桢模式,CTMOD 位为1时,DM工作在自动缓冲ABU模式。SIND位和DIND位用来设置源地址和目的 地址的自动调整方式。此外,DM的 6个通道还受通道优先级和使能控制寄存器 DMPRE控制。本实验利用DM通道2与 MCBSPI道结合来读取A/D转换器的数据,利用DM通 道3与MCBSPI道结合来将处理后的数据发送至 D/A转换器。选择MCBSP1道

13、的接 收寄存器DRR11(41H)为DM传送数据的首地址,并选择DM源地址工作在不调整 方式,选择MCBSP接收事件为DM同步事件,以实现DM和MCBS的结合。A/D转换 器的数据按MCBSP的设置被传送到DS内部接收寄存器DRR1 中,再由DM通道2 将DRR1中的数据读到指定数据存储区inp_buffer中完成数据采集。DM在传送外 部来的数据时不会影响CPU勺正常运行,当DM通道2采集完一组数据后产生一个 DM中断事件中断CPU来通知CPU寸其进行相应的处理,此时DM通道2可以按照 设定继续采集下一组数据,实现了数据采集与 CPI处理的并行操作。当一组数据处理完成后,将数据存放在数据存储

14、区 out_buffer中,选择 out_buffer为DM通道3的首地址,并选择源工作地址工作在不调整方式。选择 MCBSPI道的发送积存器DXR11(43H)为DM通道3传送数据的目的地址,并选择 DM源地址工作在不调整方式,选择 MCBSP接收事件为DM同步事件,以实现DMA 和MCBS的结合。在CC集成开发环境中,与 DM相关的头文件有regs54xx.h和dma54xx.h。在 这两个头文件中,定义了 DM的寄存器资源、使用方法和DM寄存器的地址和基本 访问方式,以及寄存器的各个比特域和访问方法,因此需要进行 C源程序的开始 处包含这两个头文件。输入信号经 A/D转换后,利用DM通道

15、2进行传输进入DSP 处理,而滤波后的信号输出利用了 DM通道3进行传输进入D/A转换器等输出,因 此需要对DM通道2和通道3进行初始化配置。3、A/D和D/A转换器本实验要用到A/D和 D/A转换器。A/D转换器能够将接收的语音信号(模拟信 号)转化为数字信号,供CP!进行处理;D/A转换器能够将数字信号转换为语音信 号送SPEAKER 口输出。要使用A/D和 D/A转换器,必须首先对A/D和 D/A转换器进行初始化设置,即设 置A/D转换器的工作模式(15+1bit模式,16bit模式)、输入增益(0dB,6Db,12dB) 以及抽样频率(8000Hz,16000HZ等。4、LMS算法最小

16、均方(LMS,least-mean-square) 算法,是由 Widrow和Hof在 1960年创建的,直到现在它还是应用最广泛的自适应滤波算法丄MS算法是随机梯度算法族中的一员。该算法在随机输入维纳滤波器递推计算中使用确定性梯度。LMSf法的一个显著特点就是它的简单性。此外,它不需要计算有关的相关函数,也不需要 矩阵求逆运算。事实上,正是因为LM算法的简单性,使得它成为其他自适应滤 波算法的参照标准。这两个过程一起工作组成一个反馈环,如图 3所示。首先有一个横向滤波器 (围绕它构造LMSf法);该部件的作用在于完成滤波过程。其次,有一个对横向滤 波器抽头权值进行自适应控制过程的算法。横向滤

17、波器各部分的细节如图4所示。抽头输入u(k),u(k-1),u(k-M+1)为MX抽头输入向量a(k)元素,其中M+是延迟单元的个数;这些输入张成一个多维空间。相应的ho(k), hi(k), . ,hm-1(k)为Mxl抽头权向量h(k)的元素。通过LMSf法计算这个向量所得的值表示一个 估计,当迭代次数趋于无穷时,该估计的期望值可能接近维纳最优解在滤波 过程中,期望响应d(k)与抽头输入向量z(k) 一道参与处理。在这种情况下,给定一个输入,横向滤波器产生一个输入,横向滤波器产生一个输出y(k)作为期望响应 d(k)的估计。因此,我们可把估计误差e(k)定义为期望响应与实际滤波器输出之 差

18、,如图4所示。估计误差e(k)与抽头输入向量z(k)都被加到自适应部分,因此 围绕抽头权值的反馈环是闭环的图3.自通应横向滩波器框圈图4.横向渡波器结构框图回声消除器的基本原理:声学回声消除的功能原理框图如图5所示:e(n)图5.回声消除器原理框图回声消除的基本原理可以概括如下:自适应地合成回声,并从有回声干扰地信号中减去该合成回声图6.回声消除器的基本原理图一般回声消除算法通过自适应滤波来完成,其基本原理如图6所示。其中,远端信号城x (k)通过回声信道h产生回声y(k),近端信号d(k)是由回声y(k)和近 端声音代句(可包含噪声信号)得到。通过使用M抽头的FIR自适应滤波器h来模 拟回声

19、信道h,可以使所得y(k)通近回声信号,进而达到回声消除的目的由此可A见,回声消除的关键是自适应地调整 h使其通近h,可通过现有的各种自适应滤 波算法实现。这个实验采用的LMS算法,即最小均方误差算法设计的自适应滤波器进行未 知系统识别,以将回声信号滤除。该自适应滤波器是FIR横向滤波器,可以根据 输出自动修改滤波器的权系数,从而逼近未知系统回声通道。算法的实现基于 TMS320C5402DS芯片和CCS系统的C语言。远端的信号通过回声通道产生回声信号 d(n),该信号一般为远端信号的衰减和延迟。远端信号通过自适应滤波器产生回声预测信号y(n)。在k时刻,它们之差为剩余回声信号:q = dk

20、- yk用它来控制LMS自适应滤波器的系数s (n)3(n 1) = s(n)2A q in(n)其中卩为自适应步长因子,一般取0:卩叮,可视为常数,k时刻滤波器的输 出为:N -1y(n)= w(n) in(n _ i)i =0以上三个方程是LMS!小均方误差算法的核心方程,也是 C语言编程的依据。LMS 的算法流程图如下:开始送入信号dkdk的值送入in ( n)求回声预测信号ykN丄y(n) =、 w(n) “ in(n i)i_Q求剩余的求自适应步长ux ek更新滤波器系数Un 1)=w(n) 2金 in(n)结束图7.LMS算法流程图五、主要函数介绍自适应滤波算法:利用LMS勺算法实

21、现对已叠加噪声的信号进行滤波,由C语言实现LMSI法的 C语言程序如下所示:double Ims (double w,double x,double dk,double ek) /移植到CCS中的lms算法s16 i;double uek,yk;yk=0;for(i=0;iN;+i)yk=yk+wi*xi;ek=dk-yk;uek=2*mu*ek;for(i=0;iN;i+)wi=wi+uek*xi;return(ek);然而算法的效率与滤波器的长度有关,因此应当适当减小滤波器的长度;同时也应该适当的提高FIR滤波器的阶数。同时替换原有的LM算法的C语言实现 程序,更换为CCS勺diplib

22、库中的函数short dlms(PARAM取代自定的lms()函数, 同时用dsplib库里的函数short fir(PARAM)产生回声通道的输出信号(也就是用 预定阶数的FIR滤波器模拟回声通道),该输出信号作为自适应滤波器的理想输出 信号,对之进行逼近进而得到预定结果。Dsplib库中的dlsm函数和fir函数的子程序:Dlsm.h 的程序如下,路径:C:tic5400dsplibEXAMPLESDLMS*/ File name:dlms_t.c/ Versio n: 0.01/ Description: test for dlms routine*#in elude #i nclude

23、 #in elude #i nclude test.hshort i;short eflagr= PASS;short eflagh= PASS;void ma in (void)(opti on al) buffer/* clear */for (i=0;iNH;i+) hi =0;/ clear coeff bufferfor (i=0;iNX;i+) ri =0;/ clear output(opti on al)for (i=0; iNH; i+) dbufferi = 0; / clear delay buffer (a must)/* compute */dlms(x,h,r,&d

24、p,des,STEP, NH, NX);/* test */eflagr = test(r, rtest, NX, MAXERROR);/ for reflagh = test(h, htest, NH, MAXERROR);/ for hif (eflagr != PASS)exit(-1);if (eflagh != PASS)exit(-1);return;FIR.h 的程序如下,路径:C:tic5400dsplibEXAMPLESFIR*/ File name:fir t.c/ Versio n: 0.01/ Description: test for fir routine*#in

25、elude #in elude #in elude #i nclude test.hshort i;short eflag 仁 PASS; short eflag2= PASS;DATA *dbptr = & db0;void ma in (void)/* 1. Test for sin gle-buffer */ /* clear */for (i=0; iNX; i+) ri = 0;/ clear output buffer(opti on al)for (i=0; iNH; i+) dbi = 0; / clear delay buffer (a must)/* compute */

26、fir(x, h, r, &dbptr, NH, NX);/* test */eflagl = test (r, rtest, NX, MAXERROR);/* 2. Tests for dual-buffer */* clear */for (i=0; iNX; i+) ri = 0;/ clear output buffer(opti on al)for (i=0; i=4)fir(x, h, r, &dbptr, NH, NX/4);fir(&xNX/4, h, & rNX/4, &dbptr, NH, NX/4);fir(&x2*NX/4, h, & r2*NX/4, &dbptr,

27、NH, NX/4); fir(&x3*NX/4, h, & r3*NX/4, &dbptr, NH, NX/4); /* test */eflag2 = test (r, rtest, NX, MAXERROR);if (eflag1 != PASS)exit(-1);if (eflag2 != PASS)exit(-2);return;这两个函数是用C5000汇编语言编写的,具有很高的执行效率,使用这个函 数可以大大提高运算速度,以解决用C语言编写的程序效率不能满足要求的问题。 下面以dlsm.h为例,其使用方法如下:short oflag = dlms (DATA *x, DATA *h,

28、 DATA *r, DATA *d, DATA *des,DATA step, ushort nh, ushort nx)上述语句是在Dsplib.h中可以找到其路径为:C:tic5400dsplibIn clude下面参看其C子函数定义的各个变量的意义:oflag溢出错误标志,=1时在计算过程中发生了数据溢出;=0时无数据溢出。x输入信号数组h自适应滤波器系数矢量r输出数组d延迟缓冲区,用来存放上一时刻的输出数据des理想输出信号数组step 2*卩,卩为自适应滤波器的自适应步长因子,一般取0卩1,可视为常数。但为了适应DS定点数的运算一般取STE为327nx向量x中的个数nh系数的个数注意

29、:h和d的存储地址要求起点必须位于Kbit边界处,即起始地址值的最 低有效位必须是0,必须在CM文件中开辟对齐1K边界的空间,并且只能在头文件 中进行段的配置。否则编译无法通过。同理,FIR.h的使用方法如下:oflag = short fir (DATA *x, DATA*h, DATA*r, DATA*dbuffer, ushort n h,ushort nx)oflag 溢出错误标志,=1时在计算过程中发生了数据溢出;=0时无数据 溢出。x输入信号数组h FIR滤波器的系数矢量,也是要逼近的对象r输出数组d延迟缓冲区,用来存放上一时刻的输出数据nx向量x中的个数nh系数的个数注意:h、d

30、的地址要求同dlms()函数中的h、d参数。DATA为tms320.h中定 义的short整型。为了降低计算量,输入缓冲数组长度应该尽量小,取长度为LENGTH_IN=5采用数据压入方式,将最新的声音采样值存入数组x0,然后将存储的数据从低 位压入高位。其实现程序 update(DATA x,DATA dk)如下:void update(DATA x,DATA dk) /dk 为当前采样值 s16 j,k;for(j=1;jLENGTH_IN;+j) k=LENGTH_IN-j; xk=xk-1;x0=dk;/从低位压向高位当前采样值存入最低位六、程序设计、调试首先设计FIR滤波器。FIR滤波

31、器的算法可以由MATLAB设计打开MATLAB在命令窗中输入FDAtool,打开滤波器设计与分析工具。因为 语音信号的频率成分主要分布在 300Hz到3400Hz,所以我们只要设计300Hz到 3400Hz的带通FIR滤波器就可以实现对语音信号中掺杂的噪声的滤除。在FDA中选择带通FIR滤波器,阶数选择15,抽样频率选择16kHz,阻带截频分别为 0.25 kHz和3.45 kHz,通带截频分别为0.3 kHz和3.4 kHz。就可以设计所要 的滤波器了。滤波器的波形如下图所示。De$iq仃mq Filter. Dons#i nclude tmwtypes.h/* Expected path

32、to tmwtypes.h* C:MATLAB6p5externi ncludetmwtypes.h*/const int BL = 16;con st real64_T B16 = -1737,-22,494, -1762, -4117, -2011, 5080, 11684,11684,5080, -2011, -4117, -1762,494,-22, -1737;设计好滤波器后,还要进行对 A/D和D/A以及DM的初始化,并编写主程序和 中断服务程序,以及控制调用中断时程序流向的中断向量表, 详细内容请见程序 清单。由于DSK540板上存储器分配方式基本相同,所以.cmd文件可以采用其

33、他 程序中的.cmd文件。实验中用到的源程序:1.主程序(firlab.c )/*/*/*/*/*/*/#in clude #in clude #in clude #in elude #in elude vfirlab.h#inelude #in elude void delay(s16 period);exter n void DMAC2ISR();#defi ne SS 16/*/*全局变量*/*/HANDLE hHan dset;un sig ned int dmsefc,dmmcr,dmctr,src_addr,dst_addr;intun sig neddmpre,dmsrcp,dm

34、dstp,dmidx0,dmidx1,dmfri0,dmfri1,dmgsa,dmgda,dmgcr,dmg fr;/*存放输入数据*/#pragma DATA_SECTION(i np_buffer,audio_buffer);int in p_buffer0x200;/*存放输出数据*/#pragma DATA_SECTION(out_buffer,outt_buffer);in t out_buffer0x200;in t out1_buffer0x200;/*存放滤波器系数*/#pragma DATA_SECTION(coeffs,coefficie nts);/*低通滤波器*/DAT

35、A coeffs16= 0, -113,419, -878, 1031,0, -3731,19656, 19656,-3731,0, 1031, -878,419, -113,0;/*高通滤波器*/*这里COEFF勺数据类型曾经是int*/*带通滤波器*/*带阻滤波器*/*全通滤波器*/*存放延迟数据*/#pragma DATA_SECTION(delaybuff,delayb);int delaybuff16=0;int frame=0;int flag=0;int temp;int currbuff=0;int choose=1;int *delayptr1= &(delaybuff0);

36、in terrupt void DMAC2ISR();DATA ySS;double p,q,temp1;u16 fSS/2+1;int iii,mm;/*/* MAIN*/void mai n()s16 cn t=2;BSCR=0x8806;XPC=0;PMST=0xA0;brd_set_cpu_freq(100);TIMER_HALT(0);brd_set_wait_states(7,7,9);TIMER_RESET(0);IMR=0;FFT*/cbrev(coeffs,y,SS/2);rfft(y,SS,0);求信号的幅度谱f0=abs(y0);fSS/2=abs(y1);mm=1;fo

37、r(iii=2;iiiSS;iii=iii+2)P=yiii;q=yiii+1;temp1=sqrt(p*p+q*q);/fmm=temp1;取幅度谱mm+;*/*/*/if(brdn it_bios()return;while (cn t-)brd_l ed_toggle(BRD_LED0);delay(1000);brd_l ed_toggle(BRD_LED1);delay(1000);brd_l ed_toggle(BRD_LED2);delay(1000);hHa ndset=codec_ope n(HANDSET_CODEC);/*设置codec参数*/codec_dac_mode

38、(hHa ndset,CODEC_DAC_15BIT);codec_adc_mode(hHa ndset,CODEC_ADC_15BIT);codec_ain_gai n(hHa ndset,CODEC_AIN_6dB);codec_aout_gai n(hHa ndset,CODEC_AOUT_MINUS_6dB);codec_sample_rate(hHa ndset,SR_16000);INTR_CLR_FLAG(DMAC2);dma_reset_all();/*初始化DMA通道*/dmsefc=(DSYNC_REVT112);dmmcr=(AUTOINIT_ENABLEvv15)|(D

39、INM_ENABLEvv14)|(IMOD_HALFBLOCKv13)|(CTMOD_DEC12)|(INDEXMODE_NOMODv8)|(SPACE_DATAvv6)|(INDEXMODE _IN C2)|(SPACE_DATA);dmmcr=0xe045;dmctr= 0xFF;src_addr=DRR1_ADDR(HANDSET_CODEC);dst_addr= (un sig ned in t)&in p_buffer;dma_i nit(DMA_CH2,dmsefc,dmmcr,dmctr,SPACE_DATA,src_addr,SPACE_DATA,dst_addr);DMA_F

40、RAMECOUNT(DMA_CH2,1);dmgsa=src_addr;dmgda=dst_addr;dmgcr=0xFF;dmgfr=1;dmpre=(HIGH_PRIORITYvv10)|(INTSEL_01v6);dmsrcp=SPACE_DATA;dmdstp=SPACE_DATA;dmidx0=0;dmidx 仁0;dmfri0=0;dmfri 1=0;dma_global_i nit(dmpre,dmsrcp,dmdstp,dmidx0,dmidx1,dmfri0,dmfri1,dmgsa,dmgda,dmgcr,dmgfr);DMA_ENABLE(DMA_CH2);temp=*(

41、volatile u16*)DRR1_ADDR(HANDSET_CODEC);INTR_ENABLE(DMAC2);INTR_GLOBAL_ENABLE;for(;);void delay(s16 period) int i,j;for(i=0;iperiod;i+) for (j=0;jperiod;j+);2.中断服务程序(dma2isr.c ) #in clude#in clude#i nclude#i ncludeexter n void delay(s16 period); exter n un sig ned int cha nn el;exter n un sig ned int

42、 dmsefc; exter n un sig ned int dmmcr;exter n un sig ned int dmctr;exter n un sig ned int src_page; exter n un sig ned int src_addr;exter n un sig ned int dst_page; exter n un sig ned int dst_addr; extern int in p_buffer0x200; extern in t out_buffer0x200;exter n int coeffs16;extern int delaybuff16;e

43、xtern int frame;exter n int flag;extern int currbuff;extern int *delayptr1;exter n int L=0;exter n int choose;extern in t out1_buffer0x200;void ini t_dma3(void) while(DMPREC&0x0008);dmsefc=(DSYNC_REVT1 PRAM PAGE 0.text PRAM PAGE 0.vectors VEC2 PAGE 0.vecs VEC1 PAGE 0.stack STACK PAGE 1.trap SCRATCH

44、PAGE 1.bss EXRAM PAGE 1.cio EXRAM PAGE 1.fifo EXRAM PAGE 1.si ntab EXRAM PAGE 1audio_buffer DMARAM PAGE 1outt_buffer DMARAM PAGE 1.const EXRAM PAGE 1coefficie nts EXRAM ,alig n (512)delayb EXRAM ,alig n (512)4.中断向量表c5402vec.asm*(C) Copyright Texas In strume nts, I nc. 2000*MODULENAME:C5402VEC.ASMAUT

45、HOR: C5000 Applicati onsDESCRIPTION: TMS320VC5402nterruptVector initializationtableNOTE:If DSP/BIOS used you will have to i nitialize in terruptvector table using the BIOS configuration toolDATE: 02/00*.title 54xDSKPLUS Vector Table Initialization.ref _c_in t00, _DMAC2ISR.sect .vecs;RESET vector;NMIRESET: BD _c_in t00NOPNOPNMI: BD NMINOPNOP* S/W In terrupts*SINT17 BD SINT17NOPNOPSINT18 BD SINT18

温馨提示

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

评论

0/150

提交评论