ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:308.75KB ,
资源ID:8386460      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8386460.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSP实验报告 王婷要点.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSP实验报告 王婷要点.docx

1、DSP实验报告 王婷要点DSP应用课程设计实验报告语音噪声滤波学院:电子信息工程学院小组成员: 姓名:王婷 班级:通信0706 学号:07211117姓名:缪小川 班级:通信0706 学号:07211128成绩:工程设计50报告20答辩30总分评语:指导教师签字: 日期:2010-1-20目 录一、设计任务书3二、设计原理4三、设计方案说明8四、程序设计、调试与结果分析14 五、设计与调试的体会24 六、参考文献25一设计任务书设计题目:语音噪声滤波题目背景介绍随着信息技术的发展,信号处理正向着数字化、软件化方向发展。数字信号处理的主要研究对象是语音信号和图像信号,语音信号的研究可以从时域和频

2、域两个方面来进行。其中时域的分析处理有两种方法:一种是进行语音信号分析,这属于线性处理的范畴,主要是通过信号的加减、时移、倍乘 、卷积、求相关函数等来实现;另一种是生成和变换成各种调制信号,这属于非线性的范畴,主要是对信号平均累加器的动态范围进行压缩扩张,用门限方法对噪声的抑制。对频域分析处理,即对信号的频率特性在频谱中加以分析研究,这拓展了信号分析的范围,是对不确定信号分析的主要方法。在实际应用中,信号的时域频分析经常同时进行。 由于环境的原因,我们采集到语音信号经常含有不同程度的噪声,因此要对语音信号中的噪声滤除。DSP利用直接存储器访问方式DMA采集数据时不打扰CPU,因此CPU可以对语

3、音信号进行实时地滤波。首先利用DSP的DMA方式对外部含噪声的语音信号进行实时采集,语音信号先经过A/D转换为数字信号,利用MCBSP的接收寄存器接收数据。编写滤波算法程序,或调用DSPLIB中的滤波函数,对信号进行滤波。滤波后的数据利用DMA方式送到D/A转换器转换为模拟信号。实验要求及目标1.实验目的1)掌握信号滤波的基本原理和方法;2)掌握利用DSP直接存储器访问(DMA)的方法;3)掌握综合利用A/D、D/A及DMA等资源实现信号滤波的完整过程。2.实验要求基本部分:1)对DMA进行初始化;2)对A/D、D/A进行初始化;3)编写DMA中断服务程序和滤波算法程序,实现语音信号的实时滤波

4、;发挥部分:1)使用DSP产生带回波的语音信号;2)利用自适应滤波实现语音信号的回波对消。3.要求完成的任务1)编写C语言程序,并在CCS集成开发环境下调试通过;2)将包含噪声的语音信号进行滤波,从扬声器输出端口输出,比较滤波前后的信号的变化。二设计原理1.DMA通道初始化DMA(直接存储器访问 Direct Memory Access)是C54x DSP非常重要的片上外设,DMA控制器可以在不影响CPU的情况下完成数据的传输,因此在对信号实时采集和处理的系统中常采用DMA模式进行信号采集和传输。TMS320C5402有6个可独立编程的DMA通道,每个DMA通道受各自的5个16位寄存器控制。语

5、音信号时模拟信号,可以利用DMA通道2与McBSP1通道结合来读取A/D转换的数据,最后利用DMA通道3与McBSP1通道结合来将处理后数据发送至D/A。选择McBSP1通道的接收寄存器DRR11为DMA传送数据的首地址,并选择DMA源地址工作在不调整模式,选择McBSP1接收事件为DMA同步事件,以实现DMA与McBSP的结合。DMA在传送外部来的数据时不会影响CPU的正常运行,当DMA通道2采集完一组数据后产生一个DMA中断事件中断CPU,来通知CPU对其进行相应的处理,进而按照设定进行下一组采集。滤波后的信号输出利用3通道进行传输进入D/A等输出,因此要对DMA通道2和通道3进行初始化配

