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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

语音信号的FIR滤波器处理课程设计.docx

1、语音信号的FIR滤波器处理课程设计DSP课程设计报告 语音信号的FIR滤波器处理* * * 班 级: 12电信3 学 号: * * * 日期: 2015.06.022014.06.19 华南农业大学电子工程学院摘 要随着信息与数字技术的发展,数字信号处理已经成为当今极其重要而学科与技术领域之一。它在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理的基本方法中,通常会涉及到变换、滤波、频谱分析、调制解调和编码解码等处理。其中滤波是应用非常广泛的一个环节,数字滤波器的理论和相关设计也一直都是人们研究的重点之一。FIR滤波器的是非递归的,稳定

2、性好,精度高;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特征。因此,它在高保真的信号处理,如数字音频、图像处理、数据传输和生物医学等领域得到广泛应用。CSS集成开发环境使用CCS内置的软件仿真simulator对程序进行编译,调试和运行,主要用于检测目标程序运行的正确性和连贯性,并能通过仿真器与目标板连接,在目标板上实时观察效果。在本次设计中,我们选择的课题是基于DSP的语言信号的FIR滤波处理。首先利用MATLAB进行了仿真,得到滤波前后的时域波形和频谱。然后通过调用MATLAB的分析工具FDATOOL,根据仿真结果导出了滤波器的相关参数,将原始信号数据和滤波器

3、参数输入CCS进行DSP编程。最后在DSP中实现了FIR低通滤波,并通过CCS的频谱分析功能查看了最终DSP的滤波效果。关键词: 语音信号处理 FIR滤波 MATLAB CCS1.前言 42.设计需求 43.滤波器设计原理介绍 43.1数字滤波器设计原理 43.2 FIR滤波器的基本结构 53.3 滤波器的特点 53.4 窗函数的介绍 64.FIR滤波器的设计 75.FIR滤波器的MATLAB设计 86.FIR滤波器的DSP实现 106.1 CCS设计与仿真 106.2 CCS仿真结果 136.调试问题及解决办法 167.设计感想 16参考文献 178.附录 171 前言通过语音传递信息是人类

4、最重要、最有效、最常用、最方便的交换信息的方法,因此,如何去除混杂在有用信号中的噪声并获得低损甚至无损的有用语音信号成为语音信号处理(即用数字信号处理技术和语言学知识对语音信号进行处理并提取有用信息)至关重要的问题。但是因为语音识别技术对信号噪声非常敏感,系统本身和器件对系统的处理结果都有着不可忽视的干扰,因此很难实现效果较好的语音信号滤波处理。而DSP因为运算速度快,片上资源丰富和能够实现复杂的线性和非线性算法等特性,在语音信号处理技术方面有明显的优势。在数字信号处理中,滤波占有极其重要的地位。数字滤波是语音信号处理、图像处理、模式识别、频谱分析等应用的基本处理算法。用DSP芯片实现数字滤波

5、除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好等特点。本文介绍了数字滤波器的设计基础及用窗函数法设计FIR滤波器的方法,运用MATHLAB语言实现了低通滤波器的设计并用CCS 2.0进行观察效果。2设计需求 1)滤波器的设计的原理介绍 2)FIR滤波器的设计 3)FIR滤波器的DSP实现 4)滤波器为低通滤波器,并用用语音信号通过滤波器后查看滤波效果是否达到设计要求,进行FIR滤波器的检验根据老师的的意见,我们自己拟定了滤波器的指标:Fs=8000hz,Wp=1500 Hz,Ws=2000 Hz,通带波纹为0.01,阻带波纹为0.1,N=37。3 滤波器设计原理介绍3.1数字

