DSP实验报告FIR和IIR滤波器设计.doc

上传人:一*** 文档编号:4542476 上传时间:2021-09-28 格式:DOC 页数:16 大小:2.20MB
返回 下载 相关 举报
DSP实验报告FIR和IIR滤波器设计.doc_第1页
第1页 / 共16页
DSP实验报告FIR和IIR滤波器设计.doc_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《DSP实验报告FIR和IIR滤波器设计.doc》由会员分享,可在线阅读,更多相关《DSP实验报告FIR和IIR滤波器设计.doc(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、,DSP实验报告实验一 FIR滤波器的设计1.实验目的利用所学DSP知识,在CCS3.3平台上,对TMS320VC5416DSP设计,编程实现FIR滤波器。从而学会使用CCS软件和TMS320VC5416实验板。2.实验要求设计一个10阶的FIR滤波器,要求fc=2.5kHZ,定点实现。并对Fs=8kHZ的多正弦波合成文件进行滤波测试,显示出输入和输出信号。3.实验原理一个截止频率为c的理想数字低通滤波器,其传递函数的表达式为:这个滤波器是物理不可实现的。为了产生有限长度的冲激响应函数,我们取样响应为,长度为N。表示截取后的冲激响应,即,其中即为窗函数,窗长为N。一般的FIR滤波器差分方程如下

2、:进行Z变换得到FIR的系统函数为:N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器组成。因此可以得到FIR滤波器的结构图如图1所示。图1 FIR滤波器直接结构图4.设计思路对于FIR滤波器的设计,其系数是关键。由于matlab自带滤波器设计工具箱和滤波器设计函数,故借用matlab工具,设计满足条件的滤波器并导出系数以备编写滤波器程序时使用。实验需要用到的输入数据是多正弦波合成文件,对于输入信号的设计,这里也借助matlab编程生成dat文件。然后用C语言编写FIR滤波器的主程序,输入文件在程序运行后导入。5.实验内容(1)滤波器系数的设计由于实验只给出滤波器条件为N=10,fc=

3、2.5kHZ,并没有给出fp和fs,所以这里调用matlab工具箱函数fir1实现窗函数法设计滤波器。fir1的调用格式为hn=fir1(N,c),返回值为6dB截止频率为c的N阶(单位脉冲响应h(n)长度N=N+1)的FIR低通滤波器的系数向量(c为标量),默认选用哈明窗。其中c为对归一化的数字频率,其计算公式为c=2fcFs,这里计算得出c=0.625。因为得到的系数向量要用于DSP的FIR程序中,需要对其进行进行转换并取整。最后系数结果如下图2所示。图2 10阶FIR滤波器系数对于10阶滤波器得到11个系数,将该系数保存,以备后面编写程序时使用。该滤波的幅频图和相频图分别对应图3和图4。

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

5、软件,project-new建立fir滤波工程。新建一个input.h文件,并将matlab产生的input文件里面的数据放入其中,然后project-add files to project.将input.h添加至工程。同理,编写FIR滤波主程序并将其加入工程。最后将链接文件fir.cmd加入工程。如图7所示。图7 CCS3.3程序窗口编译生成fir.out文件,然后file-load program.-fir.out,运行程序。然后view-graph-time/frequency,显示如图8所示。然后选择对应的single time、FFT magnitude分别对应时域和频域图形。st

6、art 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,保存至文件的

7、工程目录下。将刚生成的.cdb文件和编写的加入到工程中。将前面的程序文件分别加入工程中,进行编译。链接实验板和电脑。点击debug-connect,连接测试板,file-load program.,从工程文件下的debug文件夹中导入fir.out文件,再点击debug-run运行。6.实验结果从图9-图12来看程序基本完成了对输入的合成信号的滤波。其中输入信号1是由1Khz、2Khz、3Khz合成的信号,而输入信号2是多种频率信号复合的信号。经过FIR滤波器滤波后,由输出的频域图可以看出,本滤波器将大于2.5Khz的信号基本滤去。由于滤波器的阶数较小,对于3Khz信号并没有完全滤除,这也是实

8、验预期之中的。对于信号2的复合信号,由频谱图比较可以发现,大于2.5Khz的信号基本被滤去。综上所述,本实验设计的FIR滤波器实现了截止频率为2.5Khz的低通滤波器的功能。实验二 IIR滤波器的设计1.实验目的和要求在上面设计了FIR滤波器的基础上,设计相同性能的IIR滤波器。2.实验原理IIR与FIR滤波器相比,相同性能水平的滤波器,IIR可以用较低的阶数实现,但是IIR滤波器是非线性的,且稳定性较差。IIR滤波器对FIR滤波器的前馈环节进行了扩展,增加了一个反馈环节。IIR滤波器的(L-1)阶前馈环节和(M-1)阶反馈环节的差分方程表示为:其中a与b为滤波器系数向量。对上式进行z变换可得

9、:Yz=Xzi=0L-1biz-i-Y(z)m=1M-1amz-m进而得到IIR滤波器的传递方程为:Hz=YzXz=i=0L-1biz-i1+m=1M-1amz-m因此IIR滤波器的设计需要求出其系数向量a和b。3.实验内容IIR滤波器的设计思路和内容与FIR的基本相同,这里不再叙述。这里使用与FIR滤波器一样的输入信号。一般情况下,相同性能的IIR滤波器阶数应低于FIR滤波器,这里为了方便,设计相同阶数的IIR滤波器。IIR滤波器系数向量用matlab的自带的滤波器设计工具箱设计得出。IIR滤波器对输入信号1和2滤波后的时域和频域图如图13和14所示。(a) 滤波后时域图(b) 滤波后频域图

10、图13 IIR滤波器对输入信号1的滤波结果(a) 滤波后时域图(b) 滤波后频域图图14 IIR滤波器对输入信号2的滤波结果4.实验结果通过观察IIR滤波结果图,与上面FIR比较,可以发现,实验中截止频率同为2.5Khz的IIR滤波器,对2Khz和3Khz频率的信号都有滤波现象。这是由于滤波器自身的幅频特性造成的。经过观察信号2的滤波结果可以看出,该滤波器也基本可以实现截止频率为2.5Khz的低通滤波器的功能。实验总结本次实验所设计的10阶FIR和IIR滤波器都可以很好的完成低通滤波效果,达到了实验预期的目的。通过FIR和IIR滤波器的设计,不仅让我了解到了数字滤波器的设计思路和设计方法,而且

11、通过比较了解了FIR和IIR滤波器各种的优点和缺点。通过实验让我对数字滤波器的知识有了进一步了解和认识,同时掌握了简单的滤波器实现算法和程序。由于之前没有较多接触过CCS和DSP实验板,此次实验在对CCS软件的使用、软件编程、仿真、连接实验板上花了大量的时间。通过在网上查资料并一点点学习和尝试才基本学会使用。由于对cmd文件的不了解,开始编译时总是报错,通过与同学一起讨论和在网上查询才知道解决办法。总得来说,实验让我学会了CCS软件和DSP实验板的基本使用方法。并在此基础上学会了简单的FIR和IIR滤波器的设计。收获颇多。附录(1) 输入信号生成程序(matlab程序)clc;clear al

12、l;close all;FS=8000;%y,FS,NBITS=wavread(C:UsersAdministratorDesktopMultiToneTest.wav);y,FS,NBITS=wavread(C:UsersAdministratorDesktopsc03.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(inp

13、ut.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 /待滤波的输入数据长度 #includeinput.h /输入数据文件long yn; int B11 = -64, 438, -530, -2519 , 8803, 20512,8803,-2519,-530,438,-64;/滤波器系数int inputLEN; /输入缓冲,在仿真时将从内存载入

14、 int outputLEN; /输出缓冲,直接存放在内存中 void main() int i,j; int *x; for(j=0;jLEN-1;j+) x=&inputj; yn = 0; for(i=0; i15; while(1); (3)IIR滤波器程序#include stdio.h #include input.h #define N 11 #define LEN 2048 int NUM10 = 69,691,3108,8289,14505,17406,14505,8289, 3108,691, 69;int DEN10 = 4096,10203,16248,16727,12645,6959,2837,828,166,20,1;long yn,yn1,yn2;int inputLEN;int inputYLEN;int outputLEN;void main() int i,j;int *x,*y;for(j=0;jLEN-1;j+) x=&inputj; y=&inputYj;for (i=0;i15; while(1);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com