IIR数字滤波器设计 - 图文 联系客服

发布时间 : 星期四 文章IIR数字滤波器设计 - 图文更新完毕开始阅读fe0fad2cf021dd36a32d7375a417866fb84ac0ef

电子与信息工程学院 电子科学与技术专业 数字信号处理课程实验报告

实验名称: IIR数字滤波器设计

姓名: xxx 学号: 11111 实验日期:2017.12.18

一、实验目的

(1) 了解和熟悉ICETECK-DSP教学实验系统平台;

(2) 了解和熟悉DSP开发集成环境Code Composer Studio 3.3软件的设置和使用; (3) 了解IIR数字滤波器的特性和设计原理; (4) 掌握IIR数字滤波器的设计方法。 二、实验设备

(1) 通用PC机一台;操作系统为Windows2000或WindowsXP,安装TI的DSP开发集成环境Code Composer Studio 3.3软件,安装DSP通用仿真器驱动程序,安装实验程序SetupF5509A.exe。 (2) CETECK-DSP实验箱一台。 三、实验准备

(1) 了解无限冲激响应数字滤波器的基础理论; (2) 了解模拟滤波器的原理; (3) 了解数字滤波器系数的确定方法; (4) 根据要求设计低通 IIR 滤波器。 滤波器设计指标:

低通巴特沃斯滤波器在其通带边缘 1kHz处的增益为-3dB,12kHz处的阻带衰减为30dB,采样频率 25kHz。 滤波器设计:

确定待求通带边缘频率 fp1Hz、待求阻带边缘频率 fs1Hz 和待求阻带衰减-20logδsdB。 模拟边缘频率为:fp1=1000Hz,fs1=12000Hz 阻带边缘衰减为:-20logδs=30dB

用Ω=2πf/fs把由Hz表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1和Ωs1。

Ωp1=2πfp1/fs=2π1000/25000=0.08π弧度 Ωs1=2πfs1/fs=2π12000/25000=0.96π弧度

计算预扭曲模拟频率以避免双线性变换带来的失真。 由 ω=2fs tan(Ω/2)求得ωp1 和ωs1,单位为弧度/秒。

ωp1 =2fs tan(Ωp1/2)=6316.5 弧度/秒 ωs1=2fs tan(Ωs1/2)=794727.2 弧度/秒

由已给定的阻带衰减-20logδs 确定阻带边缘增益δs。 因为-20logδs=30,所以logδs=-30/20,δs=0.03162 计算所需滤波器的阶数:

电子与信息工程学院 电子科学与技术专业 数字信号处理课程实验报告

因此,一阶巴特沃斯滤波器就足以满足要求。

一阶模拟巴特沃斯滤波器的传输函数为:H(s)= ωp1 /(s+ωp1) =6316.5/(s+6316.5)

由双线性变换定义 s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:

因此,差分方程为:y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]。 四、实验内容和步骤(初步骤5外,其余步骤与FIR实验一致) (1)设置CCS (2)启动CCS (3)打开工程文件 (4)编译并下载程序 (5)打开观察窗口

选择菜单View->Graph->Time/Frequency...进行相应设置。如图2-4所示:

图2-4 参数设置

选择菜单View->Graph->Time/Frequency...进行相应设置。如图2-5所示:

电子与信息工程学院 电子科学与技术专业 数字信号处理课程实验报告

图2-5 参数设置

(6)清除显示 (7)设置断点 (8)运行并观察结果 (9)退出CCS 2. 硬件仿真Emulator (1)设置CCS (2)启动 CCS

(3)余下步骤重复软件仿真(3)(4)(5)(6)(7)(8)(9) 五、实验结果 1. IIR软件仿真

电子与信息工程学院 电子科学与技术专业 数字信号处理课程实验报告 2. IIR硬件仿真

六、实验心得与结果分析

本次实验采用双线性Z变换实现IIR低通滤波器。本实验首先用一阶巴特沃斯低通滤波器模型设计低通模拟滤波器,再用双线性Z变换的方法,将模拟滤波器转换为数字滤波器,得到IIR滤波器的差分方程描述。

在实验结果中可以看出,时域上输出信号明显比输入信号平滑,说明低通滤波的目的已经达到。从频域上可以看出。输出信号的高频部分有明显的衰减,而低频部分没有较大的衰减,实现了低通滤波。 七、实验代码及注释 #include\

#define IIRNUMBER 2 #define SIGNAL1F 1000 #define SIGNAL2F 4500 #define SAMPLEF 10000 #define PI 3.1415926

float InputWave();//该函数用以产生含噪声的输入波形 float IIR();//该函数用以做IIR并得到输出结果

float fBn[IIRNUMBER]={ 0.0,0.7757 };//传递函数分母部分参数 float fAn[IIRNUMBER]={ 0.1122,0.1122 };//传递函数分子部分参数 float fXn[IIRNUMBER]={ 0.0 };