DSP课程研发设计报告_第1页
DSP课程研发设计报告_第2页
DSP课程研发设计报告_第3页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告课程设计名称:DSP原理与应用系 部:二系学生姓名:班 级:学 号:成 绩:指导教师:开课时间:2010-2011学年2学期目录一、设计的要求1二、设计原理12.1、FIR滤波器的特点 122、FIR滤波器的基本结构 12.3、FIR滤波器的窗函数设计法 2三、设计步骤33.1语音采集的采集与分析 33.2用MATLAB 给原始信号加噪声 5四、设计一定参数的滤波器 74.1用MATLAB 设计滤波器 74.2、用FIR滤波器滤除高频 11五、设计体会 17六、参考文献 17基于TMS320VC5509 DSP的FIR滤波器设计、设计的要求1、系统地理解和掌握高速数字信号处理器的特

2、点和基本概念。2、了解TMS320054x DSP汇编语言的特点,掌握TMS320C54x DSP常用的开发工具,掌握集成开发环境 CCS的使用,熟练掌握利用CCS进行程序开发的一般过程。3、掌握汇编语言程序的编写方法,汇编器和链接器的用法,能利用汇编指令实现高速数字信号处理器的一些典型用法。DSP技术在通讯、4、在DSP应用方面得到系统锻炼,通过该课程的学习为今后从事使用 控制等相关领域的应用、研究和开发打下良好的基础,为进入社会增加一种工作技能。编写源代码程序,并在DSP开发环境5、要求认真查阅所需资料, 按照选题编制程序框图, 中进行调试,最终实现课题所要求的功能。二、设计原理在数字信号