6、滤波器的设计原理数字滤波器的设计问题就是寻找一组系数ai和bi,使得其性能在某种意义上逼近所要求的特性。如果在s平面上去逼近,就得到模拟滤波器,如果在z平面上去逼近,则得到数字滤波器。数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。一个线性位移不变系统的输出序列y(n)和输入序列x(n)之间的关系,应满足常系数线性差分方程: (2.1.1) x(n)为输入序列,y(n)为输出序列,ai、bi 为滤波器系数,N为滤波器的阶数。3.2 FIR滤波器的基本结构在式2.1.1中,若所有的ai均为0,则得FIR滤波器的差分方程: (2.2.1)对式(2.2.1)进行z变换,可

7、得FIR滤波器的传递函数: (2.2.2)由此可得到FIR滤波器的结构如图1所示。FIR滤波器的单位冲击响应h(n)是一个有限长序列。若h(n)为实数,且满足偶对称或奇对称的条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n),则FIR滤波器具有线性相位特性。3.3 滤波器的特点优点:(1)很容易获得严格的线性相位,避免被处理的信号产生相位失真,这一特点在宽频带信号处理、阵列信号处理、数据传输等系统中非常重要;(2)可以在幅度特性随意设计的同时,保证精确、严格的线性相位,还可得到多带幅频特性;(3)极点全部在原点(永远稳定),无稳定性问题;(4)任何一个非因果的有限长序列,总可以通

8、过一定的延时,转变为因果序列,所以因果性总是满足;(5)无反馈运算,运算误差小。 缺点:(1)因为无极点,要获得好的过渡带特性,需以较高的阶数为代价;(2)无法利用模拟滤波器的设计结果,一般无解析设计公式,要借助计算机辅助设计程序完成。3.4 窗函数简介数字信号处理的主要数学工具是傅里叶变换。而傅里叶变换是研究整个时间域和频率域的关系。不过,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的时间片段进行分析。做法是从信号中截取一个时间片段,然后用观察的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。无

9、线长的信号被截断以后,其频谱发生了畸变,原来集中在f(0)处的能量被分散到两个较宽的频带中去了(这种现象称之为频谱能量泄漏)。为了减少频谱能量泄漏,可采用不同的截取函数对信号进行截短,截断函数称为窗函数,简称为窗。信号截短以后产生的能量泄漏现象是必然的,因为窗函数w(t)是一个频带无限的函数,所以即使原信号x(t)是有限带宽信号,而在截短以后也必然成为无限带宽的函数,即信号在频域的能量与分布被扩展了。又从采样定理可知,无论采样频率多高,只要信号一经截短,就不可避免地引起混叠,因此信号截短必然导致一些误差。泄漏与窗函数频谱的两侧旁瓣有关,如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为

10、接近于真实的频谱,为此,在时间域中可采用不同的窗函数来截短信号。4 FIR滤波器的设计4.1 FIR滤波器设计FIR滤波器的设计问题在于寻求一系统函数 ,使其应 逼近滤波器要求的理想频率响应 。4.2 窗函数设计的基本方法从时域出发,设计h(n)逼近理想hd(n),设理想滤波器的单位脉冲响应为hd(n),则有所求得的 一般是无限长的,且是非因果的。要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断 ,或者说用一个窗口函数 对 进行加窗处理,即 。因此,应选择合适的窗函数。4.3 滤波器的算法实现FIR滤波器的输出表达式为式中,为滤波器系数;x(n)表示滤波器在n时刻的输入;y(n)为

11、n时刻的输出。它的基本算法是一种乘法-累加运算,即不断地输入样本x(n),经过延时后,再进行乘法-累加,最后输出滤波结果y(n)。1)线性缓冲区法线性缓冲区法又称延迟线法。其特点:对于N级的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本;从最老样本开始取数,每取一个样本后,将此样本向下移位;读完最后一个样本后,输入最新样本存入缓冲区的顶部。2)循环缓冲区法本次设计的FIR滤波器所采用的就是循环缓冲区法。循环缓冲区法的特点如下:对于N级FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本;从最新样本开始取数;读完最后一个样