6、置。2.数字信号FIR滤波进行信号滤波也就是对序列的卷积进行计算,实验的噪声信号是有限长信号,选取FIR数字滤波器。语音信号由外部输入,由此可以得到滤波器的输出为 yk=hk*xk,可采用重叠相加法计算卷积。将输入的长序列分解为短序列,分别与单位脉冲响应进行卷积,每进行完一段操作计算结果中后N-1个数据保留在一个缓冲区,与下一段结果重叠相加。语音信号是低频信号,因此可以用MATLAB来设计FIR低通滤波器。3.自适应消除噪声滤波器 最小均方(LMS,least-mean-square)算法是构建自适应消噪滤波器的主要算法。假设原始输入为:主信号x(n)=s(n)+vo(n); vo(n)是加性

7、零均值Gauss白噪声。本地参考信号为 v1(n )vm(n ),参考输入为v1(n )vm(n ),v1(n )vm(n )与 v0(n)相关与信号 s(n)不相关,可用原理图表示如下:LMS算法流程图如下:LMS算法:基于最速下降法的最小均方误差算法的迭代公式如下:e(n)=d(n)-XT(n)W(n)W(n+1)=W(n)+2ue(n)X(n)将以上两式联立,得:W(n)=W(n)+2uX(n)d(n)-X(n)XT(n)W(n)其中:W(n)是自适应滤波器在时刻n的矢量,x(n)为时刻n输入信号矢量,d(n)为期望输出值,e(n)是误差信号,L是自适应滤波器的长度(步长因子)。LMS算

8、法熟练的条件为:0umax, max是输入信号自相关矩阵的最大特征值。LMS对于每输入一个样本,只需对上式中的两个乘法与两个加法运算,该算法易于用实时系统实现。LMS算法的原理图可以简单表示如下:4.回声的产生回声实际上就是自己的声音泄露到自己的接收途径中。在任何一个通讯网络中,至少包括两个节点。从每一个节点看来,每个呼叫都包括两个语音路径:发送路径本地拾取声音,远端回放声音。也就是说从呼叫方的嘴巴传送到接收方的耳朵中。接收路径远端拾取声音,本地回放声音。也就是接收方在接收到会话时创建接受路径,发送方的声音由接收方的耳朵接听到。我们知道,回声是由于自己的发言声音泄漏到自己的接收回路中。一般来说

9、从发送端泄漏到接收端而引起的回声现象,可以有两个产生途径:线路回声 通讯回路中节点设备对发送接收信号的耦合所产生的回声。声回声通过空气作为传播媒介,由Speaker直接耦合到MIC所产生的回声影响。回声的主要两个属性:音量和延迟:回声和原始信号如果相差50ms以 下的时候 ,人耳一般不会感受到回声。而是感觉原始信号被增强了。另外,在混响时间较长的大会场。如果系统泄漏的回声信号低于原始信号 30db以上的话,而且延时小于80ms的时候。回声信号一般会被混响声所淹没。用户是听不到回声的感觉。所以实验里可以用回声的原理计算响应的延时以达到实验效果。实验中的回声原理可用如下原理图来表示:由此可见,实验

10、中的语音回声噪声消除可以采用自适应滤波器来设计。5.回声消除器回声的消除可以采用LMS算法。自适应合成回声,并在有干扰的情况下消除回声。自适应滤波器是FIR横向滤波器,可以根据输出自动修改滤波器的权系数,从而逼近未知系统回声通道。算法的实现要基于TMS320C5402DSP芯片和CCS系统的C语言。 其原理可以理解为如下:三设计方案说明1.噪声信号的产生噪声信号利用MATLAB产生一个信号,由于声音信号属于低频段,所以采用FIR低通滤波器来设计。设计过程如下:利用FDATOOL来设计低通滤波器,所取的设计参数如下:所得的函数幅度响应图如下:利用MATLAB功能,生成.c文件:自定义的头文件程序

11、如下:/* * Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool * * Generated by MATLAB(R) 7.2 and the Signal Processing Toolbox 6.5. * * Generated on: 20-Jan-2010 11:44:28 * */* * Discrete-Time FIR Filter (real) * - * Filter Structure : Direct-Form FIR * Filter Length : 14 *

