
DSP实验资料报告材料FIR和IIR滤波器设计.doc
13页wordDSP实验报告实验一 FIR滤波器的设计利用所学DSP知识,在CCS3.3平台上,对TMS320VC5416DSP设计,编程实现FIR滤波器从而学会使用CCS软件和TMS320VC5416实验板设计一个10阶的FIR滤波器,要求=2.5kHZ,定点实现并对=8kHZ的多正弦波合成文件进展滤波测试,显示出输入和输出信号一个截止频率为的理想数字低通滤波器,其传递函数的表达式为:这个滤波器是物理不可实现的为了产生有限长度的冲激响应函数,我们取样响应为,长度为N表示截取后的冲激响应,即,其中即为窗函数,窗长为N一般的FIR滤波器差分方程如下:进展Z变换得到FIR的系统函数为:N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器组成因此可以得到FIR滤波器的结构图如图1所示图1 FIR滤波器直接结构图对于FIR滤波器的设计,其系数是关键由于matlab自带滤波器设计工具箱和滤波器设计函数,故借用matlab工具,设计满足条件的滤波器并导出系数以备编写滤波器程序时使用实验需要用到的输入数据是多正弦波合成文件,对于输入信号的设计,这里也借助matlab编程生成dat文件然后用C语言编写FIR滤波器的主程序,输入文件在程序运行后导入。
〔1〕滤波器系数的设计由于实验只给出滤波器条件为N=10,=2.5kHZ,并没有给出和,所以这里调用matlab工具箱函数fir1实现窗函数法设计滤波器fir1的调用格式为,返回值为6dB截止频率为的N阶〔单位脉冲响应h〔n〕长度=N+1〕的FIR低通滤波器的系数向量〔为标量〕,默认选用哈明窗其中为对归一化的数字频率,其计算公式为,这里计算得出=0.625因为得到的系数向量要用于DSP的FIR程序中,需要对其进展进展转换并取整最后系数结果如如如下图2所示图2 10阶FIR滤波器系数对于10阶滤波器得到11个系数,将该系数保存,以备后面编写程序时使用该滤波的幅频图和相频图分别对应图3和图4图3 10阶FIR滤波器幅频图图4 10阶FIR滤波器相频图〔2〕输入信号的生成根据教师给的两个.wav语音文件,这里用matlab的wavread函数将其读进去,并编写程序查看其局部信号时域和频域图,并生成两个语音文件的.dat文件,供作为DSP设计滤波器验证时所用的输入文件两个语音信号局部时域和频域图分别对应图5〔a〕〔b〕和图6〔a〕〔b〕〔a〕 语音文件1时域图〔b〕 语音文件1频谱图图5 语音文件1时域和频域图〔a〕语音文件2时域图〔b〕语音文件2频谱图图6 语音文件2时域和频域图〔3〕CCS中FIR程序编写首先打开CCS setup选择对应5416型号的处理器,保存后打开CCS软件,project->new建立fir滤波工程。
新建一个input.h文件,并将matlab产生的input文件里面的数据放入其中,然后project->add files to project..将input.h添加至工程同理,编写FIR滤波主程序并将其参加工程最后将文件fir.cmd参加工程如图7所示编译生成fir.out文件,然后file->load program..->fir.out,运行程序然后view->graph->time/frequency,显示如图8所示然后选择对应的single time、FFT magnitude分别对应时域和频域图形start address分别填input和output对应输入和输出的数据通过改变acquisition buffer size和display data size数值来调整显示框的结果对应的显示结果如图9-图12所示图8(a) 时域图〔b〕 频域图图9 输入信号1波形图(a) 滤波结果时域图(b) 滤波结果频域图图10 信号1滤波结果图〔a〕 时域图〔b〕频域图图11 输入信号2波形图(a) 滤波结果时域图(b) 滤波结果频域图图12 信号2滤波结果图〔4〕程序下载到DSP实验板点击file->new->DSP/BIOS configuration,选择DSK5416.cdb,保存至文件的工程目录下。
将刚生成的.cdb文件和编写的参加到工程中将前面的程序文件分别参加工程中,进展编译实验板和电脑点击debug->connect,连接测试板,file->load program..,从工程文件下的debug文件夹中导入fir.out文件,再点击debug->run运行从图9-图12来看程序根本完成了对输入的合成信号的滤波其中输入信号1是由1Khz、2Khz、3Khz合成的信号,而输入信号2是多种频率信号复合的信号经过FIR滤波器滤波后,由输出的频域图可以看出,本滤波器将大于2.5Khz的信号根本滤去由于滤波器的阶数较小,对于3Khz信号并没有完全滤除,这也是实验预期之中的对于信号2的复合信号,由频谱图比拟可以发现,大于2.5Khz的信号根本被滤去综上所述,本实验设计的FIR滤波器实现了截止频率为2.5Khz的低通滤波器的功能实验二 IIR滤波器的设计在上面设计了FIR滤波器的根底上,设计一样性能的IIR滤波器IIR与FIR滤波器相比,一样性能水平的滤波器,IIR可以用较低的阶数实现,但是IIR滤波器是非线性的,且稳定性较差IIR滤波器对FIR滤波器的前馈环节进展了扩展,增加了一个反响环节。
IIR滤波器的〔L-1〕阶前馈环节和〔M-1〕阶反响环节的差分方程表示为:其中a与b为滤波器系数向量对上式进展z变换可得:进而得到IIR滤波器的传递方程为:因此IIR滤波器的设计需要求出其系数向量a和bIIR滤波器的设计思路和容与FIR的根本一样,这里不再表示这里使用与FIR滤波器一样的输入信号一般情况下,一样性能的IIR滤波器阶数应低于FIR滤波器,这里为了方便,设计一样阶数的IIR滤波器IIR滤波器系数向量用matlab的自带的滤波器设计工具箱设计得出IIR滤波器对输入信号1和2滤波后的时域和频域图如图13和14所示a) 滤波后时域图(b) 滤波后频域图图13 IIR滤波器对输入信号1的滤波结果(a) 滤波后时域图(b) 滤波后频域图图14 IIR滤波器对输入信号2的滤波结果通过观察IIR滤波结果图,与上面FIR比拟,可以发现,实验中截止频率同为2.5Khz的IIR滤波器,对2Khz和3Khz频率的信号都有滤波现象这是由于滤波器自身的幅频特性造成的经过观察信号2的滤波结果可以看出,该滤波器也根本可以实现截止频率为2.5Khz的低通滤波器的功能实验总结本次实验所设计的10阶FIR和IIR滤波器都可以很好的完成低通滤波效果,达到了实验预期的目的。
通过FIR和IIR滤波器的设计,不仅让我了解到了数字滤波器的设计思路和设计方法,而且通过比拟了解了FIR和IIR滤波器各种的优点和缺点通过实验让我对数字滤波器的知识有了进一步了解和认识,同时掌握了简单的滤波器实现算法和程序由于之前没有较多接触过CCS和DSP实验板,此次实验在对CCS软件的使用、软件编程、仿真、连接实验板上花了大量的时间通过在网上查资料并一点点学习和尝试才根本学会使用由于对cmd文件的不了解,开始编译时总是报错,通过与同学一起讨论和在网上查询才知道解决方法总得来说,实验让我学会了CCS软件和DSP实验板的根本使用方法并在此根底上学会了简单的FIR和IIR滤波器的设计收获颇多附录(1) 输入信号生成程序〔matlab程序〕clc;clear all;close all;FS=8000;%[y,FS,NBITS]=wavread('C:\Users\Administrator\Desktop\MultiToneTest.wav');[y,FS,NBITS]=wavread('C:\Users\Administrator\Desktop\sc03.wav');figure(1)plot(y(1:500));title('语言信号时域图');figure(2)y=abs(fft(y(1:1000)));df=(1:1000)*(FS/1000);plot(df,y(1:1000));title('语言信号频域图');y=(y*32767);y=int16(y);fid=fopen('input.dat','w');for m=1:2048 fprintf(fid,'%d,\n',y(m)); %输出endfclose(fid);〔2〕FIR滤波器程序#include "stdio.h" #define N 11 //FIR滤波器的级数+1(因为本实验中滤波器阶数为10)#define LEN 2048 //待滤波的输入数据长度 #include"input.h" //输入数据文件long yn; int B[11] = { -64, 438, -530, -2519 , 8803, 20512,8803,-2519,-530,438,-64};//滤波器系数int input[LEN]; //输入缓冲,在仿真时将从存载入 int output[LEN]; //输出缓冲,直接存放在存中 void main() { int i,j; int *x; for(j=0;j









![2019版 人教版 高中语文 必修 上册《第一单元》大单元整体教学设计[2020课标]](http://img.jinchutou.com/static_www/Images/s.gif)