12、本(最老样本)后,输入最新样本来代替最老样本,而其他数据位置不变;用片内BK(循环缓冲区长度)寄存器对缓冲区进行间接寻址,使循环缓冲区地址首尾相邻。5 FIR滤波器的matlab实现MATLAB是一种功能强、效率高、便于进行科学和工程计算的交互式软件包,它集数值分析、矩阵运算、信号处理和图形显示于一体,为用户提供了方便、友好的界面环境。MATLAB中的工具箱(Toolbox)包含了许多实用程序。它提供了多种FIR滤波器设计方法。fir1函数用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗线性相位FIR数字滤波器的设计。具体语法如下: b=fir1(n,Wn) b=fir1(n,Wn,

13、ftype) b=fir1(n,Wn,Window) b=fir1(n,Wn,ftype,Window)其中n为滤波器的阶数;Wn为滤波器的截止频率; ftype为用来决定滤波器的类型,当ftype=high时,可设计高通滤波器;当ftype=stop时,可设计带阻滤波器。Window为用来指定滤波器采用的窗函数类型,Window参数可采用的窗口函数有: Boxcar,Hanning,Bartlett,Blackman,Kasier和chebwin等,其默认时为Hamming窗,从而得到滤波器的系数。 fir2函数用来设计有任意频率响应的各种加窗FIR滤波器。具体语法如下: b=fir2(n,

14、f,m) b=fir2(n,f,m,Window) b=fir2(n,f,m,npt) b=fir2(n,f,m,npt,Window) b=fir2(n,f,m,npt,lap) b=fir2(n,f,m,nptt,lap,Window) 其中n为滤波器的阶数;f为频率点矢量;m为幅度点矢量;Window用来指定所使用的窗函数类型,默认值为汉明(Hamming)窗;npt用来指定fir2函数对频率响应进行内插的点数;lap用来指定fir2函数在重复频率点附近插入的区域大小,从而得到滤波器的系数。具体的代码见附录,输入之后可以导出滤波器的参数。CCS的输入语音信号的辅助产生(MATLAB)1、