12、 Stable : Yes * Linear Phase : Yes (Type 2) * * Implementation Cost * Number of Multipliers : 14 * Number of Adders : 13 * Number of States : 13 * MultPerInputSample : 14 * AddPerInputSample : 13 */* General type conversion for MATLAB generated C-code */#include tmwtypes.h/* * Expected path to tmwty

13、pes.h * E:MATLAB2006externincludetmwtypes.h */const int BL = 14;const real64_T B14 = -0.03493880541243, -0.03194131145691, -0.01304898413846, 0.0391757773104, 0.1163962365133, 0.1944567316798, 0.2436323378858, 0.2436323378858, 0.1944567316798, 0.1163962365133, 0.0391757773104, -0.01304898413846,.031

14、9*;2.回声信号的产生:回声信号也就是信号有了延迟。麦克输入的信号在接收时有了泄露,最终输出的信号也就是原来的语音信号也语音信号的延时衰减的叠加。回声通道的传输函数可以表示为:S为衰减,M为延迟点数。听到的回波是混合信号,此时不仅能听到自己的声音,也能听到几个衰减后叠加的回声。回波产生程序如下:while (!MCBSP_RRDY(HANDSET_CODEC) ; /codec句柄如未准备好则等待dk = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC); /从ADC读数bfi=dk; /放入缓冲区if(i=10000) i=0; *(volatile u16

15、*)DXR1_ADDR(HANDSET_CODEC) = dk+bfi+1/2; /延迟+衰减3.信号的滤波信号的滤波主要是利用LMS的算法实现对已合成信号的滤波,算法的效率与滤波的长度有关,可以改变FIR滤波器的阶数来调节滤波器的长度。由C语言实现LMS算法的C语言程序如下所示:double lms (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+)

16、 wi=wi+uek*xi; return(ek);替换原有的LMS算法的C语言实现程序,更换为CCS的diplib库中的函数short dlms(PARAM)取代自定的lms()函数,并且用dsplib库里的函数short fir(PARAM)产生回声通道的输出信号,该输出信号作为自适应滤波器的理想输出信号,对之进行逼近进而得到预定结果。Dsplib库中的dlsm函数和fir函数的子程序:Dlsm.h的程序如下,路径:C:tic5400dsplibEXAMPLESDLMS/*/ Filename: dlms_t.c/ Version: 0.01/ Description: test for

17、dlms routine/*#include #include #include #include test.hshort i;short eflagr= PASS;short eflagh= PASS;void main(void) /* clear */ for (i=0;iNH;i+) hi =0; / clear coeff buffer (optional) for (i=0;iNX;i+) ri =0; / clear output buffer (optional) for (i=0; iNH; i+) dbufferi = 0; / clear delay buffer (a

18、must) /* compute */ dlms(x,h,r,&dp,des,STEP, NH, NX); /* test */ eflagr = test(r, rtest, NX, MAXERROR); / for r eflagh = test(h, htest, NH, MAXERROR); / for h if (eflagr != PASS) exit(-1); if (eflagh != PASS) exit(-1); return;FIR.h的程序如下,路径:C:tic5400dsplibEXAMPLESFIR/*/ Filename: fir_t.c/ Version: 0.

19、01/ Description: test for fir routine/*#include #include #include #include test.hshort i;short eflag1= PASS;short eflag2= PASS;DATA *dbptr = &db0;void main(void) /* 1. Test for single-buffer */ /* clear */ for (i=0; iNX; i+) ri = 0; / clear output buffer (optional) for (i=0; iNH; i+) dbi = 0; / clea

