4-6 无限冲激响应滤波器(IIR)算法(MATLAB辅助,LCD显示)
实验目的
- 本次教程是基于 创龙教仪DSP教学实验箱 :TL6748-PlusTEB完成的
- 本节视频的目的是了解IIR滤波器的特点,掌握Matlab辅助设计滤波器系数的方法,并实现IIR滤波器滤除高频信号,并在LCD上显示结果。
实验原理
IIR无限冲激响应数字滤波器(infinite impulse response digital filter)是对单位冲激的输入信号的响应为无限长序列的数字滤波器。可分为一维、二维或多维无限冲激响应数字滤波器。它的输出y(n)由当前的和过去的输入信号x(n)及过去的输出信号共同决定。IIR的幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上。
对于IIR滤波器,冲激响应理论上应会无限持续,其输出不仅取决于当前和过去的输入信号值,也取决于过去的信号输出值。其系统函数如下:
IIR滤波器的一种结构和差分方程可见图示,由IIR的系统函数出发,可视作两个系统的级联,并且合并了公共的延时支路。
无限冲激响应数字滤波器具有以下特性:
(1)系统函数可以写成封闭函数的形式。
(2)采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。
(3)在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。
(4)相位特性不好控制,对相位要求较高时,需加相位校准网络。
MATLAB FIR 滤波器辅助设计,生成滤波器系数:
打开 Matlab 软件,并打开"Filter Designed&Analaysis Tool"工具,在弹出的界面中按照所需滤波器修改以下参数:
(1)滤波器类型:低通Lowpass;
(2)滤波方式:巴特沃斯IIR(Butterworth);
(3)滤波器阶数:Specify order(4+1阶);
(4)采样频率:1000Hz;
(5)通带截止频率:150Hz;
在CCS5.5 的安装路径安装DSPLIB后,会有相应的文件夹出现,包含组件库、头文件、测试示例和源码等。
程序使用 DSPLIB 的库来进行IIR滤波,调用的程序源码和使用说明可以安装DSPLIB后查看。调用的IIR滤波函数中,
第一个参数是延迟元素值。
第二个参数是指向输入数组的指针。
第三个参数是指向输出数组的指针。
第四个参数是自回归滤波器系数。
第五个参数是动态平均滤波器系数。
第六个参数是输出样本数。
程序使用 DSPLIB 的库来进行FFT运算,调用的程序源码和使用说明可以安装DSPLIB后查看。调用的FFT函数中,
第一个参数是样本中 FFT 的长度,
第二个参数是指向数据输入的指针。
第三个参数是指向复杂旋转因子的指针。
第四个参数是指向复杂输出数据的指针。
第五个参数是指向包含 64 个条目的位反转表的指针。如果样本的FFT长度可以表示为 4 的幂,
第六个参数是4,否则第六个参数是2 。
第七个参数是从主FFT开始的样本中的子 FFT偏移索引 。
第八个参数是样本中主FFT的大小。
程序使用 DSPLIB 的库来进行FFT逆变换,调用的程序源码和使用说明可以安装DSPLIB后查看。调用的IFFT函数中,
第一个参数是样本中 FFT 的长度。
第二个参数是指向数据输入的指针。
第三个参数是指向复杂旋转因子的指针。
第四个参数是指向复杂输出数据的指针。
第五个参数是指向包含 64 个条目的位反转表的指针 。如果样本的FFT长度可以表示为 4 的幂,
第六个参数是4,否则第六个参数是 2 。
第七个参数是从主FFT开始的复杂样本中的子FFT偏移索引 。
第八个参数是样本中主FFT的大小。
操作现象
硬件设备:
本实验使用的硬件接口为LCD,所需硬件为实验板、仿真器、LCD和电源。
实验操作:
- 导入工程,选择Demo文件夹下的对应工程
- 编译工程,生成可执行文件
- 将CCS连接实验箱并加载程序
- 程序加载完成后点击运行程序
- 运行程序后,LCD会显示IIR滤波前后的时域波形,上方为100Hz信号与450Hz噪声组成的混合信号,下方为滤波后得到的结果(保留100Hz信号)。
- 点击一下LCD屏幕,会切换频域波形,上方显示原始频域信号+噪声,下方显示滤波后的频域波形,输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成,通过观察频域图可知输入波形中的低频波形通过了滤波器,而高频部分被滤除。