有限冲激响应滤波器(FIR)实验指导书
实验二 有限冲击响应滤波器(FIR )算法实验
一.实验目的
1、 掌握用窗函数法设计 FIR 数字滤波器的原理和方法。
2、 熟悉线性相位 FIR 数字滤波器特性。
3、 了解各种窗函数对滤波器特性的影响。
二.实验设备
PC 兼容机一台,操作系统为 Windows2000(或 Windows98,WindowsXP ,以下默认为Windows2000) ,安装 Code Composer Studio 3.3软件。
三. 实验原理
1、 有限冲激响应数字滤波器的基础理论(请参考相关书籍)。
2、 模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
3、 数字滤波器系数的确定方法。
4、 根据要求设计低通 FIR 滤波器。 2πn 1) +cos(0.1π+2.8n π) 输入信号为:x (n ) =sin( (1) 306
要求:通带截止频率10kHz ,阻带起始频率22kHz ,阻带衰减70dB ,采样频率f s =50kHz 。
设计: -过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12kHz
理想低通滤波器截止频率=通带截止频率+阻带起始频率 2
即: f 1=10+22=16kHz 2
ω1=2πf 1/f s =2π⨯16/50=0.64π
-理想低通滤波器脉冲响应: (2)
h 1(n ) =sin(n ω1) /n π=sin(0.64n π) /n π
-根据要求阻带衰减为70dB ,小于布莱克曼窗(Blackman )的阻带最小衰减74dB ,选择布莱克曼窗;
-窗函数长度由过渡带带宽指标确定,布莱克曼窗的近似过渡带为:12π/N , 12由12π/N ≤⨯2π,计算可得N ≥25; 50
-选择 N =25,滤波器阶数为24,窗函数为:
w (n ) =0.42-0.5cos(2πn /24) +0.08cos(4πn /24)
(3)
-滤波器脉冲响应为:
⎧h (n ) w (n ) h (n ) =⎨1
⎩0|n |≤12|n |>12 (4)
-根据上面计算,各式计算出h(n),然后将脉冲响应值移位为因果序列。 -完成的滤波器的差分方程为:
y (n ) =-0.001x (n -2) -0.002x (n -3) -0.002x (n -4)
+0.01x (n -5) -0.009x (n -6) -0.018x (n -7)
-0.049x (n -8) -0.02x (n -9) +0.11x (n -10)
+0.28x (n -11) +0.64x (n -12) +0.28x (n -13)
-0.11x (n -14) -0.02x (n -15) +0.049x (n -16)
-0.018x (n -17) -0. 009x (n -18) +0.01x (n -19)
-0.002x (n -20) -0.002x (n -21) +0.001x (n -22) (5)
5、 程序流程图:
图a 代表整个实验的流程,首先初始化工作量,然后输入待处理的信号,调用滤波器程序进行滤波,计算输出信号。其中输入信号的产生流程如图b 所示,FIR 滤波器的工作流程如图c 所示。
图1 程序流程图
四.实验示例与步骤
4.1 实验准备
1、 连接设备:连接各种电源、USB 线等。
2、 硬件连接。
(1) 取出电源线连接实验箱和电源。
(2) 取出1根USB 线连接实验箱上仿真器模块和电脑的USB 接口。
硬件连接。
3、 启动 Code Composer Studio 3.1:
(1) 双击桌面上图标CCStudio v3.3
(2) 选择“Debug→Connect”连接仿真器。
4.2 打开示例工程并运行程序
1、 打开e:\DSPexperiment\ FIR 目录下FIR.pjt 工程文件,其中主程序FIR.c
中滤波器系数fHn[FIRNUMBER]是通过参考上述公式(1)进行确定。该示例中输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成
2、 设置断点:在有注释“break point”的语句设置软件断点。
3、 编译该示例工程并下载程序。
(1) 选择菜单“Project”的“Rebuild All”项,或单击工具条中按钮,
注意编译程中 CCS 主窗口下部的“Build”提示窗中显示编译信
息,最后将给出错误和警告的统计数。
(2) 选择“File”菜单的“Load program...”,在弹出的窗口中选择FIR 文
件下Debug 文件中“FIR.out”文件,单击打开,程序下载到开发
板。
(3) 选择“Debug”菜单的“Animate”项,或按 Alt+F5 键运行程序。
(4) 按以下操作打开时域与频域图形,观察滤波效果。
*选择菜单View->Graph->Time/Frequency…,进行如下设置:
如上图所示,Graph Title 为图形的标题,修改为Input ,表示输
入波形图;Start Address为输入数据起始地址,修改为&fInput;
Acquisition Buffer Size为输入数据个数,修改为1;Display Data
Size 为显示数据个数,修改为128;DSP Data Type为数据类型,
修改为32位浮点型。
*选择菜单 View->Graph->Time/Frequency…,进行如下设置:
修改部分如图所示,Graph Title为图形的标题,修改为Output ,
表示输出波形图;Start Address
为输出数据起始地址,修改为
&fOutput。其余同上。
*选择菜单 View->Graph->Time/Frequency…,进行如下设置:
如上图所示,Graph Title为图形的标题,修改为输入波形FFT ,
表示输入信号的频域图;Start Address为输入数据起始地址,修
改为&fInput;Acquisition Buffer Size为输入数据个数,修改为1;
Display Data Size为显示数据个数,修改为128;DSP Data Type
为数据类型,修改为32位浮点型。
*选择菜单 View->Graph->Time/Frequency…,进行如下设置:
如上图所示,Graph Title为图形的标题,修改为滤波后波形FFT ,
表示滤波后的信号的频域图;Start Address为滤波后的数据起始
地址,修改为&fOutput;其余设置同上。
4、 结果显示如下:
图2 输入信号的时域与频域波形
图3 输出信号的时域与频域波形
通过观察图2和图3中时域和频域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则大部分被滤除。
4、 退出 CCS 。
五.实验要求
根据下列要求设计一个低通滤波器滤除式(6)中高频余弦波:
修改FIR.c 文件中fXn[ ]数组,将输入波形设置为
2πn 1) +cos(0.1π+3.2n π) (6) x (n ) =sin(326
要求:通带截止频率5kHz ,阻带起始频率20kHz ,阻带衰减70dB ,采样频率f s =50KHz 。
参考实验原理的步骤,求出低通滤波器的单位脉冲响应,用它来修改FIR.c 文件中fHn[FIRNUMBER]数值,然后参照实验示例的步骤编译、下载程序,观察结果,得出结论。
六.问题与思考
试选用合适的高通滤波参数滤掉实验的输入波形中的低频信号。