20、r delay buffer (a must) /* compute */ fir(x, h, r, &dbptr, NH, NX); /* test */ eflag1 = test (r, rtest, NX, MAXERROR); /* 2. Tests for dual-buffer */ /* clear */ for (i=0; iNX; i+) ri = 0; / clear output buffer (optional) for (i=0; i=4) fir(x, h, r, &dbptr, NH, NX/4); fir(&xNX/4, h, &rNX/4, &dbptr,

21、NH, NX/4); fir(&x2*NX/4, h, &r2*NX/4, &dbptr, 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;四程序设计、调试与结果分析程序设计1.程序流程先初始化FIR延迟输出数组dbuffer_h、FIR输出数组、自适应滤波器系数矢量coff_w和自适应滤波器的输

22、出数组out_w,再进行DSK板的初始化。然后采集输入的语音信号,根据模式的不同进行不同的处理以输出不同的信号来进行效果的比较:模式0:mode=0时全通,不做任何处理直接输出;模式1:mode=1时信号通过FIR滤波器后产生回声,输出的信号为原来信号与噪声信号的混叠;模式2:mode=2时用自适应滤波器逼近FIR滤波器以使之输出近似的信号,用信号通过两个系统产生的信号之差(即剩余回声)来调整自适应滤波器的系数,使剩余回声逐渐收敛于0。此时的输出为滤去噪声后的信号。程序流程可以表示如下:2.最终程序延时的子程序如下:void delay(void) long int j; for(j=0; j

23、100000; j+) asm(_nop); 更改j循环的上限值即可以加大延时。程序中使用dsplib库函数dlms()和fir()时要分配参数的地址,因此要手动修改CMD文件。在编完主程序后,因为引入了新的数据和变量必须在工程文件中添加一个的头文件stem.h,将这些变量放入指定了内存中。同时还修改5024.cmd文件。添加头文件stem.h:/*stem.h*/#define LENGTH_W 10 /LMS滤波器长度,#define LENGTH_H 10 /自适应滤波器长度#define STEP 100 /自适应步长#define LENGTH_IN 5 /输入缓冲数组x长度DATA

24、 xLENGTH_IN; /声明输入缓冲数组DATA out_hLENGTH_IN; /FIR滤波器即回声消除通道输出DATA out_wLENGTH_IN; /自适应滤波器输出DATA eLENGTH_IN;#pragma DATA_SECTION(coff_w,.coffw) /将数组coff_w指定到内存段.coffwDATA coff_wLENGTH_W; /声明自适应滤波器系数矢量#pragma DATA_SECTION(coff_h,.coffh) /将数组coff_h指定到内存段.coffhDATA coff_hLENGTH_H=790,2661,4629,6919,8210,8

25、210,6919,4629,2661,790; /定义FIR滤波器的系数即回声通道的权系数#pragma DATA_SECTION(dbuffer_h,.dbufferh) /将数组dbuffer_h指定到内存段.dbufferhDATA dbuffer_hLENGTH_IN; /该数组存放FIR上一时刻的输出#pragma DATA_SECTION(dbuffer_w,.dbufferw) /将数组指定到内存段.dbufferw DATA dbuffer_wLENGTH_IN; /该数组存放自适应滤波器上一时刻输出修改5402.cmd文件:MEMORY PAGE 0: VECS: origi

26、n = 0080h, length = 0080h /* Internal Program RAM */ PRAM: origin = 7600h, length = 8000h /* Internal Program RAM */ PAGE 1: SCRATCH: origin = 0060h, length = 0020h /* Scratch Pad Data RAM */ DMARAM: origin = 0C00h, length = 0300h /* DMA buffer */ DATA: origin = 1100h, length = 0080h /* Internal Dat

27、a RAM */ STACK: origin = 1180h, length = 0560h /* Stack Memory Space */ INRAM: origin = 1900h, length = 0100h /* Internal Data RAM */ HPRAM0: origin = 1A00h, length = 0002h /* HPI memory accessible by Host and DSP */ HPRAM1: origin = 1A02h, length = 0280h /* HPI memory accessible by Host and DSP */ HPRAM2: origin = 1C82h, length = 0280h /* HPI memory accessible by Host and DSP */ EXRAM: origin = 1F10h, length = 4000h /* External Data RAM */ INT_DM_RAM: origin = 6000h, length = 4000h /添加部分,开辟新空间/*/* DSP Memory Allocation */*/SEC

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1