自-基于matlab和dsp的FIR数字滤波器设计方法的讨论2

上传人:熠*** 文档编号:186651618 上传时间:2021-07-19 格式:DOC 页数:6 大小:1.05MB
返回 下载 相关 举报
自-基于matlab和dsp的FIR数字滤波器设计方法的讨论2_第1页
第1页 / 共6页
自-基于matlab和dsp的FIR数字滤波器设计方法的讨论2_第2页
第2页 / 共6页
自-基于matlab和dsp的FIR数字滤波器设计方法的讨论2_第3页
第3页 / 共6页
自-基于matlab和dsp的FIR数字滤波器设计方法的讨论2_第4页
第4页 / 共6页
自-基于matlab和dsp的FIR数字滤波器设计方法的讨论2_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《自-基于matlab和dsp的FIR数字滤波器设计方法的讨论2》由会员分享,可在线阅读,更多相关《自-基于matlab和dsp的FIR数字滤波器设计方法的讨论2(6页珍藏版)》请在金锄头文库上搜索。

1、 基于MATLAB和DS的FIR数字滤波器设计方法的讨论摘要:介绍了基于Maab和SP设计FIR数字滤波器的四种方法,并经过实验,将一个多频率成分的信号通过该滤波器并进行比对,实验结果表明,这四种方法都能有效地实现FIR滤波器的设计任务。关键词:FIR;SP;Matab; CCSLinAstrat: hiaer ntrdcdfourmethods to esg FIdiial ilterase n MTL and DS. Tho te expen, sgnl wtmuipl frequencie wasfednt thi filte, a ctst adrawn he reslo his ex

2、pement denrae h eicicy ofth forehosto fulfill e dsigintask of the Fdigalflr Keyws:FIR; S;Matl;CCSLink1 前言 随着信息和数字技术的发展,数字信号处理已成为当今极其重要的的学科和技术领域之一,而数字滤波作为之中的一个重要环节,也一直是人们研究的重点。数字滤波器是一种用来过滤离散时间信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IR)滤波器和有限冲激响应(FI)滤波器1。与IIR滤波器相比,FIR的实现是非递归的,总是稳定

3、的;更重要的是,R滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。F数字滤波器的设计可以在不同的环境下进行,有多种实现方式,而各种方式的步骤都不相同,本文就以窗函数法在不同环境下设计FIR数字滤波器为例对比以下介绍的四种方法。2 FIR滤波器设计实例及实现方法 FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等2。窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,本文就是基于窗函数设计法设计FR低通滤波器。 参数要求:采样频率Fs0

4、0Hz,通带边界频率为1500Hz,通带波纹小于1dB,阻带边界频率为2000z,衰减大于40d,采用7点mmng窗设计;输入信号f=sn(10) s(200t)+ si(500t),通过分析可知,信号通过该滤波器后,把500Hz的频率滤掉了,剩下只含5Hz和1000z的正弦信号。 以下是实现IR数字滤波器的四种方法:1) CS集成开发环境下编程实现 在CCS环境下建立工程并编写汇编代码,运用MAC指令、循环缓冲寄存器、块循环寄存器实现混合信号滤波。输入信号用语言编写实现,并保存为*inc,源程序中用汇编指令.copy把该文件加进去,滤波器的系数则用matla相应指令实现,在进行滤波之前要把这

5、些数据都调到数据存储区。 滤波过程的主要程序语句如下:FIAS: TM #INPUT,IBUFP M #OUTPU,OUTBUF M #KS-1,BR RPTBD LOOP-1 N,BK LD *INU_P+,AIR_FILER: SL A,*DA_P+ RP ,#N1 MA T_+0%,*OEF_P+%,A SH A,*OUTUPLOOP: 程序中运用一个乘加指令MA实现两列数据的卷积过程,该指令能在1个机器周期内完成对2个操作数的间接寻址,在执行一次后就变成了单周期指令,执行速度大大提高。 查看滤波程序运行后的结果,方法为点击ViewGrphie/Frequn,按图1所示填入相应参数,看频

6、域图要把Displaytype选择为FFT Magnitude。输入信号和滤波后输出信号的时域图和频域图如图所示。图1 观测信号波形的属性设置图2 CCS环境下的输入输出信号时域频域图2) Matl环境下编写脚本文件实现 ATAB信号处理工具箱提供了各种窗函数、滤波器设计函数和滤波器实现函数。本文的FIR低通滤波器设计及主要的滤波程序如下:fs=800; %采样频率s=8000Hsuru(1:25)=sin(0:25)/s*2*i*500)+sn(0:5)/fs2*pi*100)+ sin(:25)fs*i*50); %产生长度为5的输入信号,包含500H、1000Hz和0Hz的正弦波xish