3、处理中,滤波占有极其重要的地位。数字滤波是语音处理、图像处理、模式识别、频谱分析等应用中的基本处理算法。用DSF芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好等特点。2.1、FIR滤波器的特点(1) 系统的单位冲激响应h(n)在有限个n值处不为零;系统函数H(z)在|z|>0处收敛,在|z|>0处只有零点,有限z平面只有零点,而全部极点 都在z=0处個果系统);(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构(例如频率抽样结构) 中也包含有反馈的递归结构。2.2、FIR滤波器的基本结构数字滤波是将输入的信号序列,按规定的算法进行处理,

4、从而得到所期望的输出序列。一个线性位移不变系统的输出序列 y(n)和输入序列x(n)之间的关系,应满足常系数线性差分方程:(1)N 4My(n)八 bix(n-i)-' aiy(n-i)n_0i =0i =1x(n):输入序列,y(n):输出序列,ai、bi :滤波器系数,N:滤波器的阶数。在式(1)中,若所有的 ai均为0,则得FIR滤波器的差分方程:N 4y(n)八 hx(n -i)i =0对式(2)进行z变换,可得FIR滤波器的传递函数:FIR滤波器的基本结构是一个分节的延时线,把每一节的输出加权累加,得到滤波器 的输出。FIR滤波器的结构图如图2.1所示:x(n-1)x(n)-

5、o y(n)x(n-N+1)图2.1 FIR滤波器的结构图 FIR滤波器的单位冲激响应h(n)为有限长序列。FIR滤波器具有线性相位特性。若h(n)为实数,且满足偶对称或奇对称的条件,则偶对称:h(n )= h(N-1- n) ;奇对称:h(n)= -h(N-1- n) 。在数字滤波器中,FIR滤波器具有如下几个主要特点: FIR滤波器无反馈回路,是一种无条件稳定系统; FIR滤波器可以设计成具有线性相位特性。2.3、FIR滤波器的窗函数设计法常用的FIR滤波器的设计方法有窗函数设计法和频率抽样设计法。窗函数法设计的 基本思想是设计一个有限长滤波器频率响应来逼近理想滤波器的频率响应。设理想滤波

6、 器的频率响应为Hd(ejw),其单位抽样响应用hd(n)表示。通常选择Hd(ejw)为具有分段常 数特性的理想滤波器,因此hd( n)是无限长非因果的,不能直接作为FIR数字滤波器的单位抽样响应。窗函数设计法就是截取 hd( n)的一段为有限长因果序列,并选择合适的窗函 数进行加权作为FIR数字滤波器的单位抽样响应。窗函数法设计线性相位 FIR滤波器的一般步骤为:(1) 首先是给定所要求的频率响应函数Hd(ejw);(2) 求理想滤波器的单位抽样响应人(用二命也(宀叫血(3) 由过渡带带宽及阻带最小衰减的要求,选定窗函数w(n),并估计窗口长度N ;(4) 求得所设计的FIR滤波器的单位抽样

7、响应(5)求FIR滤波器的系统函数h(二)七心hn«0三、设计步骤3.1语音信号的采集与分析(1)录制语音,并命名为“ wjj”,保存在相应的位置(C盘)。单击开始菜单一一程序一一附件一一娱乐一一录音机,然后设计属性:单击文件一一属性,在弹出的文本框中单击立即转换一一设计格式(PCM)属性(8000KHZ 16位单声道16KB/秒,然后点击确定。开始录音。(2)用MATLAB寸原始语音信号进行分析,画出它的时域波形和频谱。程序如下:fs=22050;x1wjj.wav');sou nd(x1,22050);%播放语音信号y1=fft(x1,1024);%对信号做1024点FF

8、T变换f=fs*(0:511)/1024;figureplot(x1)%做原始语音信号的时域图形title('原始语音信号');xlabel('time n');ylabel('fuzhi n');figure(2)freqz(x1)%绘制原始语音信号的频率响应图title('频率响应图')figure(3)subplot(2,1,1);plot(abs(y1(1:512)%做原始语音信号的 FFT频谱图title('原始语音信号FFT频谱')subplot(2,1,2);plot(f,abs(y1(1:512);

9、title('原始语音信号频谱')xlabel('Hz');ylabel('幅值');图3.1原始语音信号图频率响应图藍出詈)OJSMd图3.2频率响应图图3.3原始语音信号FFT频谱和信号频谱图3.2用MATLAB给原始信号加噪声给原始的语音信号加上一个高频余弦噪声,频率为(56Khz任选),形成噪声文件。再对加噪后的语音进行分析,并画出其信号时域和频谱图。程序如下:fs=22050;x1=wavread( 'C:wjj.wav '); f=fs*(0:511)/1024;t=0:1/fs:(le ngth(x1)-1)/fs;

10、 Au=0.03;d=Au*cos(2*pi*5500*t)' x2=x1+d;sou nd(x2,22050);y2=fft(x2,1024);figure (4) ;plot(t,x2)title('加噪后的信号');xlabel('time n');ylabel('fuzhi n');figure(5) subplot(2,1,1);plot(f,abs(y1(1:512);title('原始语音信号频谱');xlabel('Hz');ylabel('fuzhi');subplot(2

11、,1,2);plot(f,abs(y2(1:512);title('加噪后的信号频谱);xlabel('Hz'); ylabel('fuzhi');图3.4 加噪后的信号wjj1.wav ');%用于生成噪声语音加噪后的信号通过比较图1和图4,可以看出,加噪声后的信号的幅值明显比原始信号的幅值高。原始语音信号频谱加噪后的信号频谱图3.5原始语音和加噪后的信号频谱对比图四、设计一定参数的滤波器4.1用MATLAB设计滤波器使用fir2函数设计一个35阶低通滤波器,信号的采样频率为 8000Hz,滤波器的通带截 止频率为3100Hz,阻带截止频率为

12、3500Hz。在函数中,其截止频率均用归一化频率表示。归一化频率的计算方法:f=实际频率/(采样频率/2),则将截止频率归一化后的截止频率值为 0.775、0.875。4.1.1 用 matlab 求 fir2 的参数:运行下列程序:f=0 0.775 0.875 1m=11 0 0b=fir2(34,f,m)得到的数据f =00.77500.87501.0000m =110 0b =Columns 1 through 70.0000-0.00030.0007-0.00130.0017-0.0012-0.0012Columns 8 through 140.0059-0.01210.0170-0

13、.01640.00580.0175-0.0528Colu mns 15 through 210.0950-0.13560.16500.82420.1650-0.13560.0950Columns 22 through 28-0.05280.01750.0058-0.01640.0170-0.01210.0059Columns 29 through 35-0.0012-0.00120.0017-0.00130.0007-0.00030.0000、FIR滤波器的程序流程图开始初始化工作变l=L 量r调用波形 序产生混(高频加孩发生子程 昆叠的波形氐频1调用FIR滤波子程 序计算当前输出FIR滤波用

14、滤波器系数乘以保 存的N-1个输入值和 当前输入值并求和返回计算结果、滤波程序:#in elude "myapp.h"#i nclude "ICETEK-VC5509-EDU.h"#in clude "sca ncode.h"#in clude <math.h>#defi ne FIRNUMBER 35#define SIGNAL1F 3100#define SIGNAL2F 3500#define SAMPLEF 8000#define PI 3.1415926float In putWave();float FIR()

15、;float fHnFIRNUMBER=0.0000, -0.0003, 0.0007, -0.0013 , 0.0017, -0.0012 , -0.0012,0.0059, -0.0121, 0.0170, -0.0164, 0.0058, 0.0175, -0.0528,0.0950 , -0.1356 , 0.1650 , 0.8242 , 0.1650 , -0.1356 , 0.0950 , -0.0528 ,0.0175 , 0.0058 , -0.0164 , 0.0170 , -0.0121 , 0.0059 ,-0.0012, -0.0012 , 0.0017 , -0.0

16、013 , 0.0007 , -0.0003 , 0.0000;float fXn FIRNUMBER= 0.0 ;float fin put,fOutput;float fSig nal1,fSig nal2;float fStepSig nal1,fStepSig nal2;float f2PI;int i;float fIn256,fOut256;int nln,n Out;main ()nln=0; nO ut=0;f2PI=2*PI;fSig nal1=0.0;fSig nal2=PI*0.1;fStepSig nal1=2*PI/30;fStepSig nal2=2*PI*1.4;

17、while ( 1 )fin put= In putWave();flnnln =fl nput;nln+; nln %=256;fOutput=FIR();fOut nOut=fOutput;nO ut+;/* break poi nt */if ( nOut>=256 )n Out=0;float In putWave()for ( i=FIRNUMBER-1;i>0;i-)fXn i=fX n i-1;fXn 0=si n(double)fSig nal1)+cos(double)fSig nal2)/6.0;fSig nal1+=fStepSig nal1;if ( fSi

18、g nal1>=f2PI )fSig nal1-=f2PI;fSig nal2+=fStepSig nal2;if ( fSig nal2>=f2PI )fSig nal2-=f2PI;return(fX n 0);float FIR()float fSum;fSum=0;for ( i=0;i<FIRNUMBER;i+ )fSum+=(fX n i*fH ni);return(fSum);FIR滤波器的DSP实现程序采用C语言编写,滤波器时频特性如图 4.2和图4.5所示。图4.1图4.4图4.3图4.2图4.5图4.64.2、用FIR滤波器滤除高频噪声、对生成的加噪语音进

19、行噪声滤波,并对滤波后的语音进行分析 语音信号的FIR滤波程序流程图如下:初始化:EMIF、 CPU 频率、AIC23调用 AIC23_Mixer 子程序处理音频数 据输入/输出422、语音信号的FIR滤波程序#i nclude "55O9.h"#include "util.h" #include "audio.h" / AIC23 Con trol Register addresses#defi ne AIC23_LT_LINE_CTL 0x00 / 0#defi ne AIC23_RT_LINE_CTL 0x02 / 1#defi

20、 ne AIC23_LT_HP_CTL 0x04 / 2#defi ne AIC23_RT_HP_CTL 0x06 / 3#defi ne AIC23_ANALOG_AUDIO_CTL 0x08 / 4#defi ne AIC23_DIGITAL_AUDIO_CTL 0x0A / 5#defi ne AIC23_POWER_DOWN_CTL 0x0C / 6#defi ne AIC23_DIGITAL_IF_FORMAT 0x0E / 7#defi ne AIC23_SAMPLE_RATE_CTL 0x10 / 80x1E / F - Writing 0 to this reg trigger

21、s#defi ne AIC23_DIGF_ACTIVATE 0x12 / 9 #defi ne AIC23_RESET_REG reset / AIC23 Control Register setti ngs#defi ne lt_ch_vol_ctrl0x0017 /* 0 */0x0079 /* 2 */0x0079 /* 3 */0x0000 /* 4 */0x0000 /* 5 */0x0002 /* 6 */#defi ne rt_ch_vol_ctrl0x0017 /* 1 */ #defi ne lt_ch_headph_ctrl #defi ne rt_ch_headph_ct

22、rl #defi ne alog_au_path_ctrl #defi ne digi_au_path_ctrl #defi ne pow_mgt_ctrl_ctrl #defi ne digi_au_i ntf_ctrl 0x000D /* 7 */#defi ne au_FS_TIM_ctrl 0x0000 /* 8 MCLK=12M Hz, Sample Rate setti ng */#defi ne digi_i ntf1_ctrl 0x0001 /* 9 */#defi ne digi_i ntf2_ctrl 0x00FF /* 10 */#defi ne DIGIF_FMT_MS

23、0x40#defi ne DIGIF_FMT_LRSWAP 0x20 #defi ne DIGIF_FMT_LRP0x10#defi ne DIGIF_FMT_IWL0x0c#defi ne DIGIF_FMT_FOR0x03#defi ne DIGIF_FMT_IWL_160x00#defi ne DIGIF_FMT_IWL_200x04#defi ne DIGIF_FMT_IWL_240x08#defi ne DIGIF_FMT_IWL_320xc0 #defi ne DIGIF_FMT_FOR_MSBRIGHT 0x00#defi ne DIGIF_FMT_FOR_MSLEFT 0x01

24、#defi ne DIGIF_FMT_FOR_I2S0x02#defi ne DIGIF_FMT_FOR_DSP0x03#defi ne POWER_DEV0x80#defi ne POWER_CLK0x40#defi ne POWER_OSC0x20#defi ne POWER_OUT0x10#defi ne POWER_DAC0x08#defi ne POWER_ADC0x04#defi ne POWER_MIC0x02#defi ne POWER_LINE0x01#defi ne SRC_CLKOUT0x80#defi ne SRC_CLKIN0x40#defi ne SRC_SR#de

25、fi ne ANAPCTL_BYP0x3c0x020x010x200x180x0c0xc00x200x100x080x040x020x010x08#defi ne SRC_BOSR#defi ne SRC_MO #defi ne SRC_SR_44#define SRC SR 32 #defi ne SRC_SR_8 #define ANAPCTL STA #defi ne ANAPCTL_STE #define ANAPCTL DAC #defi ne ANAPCTL_INSEL #defi ne ANAPCTL_MICM #defi ne ANAPCTL_MICB #define DIGP

26、CTL DACM#defi ne DIGPCTL_DEEMP0x06#defi ne DIGPCTL_ADCHP0x01#defi ne DIGPCTL_DEEMP_DIS0x00#defi ne DIGPCTL_DEEMP_320x02#defi ne DIGPCTL_DEEMP_440x04#defi ne DIGPCRL_DEEMP_480x06#defi ne DIGIFACT_ACT0x01#defi ne LT_HP_CTL_LZC0x80#defi ne RT_HP_CTL_RZC0x80void AIC23_Write( un sig ned short regaddr, un

27、 sig ned short data) -un sig ned char buf2;buf0 = regaddr;buf1 = data;I2C_Write(I2C_AIC23, 2, buf);void McBSP0_I nitSlave()PC55XX_MCSP pMCBSP0 = (PC55XX_MCSP)C55XX_MSP0_ADDR;/ Put the MCBSP in resetWrite(pMCBSP0 -> spcr1, 0);Write(pMCBSP0 -> spcr2, 0);/ Config frame parameters (32 bit, sin gle

28、 phase, no delay)Write(pMCBSP0 -> xcr1, XWDLEN1_32);Write(pMCBSP0 -> xcr2, XPHASE_SINGLE | XDATDLY_0);Write(pMCBSP0 -> rcr1, RWDLEN1_32);Write(pMCBSP0 -> rcr2, RPHASE_SINGLE | RDATDLY_0);/ Disable int frame gen erati on and en able slave w/ext frame sig nals on FSX/ Frame sync is active

29、high, data clocked on rising edge of clkx Write(pMCBSP0 -> pcr, PCR_CLKXP);/ Bring tran smitter and receiver out of resetSetMask(pMCBSP0 -> spcr2, SPCR2_XRST);SetMask(pMCBSP0 -> spcr1, SPCR1_RRST);void AIC23_I nit()I2C_I ni t();/ Reset the AIC23 and turn on all powerAIC23_Write(AIC23_RESET_

30、REG, 0);AIC23_Write(AIC23_POWER_DOWN_CTL, 0);AIC23_Write(AIC23_ANALOG_AUDIO_CTL, ANAPCTL_DAC | ANAPCTL_INSEL); / 使用 麦克风音源AIC23_Write(AIC23_DIGITAL_AUDIO_CTL, 0);/ Tur n on volume for line in putsAIC23_Write(AIC23_LT_LINE_CTL,0x000);AIC23_Write(AIC23_RT_LINE_CTL,0x000);/ Configure the AIC23 for maste

31、r mode, 44.1KHz stereo, 16 bit samples/ Use 12MHz USB clockAIC23_Write(AIC23_DIGITAL_IF_FORMAT, DIGIF_FMT_MS | DIGIF_FMT_IWL_16 |DIGIF_FMT_FOR_DSP);AIC23_Write(AIC23_SAMPLE_RATE_CTL, SRC_SR_44 | SRC_BOSR | SRC_MO);/ Turn on headpho ne volume and digital in terfaceAIC23_Write(AIC23_LT_HP_CTL, 0x07f);

32、 / 0x79 for speakersAIC23_Write(AIC23_RT_HP_CTL, 0x07f);AIC23_Write(AIC23_DIGF_ACTIVATE, DIGIFACT_ACT);/ Set McBSP0 to be tran smit slaveMcBSP0_l nitSlave();void AIC23_Disable()PC55XX_MCSP pMCBSP0 = (PC55XX_MCSP)C55XX_MSP0_ADDR;I2C_Disable();/ Put the MCBSP in resetWrite(pMCBSP0 -> spcr1, 0);Writ

33、e(pMCBSP0 -> spcr2, 0);#defi ne AUTIODATALEFT 0x0d000#defi ne AUTIODATARIGHT 0x17000int *pAudioLeft,*pAudioRight;int www=0;void AIC23_Mixer()PC55XX_MCSP pMCBSP0 = (PC55XX_MCSP)C55XX_MSP0_ADDR;int left, right;int *pl,*pr, nAudioCou nt;int i;pAudioLeft=pl=(i nt *)AUTIODATALEFT;pAudioRight=pr=(i nt

34、*)AUTIODATARIGHT;n AudioCou nt=0;for ( i=0;i<NX;i+) xi=0;for ( i=0;i<NH+2;i+) dbi=0;while(1)while (!ReadMask(pMCBSP0 -> spcr2, SPCR2_XRDY);/ 等待数据传输完成(*pl)=left = Read(pMCBSP0 -> ddr1);/ 读入左声道数据right = Read(pMCBSP0 -> ddr2);/ 读入右声道数据xNX-1=left/16;/防止滤波时数据溢出fir2(x, h, r, db, NX, NH);/调用滤波程序计算当前输出/数组r的最后一个单元为当前输出 将原始数据送左声道输出/将原始数据送左声道输出/将经过滤波后的数据送右声道输出 /循环使用缓冲区(*pr)=rNX-1;Write(pMCBSPO -> dxrl, left); / /Write(pMCBSPO -> dxrl, rNX-1); Write(pMCBSPO -> d

温馨提示

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

评论

0/150

提交评论