《2022年FIR滤波器设计报告 .pdf》由会员分享,可在线阅读,更多相关《2022年FIR滤波器设计报告 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘要本文介绍了数字滤波器的设计基础及用窗函数法设计FIR 滤波器的方法,运用MATLAB 语言实现了低通滤波器的设计以及用CCS 软件进行滤波效果的观察。读取语音文件,并加入一定的随机噪声,最后使用窗函数滤波法进行语音滤波,将加噪后的语音文件转换为.dat文件使其能和 ccs软件链接,输出个阶段的时域和频域波形。关键词: FIR 滤波、 Matlab、窗函数法、 CCS 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 1 目录
2、1引言 . 22FIR 滤波器的窗函数法的设计 . 22.1 fir1 函数 . 23FIR 滤波器的设计( Matlab) . 44滤波器的 DSP 实现( CCS ). 74.1 编写源程序 . 75本课程的心得体会和对本课程的建议. 116结束语 . 12参考文献 . 13名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 2 1引言根据数字滤波器冲激响应函数的时域特性。可将数字滤波器分为两种, 即无限长冲激响应( IIR)
3、 滤波器和有限长冲激响应(FIR) 滤波器。 IIR 滤波器的特征是具有无限持续时间的冲激响应; FIR 滤波器冲激响应只能延续一定时间。其中 FIR 滤波器很容易实现严格的线性相位,使信号经过处理后不产生相位失真,舍入误差小, 稳定等优点。 能够设计具有优良特性的多带通滤波器、微分器和希尔伯特变换器,所以在数字系统、多媒体系统中获得极其广泛的应用。FIR 数字滤波器的设计方法有多种,如窗函数设计法、最优化设计和频率取样法等等。而随着MATLAB 软件尤其是 MATLAB 的信号处理工具箱和Simulink 仿真工具的不断完善,不仅数字滤波器的计算机辅助设计有了可能而且还可以使设计达到最优化。
4、2FIR 滤波器的窗函数法的设计2.1 fir1 函数用来设计标准频率响应的基于窗函数的FIR 滤波器,可实现加窗线性相位FIR 数字滤波器的设计。语法: b=fir1(n,Wn); b=fir1(n,Wn, ftype ); b=fir1(n,Wn,Window); b=fir1(n,Wn, ftype ,Window); 其中, n 为滤波器的阶数; Wn 为滤波器的截止频率; ftype 参数用来决定滤波器的类型,当ftype=high 时,可设计高通滤波器;当ftype=stop时,可设计带阻滤波器。 Windows 参数用来指定滤波器采用的窗函数类型,其默认值为汉明(Hamming)
5、窗。使用 fir1 函数可设计标准的低通、 高通、带通和带阻滤波器。 滤波器的系数包含在返回值b 中,可表示为b(z)=b(1)+b(2)+.+b(n+1)本文采用汉明窗设计低通FIR 滤波器使用 b=fir1(n,Wn)可得到低通滤波器。其中,0Wn1,Wn=1 相当于 0.5。其语法格式为b=fir1(n,Wn); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 3 采用: b=fir1(25, 0.25); 得到归一化系
6、数:b = Columns 1 through 8 -0.0008 0.0010 0.0038 0.0063 0.0042 -0.0065 -0.0231 -0.0335 Columns 9 through 16 -0.0199 0.0290 0.1072 0.1896 0.2426 0.2426 0.1896 0.1072 Columns 17 through 24 0.0290 -0.0199 -0.0335 -0.0231 -0.0065 0.0042 0.0063 0.0038 Columns 25 through 26 0.0010 -0.0008 或者在命令行输入fdatool 进
7、入滤波器的图形设置界面,如下图所示得到系数(并没有归一化)const int BL = 26; const int16_T B26 = -26, 33, 126, 207, 138, -212, -757, -1096, -652, 950, 3513, 6212, 7948, 7948, 6212, 3513, 950, -652, -1096, -757, -212, 138, 207, 126, 33, -26 ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 1
8、4 页 - - - - - - - - - 4 3FIR 滤波器的设计(Matlab)技术指标为:采用25 阶低通滤波器,汉明窗 (Hamming Window)函数,截止频率为1000Hz,采样频率为 8000Hz,增益 40db。下面的程序功能是:读取语音文件,并加入一定的随机噪声,最后使用窗函数滤波法进行语音滤波, 将加噪后的语音文件转换为.dat 文件使其能和ccs软件链接,输出个阶段的时域和频域波形。原程序如下:x,fs,bits=wavread(how.wav); %读取语音文件m=max(x); normal1=x/max(x); %归一化25 阶选择窗函数使用 hamming
9、窗采样频率8000HZ 与截止频率 1000HZ名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 5 sound(normal1,fs,bits); %播放归一化后的语音信号indata=round(32767*normal1); %数据最大取 16 位的数即 32768 tem1=fopen(indata.dat,w); %打开文件保存数据fprintf(tem1,1651 1 0 0 0n); %输出文件头fprintf(t
10、em1,%dn,indata); %输出fclose(tem1); %关闭n = length (x); %求出语音信号的长度X=fft(x,n); %傅里叶变换%x2=randn(1,length(x); %产生一与 x长度一致的随机信号%sound(x2,fs,bits); m=randn(size(x); %产生随机噪声x2=0.1*m+x; X2=fft(x2,n); %傅里叶变换normal=x2/max(x2); %归一化chang=round(32767*normal); sound(normal,fs,bits); %播放加噪声后的音乐ch=fopen(chang.dat,w)
11、; fprintf(ch,1651 1 0 0 0n); fprintf(ch,%dn,chang); fclose(ch); subplot(2,2,1);plot(x);title(原始信号波形 ); subplot(2,2,2);plot(abs(X);title(原始信号频谱 ); subplot(2,2,3);plot(x2);title(加噪声后的语音信号波形 ); subplot(2,2,4);plot(abs(X2);title(加噪声后的语音信号频谱); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
12、整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 6 %figure(2) N=24;Wn=0.25; % 海明窗滤波器b=fir1(N,Wn); hd = dfilt.dffir(b); %画出滤波器的频率响应图freqz(hd); figure(3) z=filter(b,1,x2); % 对信号进行滤波m=length(z); Z=fft(z,m); subplot(211);plot(z);title(FIR滤波后信号的波形 ); subplot(212);plot(abs(Z);title(FIR滤波后信号的频谱 ); %pause(1)
13、; % 延时1秒sound(z,fs,bits); % 播放滤波后的语音信号xout=z/max(z); xto_ccs=round(32767*xout) fid=fopen(output2.dat,w); fprintf(fid,1651 1 0 0 0n); fprintf(fid,%dn,xto_ccs); fclose(fid);运行上面的 M文件,得到下图 1、图2、图3:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - -
14、 - 7 图 1 原始信号和加噪声后的语音信号的时域和频域波形图 2 滤波器的频率响应图 3 FIR 滤波后的时域频域波形4滤波器的 DSP实现( CCS)4.1 编写源程序 .title FIR.ASM .mmregs .def start .bss yn,1 xn .usect xn,25 hn .usect hn,25 indata .usect indata,300 outdata .usect outdata,256 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,
15、共 14 页 - - - - - - - - - 8 .data fir_coff: .word 8*32768/10000,10*32768/10000 .word 38*32768/10000,63*32768/10000 .word 42*32768/10000,-65*32768/10000 .word -231*32768/10000,-335*32768/10000 .word -199*32768/10000,290*32768/10000 .word 1072*32768/10000,1896*32768/10000 .word 2426*32768/10000 .word 1
16、896*32768/10000,1072*32768/10000 .word 290*32768/10000,-199*32768/10000 .word -335*32768/10000,-231*32768/10000 .word -65*32768/10000,42*32768/10000 .word 63*32768/10000,38*32768/10000 .word 10*32768/10000,8*32768/10000 .text start: ssbx frct ;使用小数运算 stm #hn,ar1 ;系数首地址 rpt #24 ; 将系数移入循 mvpd fir_coff
17、,*ar1+ ;环缓冲区 stm #-1,ar0 stm #outdata,ar5 stm #indata,ar4 stm #xn+24,ar2 rpt #24 ; 将输入数据移入 mvdd *ar4+,*ar2+0% ;循环缓冲区名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 9 stm #xn+24,ar2 ;指向第一个输入 stm #hn+24,ar3 stm #25,bk ;缓冲区大小 37 stm #255,brc
18、; 块重复 256 次 stm #-1,ar0 rptb loop-1 ;块程序重复大小 rptz a,#24 ;计算一个输出 mac *ar2+0%,*ar3+0%,a sth a,*(yn) ;保存输出 mvkd *(yn),*ar5+ mvdd *ar4+,*ar2+0% ;读进一个输入loop: nop b loop .end 注:.data系数可改为 .data fir_coff: .word -26,33 .word 126,207 .word 138,-212 .word -757,-1096 .word -652,950 .word 3523,6212 .word 7948 .
19、word 6212,3512 .word 950,-652 .word -1096,-757 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - 10 .word -212,138 .word 207,126 .word 33,-26 经观察效果差不多。4.2 观察滤波效果4.2.1 编译生成 *.out文件,选择 File-Load Programe装入*.out文件,然后选择File-Data-Load装入*.dat文件并打
20、开,在弹出的对话框中输入起始地址indata和长度300 ,数据类型为 data 。4.2.2 查看输入和输出点击View-Graph-Time/Frenquency进入图形属性对话框进行设置图 4 输入输出波形属性设置对话框图形标题起始地址缓冲区长度显示范围采样频率DSP 数据类型显示范围自动伸缩功能频域/时域选择名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - 11 图 5 输入的时域波形图 6 输出的时域波形图 7 输入
21、的频域波形图 8 输出的频域波形5本课程的心得体会和对本课程的建议首先课程的安排比较好,先让我们了解硬件方面的知识,然后在硬件的基础上开始编写简单的程序。这很对我们的胃口,如果一开始就搞抽象的CPU 内核结构之类的东西,肯定让很多人头名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - 12 疼。DSP系统的硬件结构比较复杂,一定要分模块学习,在实际用用到哪一块硬件,就重点了解这一块的内容。紧接着学习 TMS320C54x 的指令
22、系统。寄存器和存储空间在指令执行前后到底是怎么变化的,这个指令的过程到底是怎么样进行的,到现在也还有一些细节问题没搞清楚,学习过程中要结合C54系列的内核进一步细化,看了C54的内部结构框图、寄存器定义、汇编指令格式、片上外设等等,特别是中断系统和位反转操作。接着第五章学习汇编语言的程序设计,要通过不断地做作业练习和上机实验,逐步看懂一个比较复杂的 DSP程序的结构框架,熟悉CCS 软件的应用,为大作业做准备。通过学习和积累,我们能够进行一些简单的应用程序的设计,如:FIR 滤波器、 IIR 滤波器、FFT变换、正弦信号发生器等。我觉得我们的实验课时不够,可以适当地再增加一些。6结束语FIR
23、滤波器的应用十分广泛, 当今的许多信号处理系统 , 如图像处理等系统要求具有线性相位特性。在这方面 FIR 滤波器有独特的优点 , 运用MATLAB 语言, 我们能很容易地设计出具有严格线性相位的 FIR 系统以及实现它。 此外,FIR 滤波器的冲激响应是有限长序列, 其系统函数为一个多项式 , 它所含的极点多为原点 , 所以FIR 滤波器永远是稳定的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 13 参考文献邹彦.DSP原理及应用 M. 北京:电子工业出版社, 2005.1 瑞泰创新 .ICETEK-VC5416AE-S61 实验指导书 J. 北京Alan V.Oppenheim&Alan S.Willsky&S.Hamid. 信号与系统(第2 版)M. 西安交通大学出版社,2008.8名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -
限制150内