15、理想情况:FIR 滤波器的输入数据存储在indata.dat 文件中,共300 个点,由频率为1000Hz和2500Hz 的两个余弦波叠加而成2、为了验证设计的可行性,自身录制一个语音片段,主要信号为低频成分,其中夹杂着高频成分的噪声。在MATLAB中产生一个indata.dat文件供CCS输入,在matlab中输入的代码为:x=wavread(D:matlabworkXINZAO.wav); %语音文件的路径 y=fft(x,1024);plot(abs(y(1:1000); %采样100个点x1=round(1024*x);fid=fopen(indata.dat,w); %生成一个dat

16、文件fprintf(fid,1651 1 00E2 1000n);fprintf(fid,%dn,x1); %输出 6 FIR滤波器的DSP实现CCS是一种针对TMS320系列DSP的集成开发环境,在windows操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具,提供了配置、建立、调试、跟踪和分析程序的工具,从而完成编辑、编译、链接、调试和数据分析等工作。6.1 CCS设计图 15 CCS汇编程序流程图与仿真6.1.1 程序分析 FIR滤波器的DSP实现主要有线性缓冲区法和循环缓冲区法两种。 线性缓冲区法又称延迟线法。其特点: (1)对于N级的FIR滤波器,在

17、数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本; (2)从最老样本开始取数,每取一个样本后,将此样本向下移位; (3)读完最后一个样本后,输入最新样本存入缓冲区的顶部。 循环缓冲区法的特点如下: (1)对于N级FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本; (2)从最新样本开始取数; (3)读完最后一个样本(最老样本)后,输入最新样本来代替最老样本,而其他数据位置不变; (4)用片内BK(循环缓冲区长度)寄存器对缓冲区进行间接寻址,使循环缓冲区地址首尾相邻。 本次设计的FIR滤波器所采用的就是循环缓冲区法。对DSP进行初始化,并

18、设置好存储单元。为数字滤波作准备,将预先设计好的有N个抽头的FIR数字滤波器的冲激响应序列h(n)中的N个数值放入存储单元bn中,从indata数据存储段中读入抽样值,将抽样值逐一放入存储单元xn中。主要循环程序如下:STM #-1,AR0RPTZ A,# ;将ACC累加器清零,循环次MAC *AR2+0%,*AR3+0%,ASTH A,*(yn) ;保存输出 MVKD *(yn),*AR5+将累加器清零,将存储单元bn与xn值对应相乘并累加到ACC中,循环次将ACC中的值保存输出。再从indata数据存储段中读入一个新的数据,代替原来的最老样本 MVDD *AR4+,*AR2+0% ,重复循

19、环直到数据全部处理完。最后将处理完的数据输入到outdata数据存储段中。6.1.2 数据输入 MATLAB辅助DSP 实现FIR滤波器滤波 ,其总体过程是为DSP 中编写处理程序提供滤波器系数。在MATLAB中利用滤波器设计、分析工具( FDATOOL) ,根据指定的滤波器性能快速设计一个FIR ,然后把滤波器系数以头文件形式导入CCS 中,头文件中包含MATLAB 辅助DSP 实现FIR 数字滤波器的阶数和系数数组,在MATLAB中调试、运行DSP 程序并显示、分析处理后的数据。 打开CCS IDE 中file的data加载初始化data数据,在Address中输入数据存放的起始地址ind

20、ata,并设置数据栈长度。6.1.3 运行程序仿真运行程序,查看输入输出波形,修改相应参数进行调试。在View的Graph中单击Time/frequency出现graph property dialog框。将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置,输出各种波形。输出滤波前的信号时域波形。首先,设置如下图所示,输出滤波前的信号时域波形。图 2 滤波前语音信号的时域Graph Property Dialog设置参数图将Display Type改为FFT Magnitude 就可以看到滤波前信号的频谱,将Start Address改为outdata就可以看到滤波后信号的时域波

21、形和频谱。6.2 CCS仿真结果图 3 滤波前语音信号的时域波形图图 4 滤波前信号频谱波形图6.2.2 FIR滤波器滤波后的信号 图 5 滤波后信号时域波形图图 6 滤波后信号频谱图图3波前的信号,由高频信号和原信号叠加而成的波形较为杂乱,加噪后的信号幅值较大。图5波后的信号,从图上可以看到信号幅度较低,波形较为清晰。对比图4图6可以看到加躁后信号幅值较大,信号的能量集中在高频段,滤波后,高频成分大部分被滤去,信号的能量主要集中在低频段。7 调试问题及解决方法 1)实验时,未做初始化设置直接进入,没有装入gel文件及相关参数,导致输入代码编译链接后不能载入程序。解决方法:初始化设置软件仿真c

22、pu和硬件仿真cpu,并设置其中所用的gel文件,保存并退出启动dsp选择忽略进入编辑编译初始化界面,由软件仿真cpu进入编辑编译工具。 2)在解决问题1后,载入程序,载入数据,并设置载入数据的初始地址和长度,运行程序,发现程序一直卡死在某个地方,无法显示正确的时域图和频域图。解决方法:换了一台电脑运行,发现问题已被解决,可能原因是自己电脑安装时装少了一些文件。8 设计感想 刚开始面对大作业的时候,我们都还是觉得很生疏,不知从哪里入手,尽管做过实验。对于自己选的题目,具体需要做什么,能不能做出来,我们并不清楚。但当时间一天天过去后,我们开始认真起来了。从复习课本,再到复习实验,相互探讨编程思路

