基于FIR的语音信号滤波实习报告-DSP_第1页
基于FIR的语音信号滤波实习报告-DSP_第2页
基于FIR的语音信号滤波实习报告-DSP_第3页
基于FIR的语音信号滤波实习报告-DSP_第4页
基于FIR的语音信号滤波实习报告-DSP_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、 基于FIR的语音信号滤波1 绪论1.1 设计背景随着微处理技术的快速发展,微处理器芯片的集成度从最早的几千个晶体管发展到现在的上亿个晶体管,字长从4位提高到了64位,正是这些技术的飞速发展引发了一轮又一轮的信息产业革命,而人们的生活、学习和工作方式也在以计算机技术、通信技术为核心的信息技术的影响下发生着前所未有的改变。这次设计中,比较核心的是数字滤波器,数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。与IIR滤波器相比,FIR滤波器只有零点,

2、除原点外,在z平面上没有极点,因此总是稳定的和可实现的;更重要的是,FIR滤波器在满足一定的对称条件下,可以获得严格的线性相位特性,这一点是IIR滤波器难以实现的,因此,它在高保真的信号处理,如数字音频、图像处理、数据传输等领域得到广泛应用。1.2 设计目的本课程设计主要是利用一个DSP芯片来进行语音采集系统的设计,而数字信号处理技术的发展使得采用数字化的方法实时的处理语音信号成为可能。早期的语音信号处理均是采用模拟处理,对声音信号最常用的滤波、相关、谱分析等运算,部分采用模拟电路来实现的。这种传统的模拟方法处理语音信号,硬件设备昂贵、不能升级、产品生命周期短,而采用数字处理技术处理语音信号具

3、有抗干扰性强、便于传输和处理等优点,代表着语音处理技术的发展方向。DSP芯片高速、可编程的特点使其非常适合于语音信号处理领域。通过本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。初步培养学生对工程设计的独立工作能力,掌握电子系统设计的一般方法。通过课程设计完成基本技能的训练,如查阅设计资料和手册、程序的设计、调试等,提高学生分析问题、解决问题的能力。1.3 设计要求和步骤本题目通过DSP处理器通过A/D采集音频信号,在CCS软件中分析音频信号的频谱图,使用Matlab设计相应的FIR数字滤波

4、器(低通、带通、带阻等)并得到滤波器H(z)的系数,然后根据这些系数,编写DSP程序(C语言或汇编)对已采集信号进行处理,最后在CCS软件中得到处理后音频信号的频谱图,比较滤波前后信号的频谱图。设计步骤包括:1、使用Matlab对FIR滤波器的设计;2、编写FIR滤波处理的DSP程序,查看并记录处理后的信号频谱;3、通过D/A实现数字量到模拟量的转换,回放处理后的声音;4、按要求编写课程设计报告书,正确、完整的阐述设计和实验结果。5、在报告中绘制程序的流程图,并文字说明。2 系统总体设计2.1 TMS320F2812简介TMS320F2812是基于代码兼容的C28x内核的新型高性能32位定点数

5、字信号处理器,其代码与F24x/LF240x系列DSP代码及部分功能相兼容,C28x内核的指令执行周期达到了667ns,最高运行频率可以达到150MHz,保证了控制系统有足够的运算能力。此外,F2812集成有许多外设,提供了整套的片上系统,从降低了系统成本,实现更简单、高效的控制。其片上外设主要包括2×8路12位ADC(最快80ns转换时间),2路SCI,1路SPI,1路McBSP,1路eCAN接口等,并带有两个事件管理模块(EVA、EVB),分别包括6路PWM/CMP,2路QEP,3路CAP,2路16位定时器(或TxPWM/TxCMP)。另外,该器件还有3个独立的32位CPU定时器

6、,以及多达56个独立编程的GPIO引脚。由此可见,F2812在具备数字信号处理器卓越的数据处理能力的同时,又具有适于控制的片内外设及接口,可广泛应用于各种高性能的系统控制中。F2812不同于F24xx系列DSP,它采用统一编址方式。芯片内部有18K的SARAM,包括MO、M1、L0、L1、H0共5个存储块。各存储块保持独立,可以在同一机器周期对不同的RAM块进行访问,从而减少流水线时延。而且F2812内部有128K字的FLASH,地址空间3D8000h3F7FFFh,适用于低功耗、高性能的控制系统。此外F2812提供了外部存储器扩展接口(XINTF),方便进行系统扩展,其寻址空间可以达到1MB