7、u=fir1(1,1500/00*2); %用Hamm窗得到16阶的滤波器系数shuhu=cv(shru,xishu); %用卷积指令cn对输入信号进行滤波=(:55)/s;w=800*(0:127)/256;shur1fft(shru,6); 把输入信号进行25点fft变换,用于后续画信号频谱图shucu1ft(uc,25); %把输出信号也进行2点t变换subplot(,2,1) %画出输入信号的时域图plot(t,huru);gid on;tle(输入信号时域图);以上是滤波器的设计以及滤波过程主要程序,画图程序简略。程序执行结果得到的输入输出信号的时域频域图如图所示:图3 Maa编程实

8、现滤波前后的时域频域图形3)用FDAool工具和Siulink模块实现 Mab的galressig Toolbo提供一个交互式界面的滤波器设计工具FDATool,用户可以通过对话框的方式给出滤波器设计要求,然后直接进行设计,对于设计完成的滤波器,在Tol中可以对其分析,观察幅频曲线、相位、零极点图等,可将设计结果保存为ma文件、文本文件、语言头文件等,在安装了SP Blockset下,可将设计出的滤波器实现为Simin模块,并添加其它模块加以仿真。 在mtlb命令提示窗口键入:DTl,进入主界面,单击功能选择按钮“”,进入滤波器设计及分析界面,在设计参数指定区域中,将FilrType设置为op

9、ass;选择Dein eho中的IR,并设置为Windw;选择ammg窗,并将阶数设置为Speif de,键入1;在Frequency中设置相应参数,Fs键入8000,Fc键入500。至此一个数字滤波器就设计完成了。 接下来把滤波器实现为Simulik模块,点击功能选项按钮“”,进入界面后可修改模块的名字,选择要保存的路径,然后点击alizod,完成模块的实现,双击该模块可以看到此滤波器是由一些列的sum模块、gain模块以及dla模块所组成的。接着启动Simuin,在命令提示窗口界面点击“”即可,进入Simin Lbrar rowsr,把ga ocesingBlockset展开,选择相应的模

10、块,托到滤波模块窗口上进行搭建,为了查看输出变量,可以添加适当模块把变量输出到工作空间中用于实时观测模拟结果,搭建完整的系统模块如图所示: 图4 完整的FR滤波模块系统 模型搭建完成后即可设置各个模块的参数,方法为双击该模块,选择正确的参数填入;图中的Tooksp模块可以观测和分析输出到空间的变量数据y和y1,Tme Scope模块则用于观测输入信号与滤波后输出信号的时域图形;Set Scope用于观察输入信号和滤波后输出信号的频域图形。模拟采用固定步长,且步长与DSP的Sine模块中的Saml tme保持一致,若要修改参数,可在菜单中点击Congrton Paramter进入界面,在ovr中

11、填入相应的参数,在参数都设置完成之后就可以进入模拟,并观测输入信号和滤波后输出信号的时域图与频域图。 仿真结果如图5所示:图5 Simun模块下的输入和输出信号时域频域图4)通过tla与CCS的接口CCSk实现 在CS环境下开发工程时,数据不容易获得,程序处理结果不能可视化,而Matb与CS接口CSlink恰好解决了这个问题,利用Mtlb强大的数值计算功能,可以实时调出分析DS内存中的数据,不符合要求时即可在Matla环境下对DS再次写入数据,再次运行得到另外一个结果,从而实现数据的可视化,这将大大简化T SP程序开发的分析、调试和验证过程,十分方便。 先编写C语言源程序,程序中定义了三个全局

12、变量的数组,分别是输入数据din,滤波器系数cff73,还有滤波后输出数据dout27,主程序段主要编写两个数组的卷积,来实现滤波功能,还要编写cm文件,将这些文件都放在Mtlab相应的工作目录下,同时也要将rts.lib文件拷贝到此目录下。该目录还包含ishudat文件,这个文件存放通过FDATol设计后导出的滤波器系数,还包含一个shru.at文件,该文件存放用语言产生的输入信号,本例的输入信号序列长度为256。在文件程序中用rea指令读出里面的数据,再用wie指令将数据写入到DP对应的内存中。 以下是通过在Matlb环境下编写M脚本文件实现与CCS的结合,进行IR数字滤波器的设计,现详细

13、介绍指令的功能:ccssp; %建立atlab与CCS链接,此时CC已在后台运行vsible(c,1); %将CC软件界面显示出来cd(H:matlabc_dp); 转移到程序所在的工程目录下pe(c,cs_dsp.pj); 打开工程文件reet(cc); %初始化目标Pbuild(cc,al); %编译链接load(cc,csdsp.o); %加载.out文件rstart(cc); %将指针指向程序入口处coeff=textrad(ishu.dat,f); %从文件中读出滤波器系数bintextread(uru.da,d); %从文件中读出输入信号序列rite(cc,addrss(c,dn),in1(in);zeros(17,)); %将输入信号写到DS相应区域中wite(cc,dres(cc,cof),int1(coef*32768);eros(256,1); %将滤波器系数写到SP相应区域中we(cc,addres(cc,ut),nt2(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 社会学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号