23、,上网搜索资料,调试实验等,我们都在努力的自学着。 首先,是学习上的巩固。一方面,通过复习课本和实验,对DSP的基础知识又有了很大的巩固。其次,通过对用Mathlab实现FIR滤波器的设计,熟悉了matlab软件的一些相关的窗口函数以及相关功能的调用,如怎样实现窗函数的调用,怎样实现滤波,等等。 第二,对FIR的滤波器性能和作用有了更深一层的了解。FIR滤波器的应用十分广泛,当今许多信号处理系统和图像处理系统等都要求信号具有线性相位特性。在这方面,FIR滤波器有十分独特的优点,运用mathlab语言,我们能够很容易的设计出具有严格线性相位的FIR滤波系统,以及比较容易的实现。此外,我们还知道了

24、FIR滤波器是永远稳定的,因为FIR滤波器的冲激响应是有限长序列,其系统函数为一个多项式,它所含的的极点多为原点。最后,也感谢徐梅宣老师的指导,跑了她办公室两次咨询情况,都很耐心解答,真给了一些写报告或者软件应用的建议。参 考 文 献1 邹彦,DSP原理及应用(修订版),北京:电子工业出版社,20122 王宏. MATLAB6.5及其在信号处理中的应用.M. 北京:清华大学出版社,20043 高西全,丁玉美,阔永红.数字信号处理-原理、实现及应用.M.北京:电子工业出版社,20064 胡广书编著,数字信号处理理论、算法与实现.北京:清华大学出版社,2005;附 录1.主程序fir.asm: .

25、title FIR.ASM .mmregs .def start .bss yn,1 xn .usect xn,37hn .usect hn,37indata .usect indata,300outdata .usect outdata,256 .datafir_coff: .word -10*1024/10000,-36*1024/10000 .word 0*1024/10000,65*1024/10000 .word 32*1024/10000,-88*1024/10000 .word -93*1024/10000,90*1024/10000 .word 184*1024/10000,-

26、47*1024/10000 .word -297*1024/10000,-71*1024/10000 .word 417*1024/10000,316*1024/10000 .word -524*1024/10000,-848*1024/10000 .word 598*1024/10000,3108*1024/10000 .word 4375*1024/10000 .word 3108*1024/10000,598*1024/10000 .word -848*1024/10000,-524*1024/10000 .word 316*1024/10000,417*1024/10000 .word

27、 -71*1024/10000,-297*1024/10000 .word -47*1024/10000,184*1024/10000 .word 90*1024/10000,-93*1024/10000 .word -88*1024/10000,32*1024/10000 .word 65*1024/10000,0*1024/10000 .word -36*1024/10000,-10*1024/10000 .textstart: ssbx frct ;使用小数运算 stm #hn,ar1 ;系数首地址 rpt #36 ;将系数移入循 mvpd fir_coff,*ar1+ ;环缓冲区 st

28、m #-1,ar0 stm #outdata,ar5 stm #indata,ar4 stm #xn+36,ar2 rpt #36 ;将输入数据移入 mvdd *ar4+,*ar2+0% ;循环缓冲区 stm #xn+36,ar2 ;指向第一个输入 stm #hn+36,ar3 stm #37,bk ;缓冲区大小37 stm #255,brc ;块重复256次 stm #-1,ar0 rptb loop-1 ;块程序重复大小 rptz a,#36 ;计算一个输出 mac *ar2+0%,*ar3+0%,a sth a,*(yn) ;保存输出 mvkd *(yn),*ar5+ mvdd *ar4

29、+,*ar2+0% ;读进一个输入loop: nop b loop .end 2链接命令文件fir.cmd:MEMORY PAGE 0: PARAM: org=00E0h len=1000h PAGE 1: SPRAM org=0060h len=0020h DARAM: org=0080h len=1380h SECTIONS .text : PARAM PAGE 0 .data : PARAM PAGE 0 .bss : SPRAM PAGE 1 xn : align (64) DARAM PAGE 1 hn : align (64) DARAM PAGE 1 indata : DARAM PAGE 1 outdata : DARAM PAGE 1

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

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