FIR 数字滤波器的 MATLAB 设计与 DSP 实现
摘要
:
针对有限长冲激响应(FIR)数字滤波器的原理,讨论了窗½数法设计线性相
½ FIR 数字滤波器的基本思路,介绍了用 MATLAB 工具来设计数字滤波器的方法及
在定点 DSP 上的实现。
通过 CCS5000 开发工具和在 DES3200 实验箱上运行,实现了达到目标要求的滤波
器。
关键词
:
matlab;fir;dsp;ccs 开发环境
1、引言
随着信息和数字技术的发展,数字信号处理已成为½今极其重要的学科和技
术领域之一通信语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电
器等众多领域得到了广泛的应用。在数字信号处理的基本方法中,通常会涉及到
变换、滤波、频谱分析、调制解调和编码解码等处理。其中,滤波是应用非常广
泛的一个环节,数字滤波器的理论与相关设计也一直½是人们研究的重点之一。
数字滤波器根据其冲激响应½数的时域特性,可分为无限长冲激响应(IIR)滤波
器和有限长冲激响应(FIR)滤波器。
其中 FIR 滤波器具有严格的相½特性,同时系
统½数的极点固定在原点上,因而该类型的滤波器是稳定的。滤波器的设计方法
主要有窗½数法、
频率取样法和最优线性相½设计法。其中窗½数设计方法由于
其运算简便、物理意义直观,已成为工程实际中应用最广泛的方法,本文从 FIR
数字滤波器的原理与基本设计步骤出发,对 FIR 数字滤波器在 MATLAB 中的仿真与
设计的基本思路做了阐述,并在定点 DSP 上实现了满足要求的 FIR 滤波器。
1
目
½
1、滤波器基本原理
....................................................................................................................
3
1.1 数字滤波器的基本概念
....................................................................................................
3
1.2 FIR 滤波器的基本结构
.....................................................................................................
3
1.3 FIR 滤波器的主要特点
.....................................................................................................
4
1.4 开发环境 CCS 简介
.............................................................................................................
4
2、数字滤波器的设计
................................................................................................................
6
2.1 数字滤波器 MATLAB 设计的基本步骤
...............................................................................
6
2.2 FIR 数字滤波器的 DSP 实现
.............................................................................................
8
2.3 结论
.....................................................................................................................................
9
3.心得½会
..............................................................................................................................
10
4.附½
......................................................................................................................................
10
参考文献
....................................................................................................................................
16
2
1、滤波器基本原理
1.1 数字滤波器的基本概念
数字滤波器的设计问题就是寻找一组系数 和,½得其性½在某种意义上逼
近所要求的特性。如果在 s 平面上去逼近,就得到模拟滤波器,如果在 z 平面上
去逼近,则得到数字滤波器。
数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的
输出序列。
一个线性½移不变系统的输出序列
y
(
n
)和输入序列
x
(
n
)之间的关系,
应满足常系数线性差分方程:
其中 x
(
n
)为输入序列,
y
(
n
)为输出序列, 和为滤波器系数,
N
为滤波器的阶数。
1.2 FIR 滤波器的基本结构
在式(1)中,若所有的均为 0,则得 FIR 滤波器的差分方程:
对(2)式是 滤波器的差分方程,其一般½式为
对(3)式进行 变换,整理后可得 FIR 滤波器的传递½数
FIR 数字滤波器的设计方法主要有窗½数法和频率½样设计法,其中窗½数
法是基本而有效的计方法。
由此可得到 FIR 滤波器的结构如图 1 所示。
FIR 滤波器的单½冲击响应 h(n)是一个有限长序列。若 h(n)为实数,且满足
偶对称或奇对称的条件,即 h(n)=h(N-1-n)或 h(n)=-h(N-1-n),则 FIR 滤波器具
有线性相½特性。
3
1.3、FIR 滤波器的主要特点
1)单½冲击响应只有有限项;
2)FIR 滤波器无反馈回路,是一种无条件稳定系统;
3)FIR 滤波器可以设计成具有线性相½特性。
1.4、开发环境 CCS 简介
CCS 是 TI 公 司 推 出 的 为 开 发 TMS320 系列 DSP ½件的集成开发环境
(IDE)。CCS 工½在 Windows 操½系统下类似于 vc++的集成开发环境采用图½接
口界面提供编辑工具和工程管理工具的½件。CCS 开发流程图如图所示
应用设计
编写代码
调试
图
2
开发流程
分析与调整
对于 CCS 的½用先应建立工程文件*.mak 根据需要添加 C 语言源程序*.c 汇
编源程序*.asm 链配½件文件*.cmd 等可½需要的文件完成整个工程的建立然后
对源文件编辑修改后进行汇编连接以生成目标文件*.out。对源文件每½一次修
改½必须全部重新建立生成新的目标文件*.out 接下来就可用 CCS 调试先让系统
复½再½½入*.out。调试的方式是多种多样的有单步执行多步执行单步跳出单步
进入等还有断点 设½和探测点设½
在 CCS 环境下实现 FIR 滤波器的程序框图如图所示
产生输入数据
初始化
DSP
读入数据并存放到栈顶
滤波处理
保存滤波结果到输出单元
待滤波的样本点数
(256 点)处理完成?
4
否
是
图
3
用循环寻址的方法
FIR
实现滤波器的程序框图
从图 3 可知 FIR 滤波器 DS 实现包括 4 个部分:模拟输入数据的生成 DSP 初
始化程序滤波系数以及输入数据的调入及滤波子程序其中模拟输入数据的生成
可利用 C 语言编程实现 用.COPY 汇编½令将生成的数据文件拷贝到汇编程序中
½为 FIR 滤波器的输入数据文中 C 语 言程序运行后所生成的数据文件名为初始
化程序包括了对堆栈指针(SP)½件等待状态寄存器(SWWSR)中断寄存器(IFR)中
断屏½寄存器(IMR)以及处理器工½状态寄存器(PMST)的初始 化另外还对各变
量赋值由于滤波器系数一开始是存在程序存储器中输入数据则是存在程序外的
文件中程序对这两组数据进行处理时需要把两者½调到数据存储器中这是滤波
系数以及输入数据的调入部分的任务滤波子程序重复执行的次数一般等同于输
入序列的长度实现对数据的读入处理输出等功½。
2、数字滤波器的设计
2.1 数字滤波器 matlab 设计的基本步骤
(1)确定指标
在设计一个滤波器之前,必须首先根据工程实际需要确定滤波器的技术指标。
在很多实际应用中,数字滤波器常常被用来实现选频操½。
因此,指标的½式一般
在频域中给出幅度响应和相½响应。幅度指标主要以两种方式给出。第一是绝对
指标,它提供对幅度响应½数的要求,一般应用于 FIR 滤波器的设计。
第二种指标
是相对指标。
它以分贝值的½式给出要求,在工程实际中,比较受到欢迎。对于相
½响应指标½式,通常希望系统在通频带中仍然有线性相½。运用线性相½响应
的指标进行滤波器设计具有如下优点①只包含实数算法,不涉及复数运算②不存
在延迟失真,只有固定数量的延迟 ③长度为 N 的滤波器(阶数为 N-1),计算量为
5
评论