微智科技网
您的当前位置:首页FIR滤波器实验

FIR滤波器实验

来源:微智科技网
FIR滤波器实验

(一) 实验目的

熟悉数字滤波的基本原理和实现方法; 熟悉线性相位FIR数字滤波器特性;

通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。 (二)实验原理

FIR 滤波器算法的函数表达式:

short oflag = fir (DATA *x, DATA *h, DATA *r, DATA **dbuffer,ushort nh, ushort nx)

参数

(定义于 fir.asm)

x[nx] h[nh] r[nx] Dbuffer[nh] Nx Nh Oflag 指向输入向量,长度为 nx 指向系数向量,长度为 nx 例如:若 nh=3: 则:H = b0, b1, b2。  内存对齐:这是一个环行缓冲区,必须起始于k位边界上(就是说起始地址的k个LSB位必须为0)。其中k为大于log2(nh)的整数,具体解释见TMS320C54X DSP Reference Set 第5-15页5.5.3.4小节。 指向输出向量,长度为 nx 延迟缓冲区  在多重缓冲区方法中,该向量在进行第一次块操作时应该初始化为0;在后面的块操作中,延迟缓冲区保存着计算r所必须的输入值。  内存对齐:与h向量一致。 输入向量的长度 系数向量的长度 溢出标志  若 oflag = 1, 则运算中产生32位溢出  若 oflag = 0, 运算中未产生32位溢出 说明

使用系数向量h,计算实数的FIR滤波。输入数据存于向量x中。该例程使用一个缓冲内存d,来保存前一次的输入值。可以进行块滤波操作,或者单个数据滤波(nx=1)。 算法

nhr[j] =

h[k]x[jk]

k0 0 <=j <=nx

(三)实验步骤

(1) 用MATLAB设计软件设计出FIR数据文件,可采用随机光盘里WAVE文件夹中的数据文件。

(2)启动CCS,编写实验程序代码(可参考随机光盘中的alldsp4\\Simulator\\ hpassfir例程),进行编译并加载到DSP中。

(3)采用单步运行或执行到光标处,或全速运行,并打开波形观察窗口,跟踪观察其执行过程和滤波效果。

此处举例介绍随机光盘里的例程低通滤波器的程序运行,以及如何观察滤波效果:

①先打开项目,然后编译、加载实验程序,然后点击菜单debug—Go main就进入实验程序test.c(如图一)。

图 一 程序

②然后我们打开波形观察窗口,路径是View—Graph—Time/Frequence,将出现如下图二所示的图形属性框,因为本程序编写的是输入向量放在x中,而滤波后的输出向量放在r中,因此图形属性框应选择:在Display Type一栏中选择 Dual Time 项;Interleaved Data Sources一栏中选择No项; Start Address-upper display一栏中输入x,

Start Address-upper display 一栏中输入r; Acquistition Buffer Size 一栏中输入256;Display Data Size 一栏中输入256;DSP Data Type一栏中选择16-bit signed integer项;其他为默认值,然后点击“OK”就可打开图形观察窗口如图三。

图二 图形属性窗口

图三 输入数据波形

③ 输入数据文件,路径是File—Data—Load,将WAVE文件夹的“fwave1k+500.dat数据文件载入,如图四所示设置。然后就会出现如图三所示的输入波形窗口。

图四 加载数据设置

④运行程序,就可观察到输入数据经过FIR滤波后的效果,如图五所示。至此就可观察信号经过FIR滤波后的信号的改变。

图五 FIR 滤波后的输出数据

具体实验程序请参考:随机光盘里的lpassfir文件夹。

(六) 实验思考

根据上述低通FIR滤波器的设计方法设计出高通FIR滤波

实验十一 IIR滤波器实验

(一)实验目的

熟悉设计IIR数字滤波器的原理与方法; 掌握数字滤波器的计算机仿真方法;

通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。 (二)实验设备

计算机;DSP硬件仿真器;SZ-DSPD实验开发系统。 (三)实验硬件设置