7、。F2812有多种上电引导方式可供选择,可以通过设置GPIOF4、GPIOF12、GPIOF3、GPIOF2的不同状态进行DSP上电时的程序引导控制。TMS320F2812主要特点:(1)TI主推高性能 TMS320C28x系列TMS320F2812 32位定点微控制单元(MCU),主频高达150MHz;(2)具备I2C、SPI、CAN、PWM等总线接口,适用于各种控制类工业设备;(3)体积小、性能强、便携性高,同时适用于多种手持设备;(4)符合高低温、振动测试,满足工业环境应用;2.2 系统总体设计框图DACADC信号输入缓冲区TM320F2812PC机SRAMFLASH信号输出缓冲区外部逻

8、辑部件输入信号输出信号输入语音信号经过A/D转换器转后,送到音频解码单元中,然后由串口输入到DSP芯片内按语音处理算法进行处理。处理完的语音信号经D/A转换器还原成模拟信号后,用扬声器播出。总体结构框图如下图1所示。图1 语音信号滤波系统总体设计框图2.3 FIR滤波器的设计原理与方法2.3.1 FIR滤波器的设计原理数字滤波器有两类:IIR数字滤波器和FIR数字滤波器。FIR滤波器是有限长单位冲激响应滤波器,在结构上是非递归型的。它可以在幅度特性随意设计的同时,保证精确严格的线性相位。线性相位特性在实际应用中非常重要,如在数据通信、图像处理、语音信号处理等领域,往往都要求具有线性相位特性。并

9、且由于FIR 滤波器的单位脉冲响应有限长,系统不存在非稳定现象,我们总能用因果稳定系统来实现FIR 滤波器。FIR 主要的不足在于其较好的性能是以较高的阶数为代价换来的,对于相同的设计指标,FIR 滤波器所要求的阶数比IIR 滤波器高25 倍,信号的延迟偏大。因此,在保证相同性能的前提下,尽量降低其阶数是FIR 数字滤波器设计的目标之一。FIR滤波器是有限长单位冲激响应滤波器,它具有以下独特的优点:(1) 可以在幅度特性随意设计的同时,保证精确、严格的线性相位;避免被处理的信号产生相位失真,这一特点在宽频带信号处理、阵列信号

10、处理、数据传输等系统中非常重要;(2)  由于FIR滤波器的单位脉冲响应h(n)是有限长序列,因此FIR滤波器没有不稳定的问题; (3) 由于FIR滤波器一般为非递归的结构,因此在有限精度运算下,不会出现递归结构中极性震荡等不稳定现象,误差较小。 FIR滤波器的数学表达式为: (2-1)式中:N为FIR滤波器的抽头数;x(n)为第n时刻的输入样本;h(i)为FIR滤波器第i级抽头系数2.3.2 FIR滤波器的设计方法FIR滤波器通常采用窗函数方法来设计。正确地选择窗函数可以提高设计数字滤波器的性能,或者在满足设计要求的情况下,减小FIR数字滤波器的阶次。常用的窗函

11、数有以下几种:矩形窗(Rectangular window)、三角(Triangular window)、汉宁窗(Hanning window)、海明窗(Hamming window)、布拉克曼窗(Blackman window)、切比雪夫窗(Chebyshev window)、巴特里特窗(Bartlett window)及凯塞窗(Kaiser window)。窗函数设计的基本思想是,首先选择一个适当的理想选频滤波器(它总是具有一个非因果,无限持续时间脉冲响应),然后截取(加窗)它的脉冲响应得到线性相位和因果FIR

12、滤波器。因此这种方法的重点是选择一个合适的窗函数和理想滤波器。我们用()表示理想的选频滤波器,它在通带上具有单位增益和线性相位,在阻带上具有零响应。一个带宽<的低通滤波器由下式给定: ()= (2-2)为了从(n)得到一个FIR滤波器,必须同时在两边截取(n)。而要得到一个因果的线性相位滤波器,它的(n)长度为N,必须有: h(n)=£,=£- ì- (2-3)=这种操作叫做加窗,h(n)可以看作是(n)与窗函数w(n)的乘积: h(n)=(n)w(n) (2-4)其中w(n)=,根据w(n)的不同定义,可以得到不同的窗结构。 

13、在频域中,因果FIR滤波器响应由()和窗响应W()的周期卷积得到,即:=()W()= (2-5)FIR滤波器的设计可用高级语言,如C语言、汇编语言实现,也可以采用MATLAB的数字信号处理软件包提供的专用函数来直接求取FIR滤波器的系数。在MATLAB中,提供了几个设计滤波器的函数,如fir1、fir2等。fir1的功能-基于窗函数的FIR数字滤波器的设计标准频率响应。fir1函数实现了加窗线性相位FIR数字滤波器设计的经典方法。其缺省的窗函数为哈明窗。其调用句法为:  b=fir1(n,Wn);  b=fir1(n,Wn,ftype); &#

