收藏 分享(赏)

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

上传人:精品资料 文档编号:8019997 上传时间:2019-06-04 格式:DOC 页数:10 大小:2.39MB
下载 相关 举报
DSP实验报告——FIR和IIR滤波器设计.doc_第1页
第1页 / 共10页
DSP实验报告——FIR和IIR滤波器设计.doc_第2页
第2页 / 共10页
DSP实验报告——FIR和IIR滤波器设计.doc_第3页
第3页 / 共10页
DSP实验报告——FIR和IIR滤波器设计.doc_第4页
第4页 / 共10页
DSP实验报告——FIR和IIR滤波器设计.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

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

2、应,即)(nh)(nh)(nhd,其中 即为窗函数,窗长为 N。一般的 FIR 滤波器差分方程如下:)(d10()()nkyhxk进行 Z 变换得到 FIR 的系统函数为: 10)()(NnnzzHN 阶滤波器通常采用 N 个延迟单元、N 个加法器与 N+1 个乘法器组成。因此可以得到 FIR 滤波器的结构图如图 1 所示。图 1 FIR 滤波器直接结构图4.设计思路对于 FIR 滤波器的设计,其系数 是关键。由于 matlab 自带滤波器设计()hn工具箱和滤波器设计函数,故借用 matlab 工具,设计满足条件的滤波器并导出系数以备编写滤波器程序时使用。实验需要用到的输入数据是多正弦波合成

3、文件,对于输入信号的设计,这里也借助 matlab 编程生成 dat 文件。然后用 C 语言编写 FIR 滤波器的主程序,输入文件在程序运行后导入。5.实验内容(1)滤波器系数的设计由于实验只给出滤波器条件为 N=10, =2.5kHZ,并没有给出 和 ,所 以这里调用 matlab 工具箱函数 fir1 实现窗函数法设计滤波器。fir1 的调用格式为 ,返回值为 6dB 截止频率为 的 N=1( , ) 阶(单位脉冲响应 h(n)长度 =N+1)的 FIR 低通滤波器的系数向量( 为 标量) ,默认选用哈明窗。其中 为对 归一化的数字频率,其计算公式为 ,这里计算得出 =0.625。因为得到

4、的系数向量要用于 DSP 的 FIR 程=2 序中,需要对其进行进行转换并取整。最后系数结果如下图 2 所示。图 2 10 阶 FIR 滤波器系数对于 10 阶滤波器得到 11 个系数,将该系数保存,以备后面编写程序时使用。该滤波的幅频图和相频图分别对应图 3 和图 4。图 3 10 阶 FIR 滤波器幅频图图 4 10 阶 FIR 滤波器相频图(2)输入信号的生成根据老师给的两个.wav 语音文件,这里用 matlab 的 wavread 函数将其读进去,并编写程序查看其部分信号时域和频域图,并生成两个语音文件的.dat 文件,供作为 DSP 设计滤波器验证时所用的输入文件。两个语音信号部分

5、时域和频域图分别对应图 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 添加至

6、工程。同理,编写 FIR 滤波主程序并将其加入工程。最后将链接文件 fir.cmd加入工程。如图 7 所示。图 7 CCS3.3 程序窗口编译生成 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 数值来调整

7、显示框的结果。对应的显示结果如图 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 文件和编写的加入到工程中。将前面的程序文件分别加入工程中,进行编译。链接实验板和电脑。点击 de

8、bug-connect,连接测试板, file-load program,从工程文件下的 debug 文件夹中导入 fir.out 文件,再点击 debug-run 运行。6.实验结果从图 9-图 12 来看程序基本完成了对输入的合成信号的滤波。其中输入信号1 是由 1Khz、 2Khz、3Khz 合成的信号,而输入信号 2 是多种频率信号复合的信号。经过 FIR 滤波器滤波后,由输出的频域图可以看出,本滤波器将大于2.5Khz 的信号基本滤去。由于滤波器的阶数较小,对于 3Khz 信号并没有完全滤除,这也是实验预期之中的。对于信号 2 的复合信号,由频谱图比较可以发现,大于 2.5Khz 的

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

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

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

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

13、 FIR 和 IIR 滤波器的设计。收获颇多。附录(1) 输入信号生成程序(matlab 程序)clc;clear all;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

14、(1:1000);title(语言信号频域图);y=(y*32767);y=int16(y);fid=fopen(input.dat,w);for m=1:2048fprintf(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 B11 = -64, 438, -530, -2519 , 8803,

15、20512,8803,-2519,-530,438,-64;/滤波器系数int inputLEN; /输入缓冲,在仿真时将从内存载入 int outputLEN; /输出缓冲,直接存放在内存中 void main() int i,j; int *x; for(j=0;j15; 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;j15; while(1);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报