在做实验之前,需要接通该实验所需的硬件电路,本实验为:先将实验箱右侧的船型开关往“I”方向打开电源,然后将系统主板左上角红色按钮按下接通+/-5V电源;SZ-5416D主控模块上的J7,J9短接;然后开始做实验,注意在做DSP实验时开始按SZ-5416D主控模块上的K1硬件复位后,实验中不要再按复位键,以免实验由于DSP复位而失败。 (四)实验原理

IIR滤波器的函数表达式:

short oflag = iirlat (DATA *x, DATA *h, DATA *r, DATA **d, int nh, int nx) 参数 (定义于iirlat.asm)

x [nx] h[nh] 指向长度为nx的输入向量。 指向lattice滤波系数向量,格式如下: h = b0, b1, b2, b3…  内存对齐:这是一个环行缓冲区,必须起始于k位边界上(就是说起始地址的k个LSB位必须为0)。其中k为大于log2(nh)的整数,具体解释见TMS320C54X DSP Reference Set 第5-15页5.5.3.4小节。 r[nx] 指向实数输出向量。(r 可以等于 x) d[nh] 指向延迟缓冲区。  在多重缓冲区方法中,该向量在进行第一次块操作时应该初始化为0;在后面的块操作中,延迟缓冲区保存着计算r所必须的输入值。  内存对齐:这是一个环行缓冲区,必须起始于k位边界上(就是说起始地址的k个LSB位必须为0)。其中k为大于log2(nh)的整数,具体解释见TMS320C54X DSP Reference Set 第5-15页5.5.3.4小节。 nx 输入输出向量长度 nh oflag 系数向量长度 溢出标志  若 oflag = 1, 则运算中产生32位溢出  若 oflag = 0, 运算中未产生32位溢出 说明

使用储存于向量h中的系数计算实IIR lattice滤波。输入数据存于向量x中,输出存于向量r中。该例程的延迟缓冲单元保存着继续进行操作所必须的数据,可以进行块滤波操作,也可以进行单个数据滤波(nx=1)。 算法

eN[n] = x[n]

ei-1[n] = ei[n] + hie’i-1[n-1], e’i[n] = -kie i-1 [n] + e’i-1[n-1], y[n] = e0[n] = e’0[n]

(五)实验步骤

(1)启动CCS,编写实验程序代码(可参考随机光盘中的alldsp4\\Simulator\\iirlat例程),进行编译并加载到DSP中。

(2)全速运行,并打开波形观察窗口,跟踪观察其执行过程和滤波效果。 此处举例介绍随机光盘里的例程LATTICE IIR滤波器的程序运行,以及如何观察滤波效果:

①先打开项目,然后编译、加载实验程序. ②全速运行实验程序,然后我们打开波形观察窗口,路径是View—Graph—Time/Frequence,将出现如下图一所示的图形属性框,因为本程序编写的是输入量放在0x2000中,而滤波后的输出向量放在地址0x100中,因此图形属性框显示输入数据波形是应选择如图二所示,当观察滤波后的波形是只需在图一的基础上在Start Address一栏中输入0x100,然后点击“OK”就可打开图形观察窗口如图二。

同样为了更直观的观察其滤波效果,可以观察信号的频谱图。方法是如打开波形观察窗口一样只需在图一所示的Display Type一栏中选择FFT Magnitude,然后在signal type一栏中选择real即可,得出的频谱图如图三所示,同样输出数据的波形也只需再修改一下地址0x100即可。

i = N, (N-1), …., 1 i = N, (N-1), …., 1

图一 图形属性窗口

图二 输入数据波形

图三 输入数据的FFT频谱图

四 输出数据波形

图五 输出数据的FFT频谱图

具体实验程序请参考:随机光盘里的文件夹。

(六) 实验思考

根据上述低通IIR滤波器的设计方法设计使用5个参数的IIR滤波器。

因篇幅问题不能全部显示,请点此查看更多更全内容