14、160;b=fir1(n,Wn,window); 其中n为滤波器的阶数,Wn为0到1之间的数,window为窗函数的类型,ftype为滤波器的类型,即可以是低通、高通、带通或带阻。本文采用fir1函数进行FIR滤波器的设计,具体方案:首先输入所要求的技术指标;然后根据计算归一化频率的公式求出归一化频率。3 硬件系统设计3.1 语音信号的输入输出模块语音信号输入时,AIC23通过其中的AD转换采集输入的语音信号,每采集完一个信号后,将数据发送到DSP的McBSP接口上,DSP可以读取到语音数据,每个数据为16位无符号整数,左右通道各有一个数值;语音信号输出时,DSP可以将语音数据通过M

15、cBSP接口发送给AIC23,AIC23的DA器件将他们变成模拟信号输出。图2 AIC23与DSP连接原理图3.2 语音信号的A/D、D/A转换及接口电路模块在选择模转换芯片型号时,需要考虑A/D的转换精度、采样速率以及芯片的工作电压和接口电压。声音信号经ADC转换后得到的数字信号,输入到数据缓冲区中,TMS320F2812从中提取数据,在系统内部由各种处理算法将录进的音频信号进行快速运算和处理,经处理后的数字信号再输入到输出缓冲区中,经DAC转换器还原成模拟的声音信号。根据这次设计要求,选择的芯片是TI公司的TLC320AIC32芯片。利用缓冲区的目的是进行语音信号的实时处理,系统中各模块是

16、并行运行的,一部分信号正在ADC中进行转换,而另一部分信号则在DSP处理器中进行算法处理,整个系统是以流水线的方式进行工作的。语音信号处理包括两个电路:音频输入模拟信号的处理电路和音频输出模拟信号的处理电路。这两个处理电路的主要作用是将信号进行处理,使之更加适合A/D、D/A转换的要求,尽量避免由于输入输出引入的噪声。同时还可以调整输入输出的放大系数,使音频信号适合各种不同的功放和喇叭,得到最佳的语音效果。 模拟信号的输入采用差分输入方式,即使用两个运算放大器,将单端输入信号转换成差分输入信号,电路连接如图3所示。图3 TLC320AIC23单端口信号转换成差分信号TLC320AIC

17、23的D/A输出处理电路如图4所示。图4 TLC320AIC23的D/A后端输出信号处理电路3.3 电源电路模块电源可由外部电源插孔提供,其中电源插孔5V Power标识为内正外负。电压为直流5V,提供电流1A以上。通过电源转换芯片作为5V转3.3V的高性能稳压芯片,为CPU提供稳定可靠的主电源3.3V。2812芯片采用的是双电源供电模式,以获得更好的电源性能:1.8V对应内核电源,主要为该器件的内部逻辑提供电流;3.3V对应I/O电源,为外部接口引脚提供电压,主要可以直接与外部低压器件接口,而不需要额外的电平转换电路;降低内核电压的主要目的是降低功耗。4 软件程序设计4.1 主程序

