DSP与matlab联合设计FIR滤波器2_第1页
DSP与matlab联合设计FIR滤波器2_第2页
DSP与matlab联合设计FIR滤波器2_第3页
DSP与matlab联合设计FIR滤波器2_第4页
DSP与matlab联合设计FIR滤波器2_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

设计FIR滤波器作业报告学号:姓名:设计FIR滤波器作业报告本设计主要内容是利用MATLAB验证设计思路并用CCS3.3仿真环境设计一个FIR滤波器,要求滤除给定的叠加正弦波的两个较高频分量。给定波形函数为:y=sin(2*pi*100*t)+sin(2*pi*250*t)+sin(2*pi*270*t)。设计思路:输入信号是频率为100Hz、250HZ、270Hz的合成正弦等幅信号,由于给定的谐波分量最高为270Hz,根据奈奎斯特准则,采样频率应大于最高频率分量的2倍,即大于2*270,故可以以600Hz的采样频率进行采样,即fs=600Hz。设计了一个截止频率为200Hz的低通滤波器,目的是通过所设计的低通bartlett滤波器将信号源中频率为200Hz以上的信号滤掉,留下频率为100Hz的信号,达到滤波的效果。利用MATLAB设计合适的滤波器实现滤波,然后得到其滤波器系数在CCS的simulator方式下编写滤波程序,调用波形数据,实现滤波,并观看滤波前后的信号波形图、频谱图,观察滤波达到预期效果。设计过程在MATLAB中进行算法验证MATLAB语言由于具有数值计算功能、符号计算功能、数据可视化功能、建模仿真可视化功能,使得MATLAB在命题构思、模型建立、仿真研究、假想验证、数据源可视化各环节起着强大的作用。因此在设计中必须先在MATLAB语言中设计一个FIR滤波器。本设计采用的是bartlett窗函数。下面是在MATLAB中设计的27阶FIR型bartlett滤波器程序:clearall; %请寄存器clf; %清屏N=256; %清数据点fs=600; %采样频率dt=1/fs; %采样时间间隔fort=1:Nf1=250;f2=100;f3=270;y(t)=(sin(2*pi*f1*t*dt)+sin(2*pi*f2*t*dt)+sin(2*pi*f3*t*dt));%产生合成信号x(t)=round(10000*y(t)); %为DSP汇编程序做数据转换endfigure(1)plot(y),title('滤波前的波形图像');fp=200fst=250NL=26f1=200;w1=2*pi*f1/fswindow=bartlett(NL+1) %窗函数n=1:NL+1hd=sin(w1*(n-NL/2))./(pi*(n-NL/2));hd(NL/2)=0.67;h=hd.*rot90(window)h1=h*32768;h2=fft(h,N); %将信号做FFT变换pyy=h2.*conj(h2); %做功率谱分析f=(0:(N/2-1));fori=1:N/2-1f(i)=f(i)*fs/N;endfigure(2)plot(f,pyy(1:N/2)),title('滤波器的频谱图像');yy1=filter(h,1,y); %滤波figure(3)plot(yy1),title('滤波后的波形图像');y=fft(y,N);pyy=y.*conj(y);f=(0:(N/2-1));fori=1:N/2-1f(i)=f(i)*fs/N;endfigure(4)subplot(1,2,1),plot(f,pyy(1:N/2)),title('滤波前的波形频谱图像');y=fft(yy1,N);pyy=y.*conj(y);f=(0:(N/2-1));fori=1:N/2-1f(i)=f(i)*fs/N;endsubplot(1,2,2),plot(f,pyy(1:N/2)),title('滤波后的波形频谱图像')其中采样点为256个,采样频率为600Hz,输入信号为100Hz、250Hz、270Hz的合成信号,设定的截止频率为200Hz,通过FIR滤波器后,期望保留的信号是100Hz的信号,200Hz以上的频率基本被滤掉。图1是滤波前的图形,图2是滤波后的图形,图3为滤波器频谱图像,图4滤波前后的波形频谱图像。从这四个图中可以看住原始信号中的频率有100Hz、250Hz、270Hz,经过滤波后200Hz以上的信号成分基本上被滤掉。只留下100Hz的信号。图1滤波前波形图像图2滤波后波形图像图3滤波器的频谱图像图4.滤波前后的波形频谱图像在CCS环境的仿真首先配置处理器项,进入CCStudiov3.3中,编写程序,程序如下: .mmregs.reffilter_start.def_c_int00K_DATA_SIZE.set256K_BUFFER_SIZE.set32K_STACK_SIZE.set256K_B.set27K_CIR.setK_BUFFER_SIZESTACK.usect"stack",K_STACK_SIZESYSTEM_STACK.setK_STACK_SIZE+STACKDATA_DP.usect"filter_vars",0filterdata.usect"filter_vars",K_DATA_SIZEbufferdatay.usect"filter_vars",K_BUFFER_SIZE*2bufferdatax.usect"filter_vars",K_BUFFER_SIZE*2.data.globalinputdatainputdata.WORD16750,-5878,18090,-26831,6340,-9511,11750,11443.WORD-6910,0,-16750,5878,5570,9511,0,-7810.WORD-11750,5878,570,17321,-6910,-5878,-5570,-9511.WORD23660,-9511,18090,-23198,-570,0,570,23198,-18090.WORD9511,-23660,9511,5570,5878,6910,-17321,-570.WORD-5878,11750,7810,0,-9511,-5570,-5878,16750.WORD0,6910,-11443,-11750,9511,-6340,26831,-18090.WORD5878,-16750,0,16750,-5878,18090,-26831,6340.WORD-9511,11750,11443,-6910,0,-16750,5878,5570.WORD9511,0,-7810,-11750,5878,570,17321,-6910.WORD-5878,-5570,-9511,23660,-9511,18090,-23198,-570.WORD0,570,23198,-18090,9511,-23660,9511,5570.WORD5878,6910,-17321,-570,-5878,11750,7810,0.WORD-9511,-5570,-5878,16750,0,6910,-11443,-11750.WORD9511,-6340,26831,-18090,5878,-16750,0,16750.WORD-5878,18090,-26831,6340,-9511,11750,11443,-6910.WORD0,-16750,5878,5570,9511,0,-7810,-11750.WORD5878,570,17321,-6910,-5878,-5570,-9511,23660.WORD-9511,18090,-23198,-570,0,570,23198,-18090.WORD9511,-23660,9511,5570,5878,6910,-17321,-570.WORD-5878,11750,7810,0,-9511,-5570,-5878,16750.WORD0,6910,-11443,-11750,9511,-6340,26831,-18090.WORD5878,-16750,0,16750,-5878,18090,-26831,6340.WORD-9511,11750,11443,-6910,0,-16750,5878,5570.WORD9511,0,-7810,-11750,5878,570,17321,-6910.WORD-5878,-5570,-9511,23660,-9511,18090,-23198,-570.WORD0,570,23198,-18090,9511,-23660,9511,5570.WORD5878,6910,-17321,-570,-5878,11750,7810,0.WORD-9511,-5570,-5878,16750,0,6910,-11443,-11750.WORD9511,-6340,26831,-18090,5878,-16750,0,16750.WORD-5878,18090,-26831,6340,-9511,11750,11443,-6910.WORD0,-16750,5878,5570,9511,0,-7810.text_c_int00:.asgAR2,ORIGIN.asgAR3,INPUT.asgAR4,FILTER.asgAR5,OUTPUTSTART:SSBXFRCTSSBXINTMLD#DATA_DP,DPSTM#STACK,SPCALLfilter_startNOPNOPNOPLOOPBLOOP.defh0,h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13,h14,h15,h16,h17,h18,h19,h20,h21,h22,h23,h24,h25,h26.deffilter_starth0 .set0000Hh1 .set-003FHh2 .set008AHh3 .set0000Hh4 .set-015BHh5 .set01F0Hh6 .set0000Hh7 .set-03CDHh8 .set056EHh9 .set0000Hh10 .set-0D92Hh11 .set1DDBHh12 .set4F2AHh13 .set2349Hh14 .set-1049Hh15 .set0000Hh16 .set06C9Hh17 .set-04E3Hh18 .set0000Hh19 .set02B7Hh20 .set-0209Hh21 .set0000Hh22 .set0116Hh23 .set-00BEHh24 .set0000Hh25 .set0035Hh26 .set0000H.textfilter_start:STM#K_CIR,BKSTM#1,AR0 ;设置循环缓冲区的大小和步长STM#inputdata,ORIGINSTM#bufferdatax,INPUT;STM#bufferdatay,FILTERSTM#filterdata,OUTPUT STM#K_DATA_SIZE-1,BRC ;设置快循环计数器RPTBfilter_end-1MVDD*ORIGIN+,*INPUTRPT#K_B-1-1MAR*INPUT-0%MPY *INPUT+0%,#h26,B LD B,A MPY *INPUT+0%,#h25,B ADD B,A MPY *INPUT+0%,#h24,B ADD B,A MPY *INPUT+0%,#h23,B ADD B,A MPY *INPUT+0%,#h22,B ADD B,A MPY *INPUT+0%,#h21,B ADD B,A MPY *INPUT+0%,#h20,B ADD B,A MPY *INPUT+0%,#h19,B ADD B,A MPY *INPUT+0%,#h18,B ADD B,A MPY *INPUT+0%,#h17,B ADD B,A MPY *INPUT+0%,#h16,B ADD B,A MPY *INPUT+0%,#h15,B ADD B,A MPY *INPUT+0%,#h14,B ADD B,A MPY *INPUT+0%,#h13,B ADD B,A MPY *INPUT+0%,#h12,B ADD B,A MPY *INPUT+0%,#h11,B ADD B,A MPY *INPUT+0%,#h10,B ADD B,A MPY *INPUT+0%,#h9,B ADD B,A MPY *INPUT+0%,#h8,B ADD B,A MPY *

温馨提示

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

评论

0/150

提交评论