18、设计流程图 主程序流程图4.2 FIR滤波器设计流程图图FIR滤波器设计流程图4.3 FIR滤波器的MATLAB程序设计a3 = audioread('sound.wav');info = audioinfo('sound.wav');Fs = info.SampleRate;F3 = fft(a3,1024);subplot(2,2,1);plot(abs(F3);title('加噪音乐频谱');fp=7000;fs=15000;rs = 40;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;Bt=ws-wp; alph = 0.584

19、2*(rs-21)0.4+0.07886*(rs-21);M=ceil(rs-8)/2.285/Bt); %阶数wc=(wp+ws)/2/pi; hn=fir1(M,wc,kaiser(M+1,alph); x3=conv(hn,a3); %sound(x3,Fs);X3=fft(x3,1024);subplot(2,2,2);plot(0:1023)/1024*Fs,20*log10(abs(X3);title('滤噪后频谱');Hz = fft(hn,1024);subplot(2,2,3);plot(0:1023)/1023*Fs,20*log10(abs(Hz);tit

20、le('滤波器频谱');得到滤波器的系数如下:hn = Columns 1 through 5 -0.0050 0.0123 0.0230 -0.0419 -0.0716 Columns 6 through 10 0.1393 0.4440 0.4440 0.1393 -0.0716 Columns 11 through 14 -0.0419 0.0230 0.0123 -0.00505 实验现象及感悟总结5.1 实验现象CCS分析滤波前频谱CCS分析滤波后频谱5.2 感悟总结在课程设计的这段时间,我获益匪浅。不但进一步掌握了DSP技术应用的基础知识及CCS的基本操作,还使我了

21、解了语音数字信号处理的方法。我进一步了解到凡事都需要耐心,细心仔细是成功的保证。虽然在做的过程中遇到了一些问题,但是我都通过自己的努力解决了它们,证明了自己的能力。这次课程设计对我各方面的综合能力有大的提高,对我以后的工作,实践都有很大的帮助。 在此次课程设计当中,我经常把汇编语言的语法知识照搬到C程序设计中,从而导致调试失败,所以下次用此类语言做课程设计时,应事先学习下这类语言的基本语法,以免与其他语言相混淆。还有就是有些不定参数存在时,可先取定值,用于调试,这样可以节约调试时间,从而提高效率。 总之,很感谢学校给我们这次实习的机会。课程实习不但锻炼了我们的动手能力还让我们对自己所学的专业知

22、识有了更深的理解。在此期间,在老师的身上我也学得到很多实用的知识,在此表示对我们指导老师的感谢。还有对帮助过我的同学也表示感谢。参考文献1 顾卫钢. 手把手教你学DSP基于TMS320x281x 北京航空航天大学出版社,2011.2 苏奎峰等. TMS320X281x DSP原理及C程序开发.北京航空航天大学出版社,2008.3 苏奎峰等. TMS320F2812原理与开发. 电子工业出版社,2005.4 万山明. TMS320F2812/2810原理及应用实例. 北京航空航天大学出版社,2007.5 TI公司著,胡广书等编译. TMS320C28X系列DSP的CPU与外设.清华大学出版社,2

23、005.6 TI公司著,胡广书等编译. TMS320C28X系列DSP指令和编程指南.清华大学出版社,2005.附录 源程序#include "DSP281x_Device.h" #include "DSP281x_Examples.h" Uint16 read_data2,read_data1; Uint16 write_data2,write_data1; #define LENGTH 256Uint16 Buf_sourceLENGTH=0;Uint16 Buf_filteredLENGTH=0;int step=0;void spi_init(v

24、oid); void aic23_init(void);void mcbsp_init(void);void mcbsp_write_rdy(Uint16 out_data1,Uint16 out_data2);void mcbsp_read_rdy(void);void Delay(int numbers); void Delay0(Uint16 numbers);Uint16 FIR (Uint16 input);void spi_init() SpiaRegs.SPICCR.bit.SPISWRESET=0; SpiaRegs.SPICCR.all =0x004F; SpiaRegs.S

25、PICTL.all =0x0006; SpiaRegs.SPISTS.all=0x0080; SpiaRegs.SPIBRR =0x0063; SpiaRegs.SPIPRI.bit.FREE = 1; SpiaRegs.SPICCR.bit.SPISWRESET=1; void aic23_init(void) SpiaRegs.SPITXBUF=0x1e00; asm(" nop"); Delay0(10); SpiaRegs.SPITXBUF=0x0117; asm(" nop"); Delay0(10); SpiaRegs.SPITXBUF=0x

26、0317; asm(" nop"); Delay0(10); SpiaRegs.SPITXBUF=0x07f9; asm(" nop"); Delay0(10); SpiaRegs.SPITXBUF=0x0814; asm(" nop"); Delay0(10); SpiaRegs.SPITXBUF=0x0A01; asm(" nop"); Delay0(10); SpiaRegs.SPITXBUF=0x0C00; asm(" nop"); Delay0(10); SpiaRegs.SPITXB

27、UF=0x0E73; asm(" nop"); Delay0(10); SpiaRegs.SPITXBUF=0x100C; asm(" nop"); Delay0(10); SpiaRegs.SPITXBUF=0x1201; asm(" nop"); Delay0(10); Delay(10);void mcbsp_init(void) McbspaRegs.SPCR2.bit.XRST=0; McbspaRegs.SPCR1.bit.RRST=0; Delay(10); McbspaRegs.RCR1.all=0x00A0; Mcb

28、spaRegs.RCR2.all=0x00A0; McbspaRegs.XCR1.all=0x00A0; McbspaRegs.XCR2.all=0x00A0; McbspaRegs.PCR.all=0x000D; McbspaRegs.SPCR1.bit.RRST=1; McbspaRegs.SPCR2.bit.XRST=1; void mcbsp_write_rdy(Uint16 out_data1,Uint16 out_data2) while (McbspaRegs.SPCR2.bit.XRDY!=1); McbspaRegs.DXR2.all=out_data2; McbspaRegs.DXR1.all=out_data1;void mcbsp_read_rdy(void) while(McbspaRegs.SPCR1.bit.RRDY!=1) void Delay0(Uint16 numbers) Uint16 i,j; for(i=0;i<1000;i+); for(j=0;j<numbers;j+); void Delay(int numbers) int i,j; for(i=0;i<4000;

温馨提示

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

评论

0/150

提交评论