范文一:FIR滤波器基本结构
------------------------------------------------------------------------------------------------
FIR滤波器基本结构
FIR滤波器有以下几种基本结构:
横截型
(7.10)式的系统的差分方程表达式为
y(n)=?h(m)x(n-m) ( 7.11)
很明显,这就是线性移不变系统的卷积和公式,也是x (n)的延时链的横向结构,如图4-11所示,称为横截型结构或卷积型结构,也可称为直接型结构。将转置定理用于图4-11,可得到图4-12的转置直接型结构。
图7.11 FIR滤波器的横截型结构
级联型
将H (z)分解成实系数二阶因子的乘积形式
(7.12)
其中[N/2]表示取N/2的整数部分。若N为偶数,则N—1为奇数,故系数B2K中有一个为零,这是因为,这时有奇数个根,其中复数根成共轭对必为偶数,必然有奇数个实根。图7-13画出N为奇数时,FIR滤波器的级联结构,其中每一个二阶因子用图4-11的横型结构。
这种结构的每一节控制一对零点,因而再需要控制传输零点时,可以采用它。但是这种结构所需要的系数B2k(I = 0,1,2,k,= 1,2,(((,[N/2])比卷积型的系数h (n)要多,因而所需的乘法次数也比卷积型的要多。
——————————————————————————————————————
------------------------------------------------------------------------------------------------
图9.13 FIR滤波器的级联型结构
频率抽样
在第三章中已说过,把一个有限长序列(长度为N点)的z变换H (z)在单位圆上作N等分抽样,就得到H (k),其主值序列就等于h (n)的离散傅里叶变换H (k)。那里也说到用H (k)表示的H (z)的内插公式为
(7.13)
这个公式就为FIR滤波器提供了另外一种结构,这种结构由两部分级联组成。 (7.14)
其中级联的第一部分为
(7.15)
这是一个FIR子系统,是由N节延时单元构成的梳状滤波器,令
则有
即Hc (z)在单位圆上有N个等间隔角度的零点,它的频率响应为
(7.16)
因而幅度响应为
幅角为
其子网络结构及频率响应幅度见图7.14。
级联的第二部分为
它是由N个一阶网络并联组成,而这每一个一阶网络都是一个谐振器
(7.17)
——————————————————————————————————————
------------------------------------------------------------------------------------------------
令H'k(z)的分母为零,即令
可得到此一阶网络在单位圆上有一个极点
图7.14 梳状滤波器结构及频率响应幅度
图7.15 FIR滤波器的频率抽样型结构
也就是说:此一阶网络在频率为
处响应为无穷大,故等效于谐振频率为2πk / N的无损耗谐振器。这个谐振器的极点正好与梳状滤波器的一个零点(I = k)相抵消,从而使这个频率(ω= 2πk / N)上的频率响应等于H (k)。这样,N个谐振器的N个极点就和梳状滤波器的N个零点相互抵消,从而在N个频率抽样点上(ω= 2πk / N,k = 0,1,(((,N —1)的频率响应就分别等于N个H (k)值。
N个并联谐振器与梳状滤波器级联后,就得到图7.15的频率抽样结构。
频率抽样结构的特点是它的系数H (k)就是滤波器在ω= 2πk / N处的响应,因此控制滤波器的频率响应很方便。但是结构中所乘的系数H (k)及WN都是复数,增加了乘法次数和存储量,而且所有极点都在单位圆上,由系数WN决定,这样,当系数量化时,这些极点会移动,有些极点就不能被梳状滤波器的零点所抵消(零点由延时单元决定,不受量化的影响)。系统就不稳定了。
为了克服系数量化后可能不稳定的缺点,可以将频率抽样结构做一点修正,即将所有零、极点都移到单位圆内某一靠近单位圆、半径为r (r小于或近似等于1)的圆上(r为正实数)。
——————————————————————————————————————
------------------------------------------------------------------------------------------------
快速卷积
前一章谈到,只要将两个有限长序列补上一定的零值点,就可以用圆周卷积来代替两序列的线性卷积。由于时域的圆周卷积,等效到频域则为离散傅立叶变换的乘积。因而,如果
即将输入x (n)补上L—N1个零值点,将有限长单位冲激响应h (n)补上L—N2个零值点,只要满足L >= N1 + N2—1,则L点的圆周卷积就能代表线性卷积,即
用DFT表示,则有
Y(k) =X(k)H(k)
因而有
其中
Y(k) = DFT[y (n)],L点
X(k) = DFT[x(n)],L点
H(k) = DFT[h (n)],L点
这样,我们就可得到图7.16的快速卷积结构,当N1,N2足够长时,它比直接计算线性卷积要快得多。这里计算DFY和IDFT都采用快速傅立叶变换计算方法。
——————————————————————————————————————
范文二:FIR滤波器基本结构
FIR滤波器基本结构
FIR滤波器有以下几种基本结构:
横截型
(7.10)式的系统的差分方程表达式为
y(n)=?h(m)x(n-m) ( 7.11)
很明显,这就是线性移不变系统的卷积和公式,也是x (n)的延时链的横向结构,如图4-11所示,称为横截型结构或卷积型结构,也可称为直接型结构。将转置定理用于图4-11,可得到图4-12的转置直接型结构。
图7.11 FIR滤波器的横截型结构
级联型
将H (z)分解成实系数二阶因子的乘积形式
(7.12)
其中[N/2]表示取N/2的整数部分。若N为偶数,则N—1为奇数,故系数B2K中有一个为零,这是因为,这时有奇数个根,其中复数根成共轭对必为偶数,必然有奇数个实根。图7-13画出N为奇数时,FIR滤波器的级联结构,其中每一个二阶因子用图4-11的横型结构。
这种结构的每一节控制一对零点,因而再需要控制传输零点时,可以采用它。但是这种结构所需要的系数B2k(I = 0,1,2,k,= 1,2,(((,[N/2])比卷积型的系数h (n)要多,因而所需的乘法次数也比卷积型的要多。
图9.13 FIR滤波器的级联型结构
频率抽样
在第三章中已说过,把一个有限长序列(长度为N点)的z变换H (z)在单位圆上作N等分抽样,就得到H (k),其主值序列就等于h (n)的离散傅里叶变换H (k)。那里也说到用H (k)表示的H (z)的内插公式为
(7.13)
这个公式就为FIR滤波器提供了另外一种结构,这种结构由两部分级联组成。
(7.14)
其中级联的第一部分为
(7.15)
这是一个FIR子系统,是由N节延时单元构成的梳状滤波器,令
则有
即Hc (z)在单位圆上有N个等间隔角度的零点,它的频率响应为
(7.16)
因而幅度响应为
幅角为
其子网络结构及频率响应幅度见图7.14。
级联的第二部分为
它是由N个一阶网络并联组成,而这每一个一阶网络都是一个谐振器
(7.17)
令H'k(z)的分母为零,即令
可得到此一阶网络在单位圆上有一个极点
图7.14 梳状滤波器结构及频率响应幅度
图7.15 FIR滤波器的频率抽样型结构
也就是说:此一阶网络在频率为
处响应为无穷大,故等效于谐振频率为2πk / N的无损耗谐振器。这个谐振器的极点正好与梳状滤波器的一个零点(I = k)相抵消,从而使这个频率(ω= 2πk / N)上的频率响应等于H (k)。这样,N个谐振器的N个极点就和梳状滤波器的N个零点相互抵消,从而在N个频率抽样点上(ω= 2πk / N,k = 0,1,(((,N —1)的频率响应就分别等于N个H (k)值。
N个并联谐振器与梳状滤波器级联后,就得到图7.15的频率抽样结构。
频率抽样结构的特点是它的系数H (k)就是滤波器在ω= 2πk / N处的响应,因此控制滤波器的频率响应很方便。但是结构中所乘的系数H (k)及WN都是复数,增加了乘法次数和存储量,而且所有极点都在单位圆上,由系数WN决定,这样,当系数量化时,这些极点会移动,有些极点就不能被梳状滤波器的零点所抵消(零点由延时单元决定,不受量化的影响)。系统就不稳定了。
为了克服系数量化后可能不稳定的缺点,可以将频率抽样结构做一点修正,即将所有零、极点都移到单位圆内某一靠近单位圆、半径为r (r小于或近似等于1)的圆上(r为正实数)。
快速卷积
前一章谈到,只要将两个有限长序列补上一定的零值点,就可以用圆周卷积来代替两序列的线性卷积。由于时域的圆周卷积,等效到频域则为离散傅立叶变换的乘积。因而,如果
即将输入x (n)补上L—N1个零值点,将有限长单位冲激响应h (n)补上L—N2个零值点,只要满足L >= N1 + N2—1,则L点的圆周卷积就能代表线性卷积,即
用DFT表示,则有
Y(k) =X(k)H(k)
因而有
其中
Y(k) = DFT[y (n)],L点
X(k) = DFT[x(n)],L点
H(k) = DFT[h (n)],L点
这样,我们就可得到图7.16的快速卷积结构,当N1,N2足够长时,它比直接计算线
性卷积要快得多。这里计算DFY和IDFT都采用快速傅立叶变换计算方法。
范文三:基于matlab的fir数字滤波器
基于 matlab 的 fir 数字滤波器
sea
摘 要 :介绍了应用 Matlab 语言设计 FIR 数字滤波器时采用直接程序设计法。 同时介绍了 FIR 数字滤波器几种设计方法的函数调用格式; 通过实例, 给出了程序设计法的详细步骤, 并在 Matlab 的 Simulink 环境下,对所设计的滤波器进行了仿真。
关键词:数字滤波器; Matlab
引言
1. MATLAB的特点
MATLAB(Matrix Laboratory)机矩阵 实验室是由美国 MathWorks 公司推出的一 款集数值分析、矩阵计算、信号处理和图 形显示于一体的工具软件。它的命令语句 功能非常强大 , 包含了大量高度集成的可 直接调用的函数,高效简洁;另一方面, 它又是一个开放系统,针对不同的学科, 推出了不同的工具箱。 自 1984年推向市场 以来,经过十几年的发展和竞争,现已成 为国际认可 (IEEE)的最优化的科技应用软 件一。
正是由于 MATLAB 具有良好的扩展 性以及强大的数据分析和处理能力,现已 广泛应用于矩阵代数、数值计算、数字信 号处理、振动理论、神经网络控制、动态 仿真等领域。 MATLAB 是用 M 语言编程, 尽管不能在 M 文件中直接调用 C 语言程序, 但可以通过 MATLAB 提供的应用编程接 口 (API)来与外部接口,在 MATLAB 环境 中调用 C 语言或 Fortran 程序、 输入或输出 数据以及与其他软件程序建立客户 /服务 器关系。在 MATLAB 中调用 C 语言程序, 必须通过 MEX 文件来实现。
2. FIR 数字滤波器
滤波就是有选择性地提取或去掉 (或 削弱 ) 某一段或某几段频率范围内的信号 , 数字滤波器是一种用来过滤时间离散信号 的数字系统 , 它是通过对抽样数据进行数
学处理来达到选频目的。数字滤波器可分 为 IIR (无限冲激响应 ) 和 FIR (有限冲激响 应 ) 两种结构。
随着计算机技术和集成电路技术的发 展, 数字信号处理以其方便、 灵活的特点, 越来越引起人们的重视。数字滤波器是数 字信号处理的重要内容,数字滤波器的设 计已成为数字信号处理研究中的热点一。
应用 Matlab 语言可以快捷地设计出由
软件组成的数字滤波器 , 很容易通过对参 数的修改进行性能的优化。 FIR 滤波器 (即 有限长冲击响应滤波器 , Finite Imp ulse Response Digital Filter)最大的优点就 是在满足幅频特性的同时,还可以获得严 格的线性相位特性,这使它在语音处理、 图像处理等要求高保真的数字信号处理中 显得十分重要。
FIR 数字滤波器的设计原理 1. FIR滤波器设计原理
由于 FIR 滤波器冲击响应 h[n]是有限长序列,因此这种结构可用非递归结构来实现
[1]
。 FIR 数字滤波器系统函数一般形式为:
10
() () N k
n H z h k z --==∑。
FIR 滤波器数学表达式可用差分方程来表示:
10
() () () N k y n h k x n k -==-∑。
式中 :y(n )输出序列; h (k )滤波器系数; n 滤波器阶数; x (k )输入序列。
应用 Matlab 设计 FIR 滤波器的主要任务就是根据给定的性能指标, 设计一个 H (z ) ,使其逼近这一指标, 进而计算并确定滤波器的系数 b(n), 再将所设计滤波器的幅频响应、 相频响应曲线作为输出 , 与设计要求进行比较,对设计的滤波器进行优化。
FIR 滤波器的主要设计方法有窗函数法、最优化设计法及约束最小二乘逼近法 [2]。在 滤波器传统设计中, 要得到其幅频和相频响应特性, 需要根据这些方法进行大量的计算, 这使得滤波器的设计缓慢,周期变长,不利于设计的优化。 Matlab 信号处理工具箱中提 供了基于滤波器设计方法的工具函数,编程中可根据设计要求直接调用相应的函数,方 便快捷,见表 1 。
2. 用窗函数法设计 FIR 数字滤波器
窗函数设计 [3]技术是 FIR 滤波器设计的主要方法之一,由于其运算简单、精度高,已
成为工程中应用最广泛的设计方法。设计滤波器的基本思想是让待设计的实际滤波器逼 近理想特性。理想低通滤波器的频率特性应为:振幅特性在通带内为 1,阻带内为 0;在 通带内的相位特性与 w 成线性关系,即
?????≤<≤?=-. .="" ,="" 1)="">≤?=-.>
πw w w w w e e H c c c jwn jw
d
它对应的理想单位冲激相应 hd(n)为
. )
()](sin[21
) (000
n n n n w dw e
e
n h c w w jwn
jwn d n
c
--==
?
--ππ
可见,理想低通滤波器的单位冲激响应 hd (n)是无限长的非因果序列。而我们要设 计的是 FIR 滤波器,其 h( n)必然是有限长的,为了构造物理上可以实现的长度为 N 的因 果线性相位滤波器,必须将 hd( n) 截取长度为 N 的一段,或者说用一个有限长度的窗口 函数序列 w ( n) 来截取 hd ( n),即 h( n) = w ( n) hd ( n),因而窗函数序列的形状 及长度的选择就是关键。工程实际中常用的窗函数有 6种,即矩形窗、三角形窗、汉宁 (Hanning)窗、哈明 (Hamming)窗、布莱克曼 (Blackman) 窗和凯泽 ( Kaiser) 窗。它们之
间的性能比较如表 2所示。 实际的 FIR 数字滤波器的频率响应 H(e ) 逼近理想滤波器频
率响应 Hd(jw
e ) 的好坏,取决于窗函数的频率特性 W( w)。
3. 窗函数法设计步骤
3.1
用窗函数设计 FIR 滤波器的步骤为 :
(1)选择窗函数类型能够和长度, 写出窗函数 w (n )表达式。根据阻带最小衰减选择
窗函数 w(n)的类型,再根据过渡带宽确定所选窗函数的长度 N 。
(2)构造希望逼近的频率响应函数 ) (jw
d e H 。根据设计需要,一般选择相应的线性
相位理想滤波器(理想低通,理想高通,理想带通,理想带阻)。应当注意,理想滤波
器的截止频率 wc 点(对低通滤波器 ) 0(2
1
g g H H ≈)近似为最终设计的 FIRDFD 的 -6dB 频 率。
(3)计算:
dw e e H n h jwn jw d d ) (21
) (?-
=
π
π
π
(4)加窗得到设计结果:
) () () (n w n h n h d =
3.2
实际设计时,一般采用 MATLAB 工具箱 函数实现。步骤(1)由设计者根据设计指 标完成,步骤(2) -(4)的解题过程可调 用设计函数 fir1来实现。
Fir1时用窗函数法设计线性相位 FIRDF 的工具箱函数,调用格式如下:
hn=fir1(N,wc,’ ftype ’ ,window) fir 实现线性相位 FIR 滤波器的标准窗 函数法设计。“标准”时指再设计低通、
高通、 带通、 带阻 FIR 滤波器时,
)
(jw
d e H 分别取相应的理想低通、高通、带通、带 阻滤波器,故而设计的滤波器的频率响应 称为标注频率响应。
hn=fir1(N,wc)可得到 6dB 截至频率为 wc 的 N 阶(单位脉冲响应 h(n)长度为 N+1) FIR 低通滤波器, 默认 (缺省参数 windows ) 选用 hammiing 窗。 其单位脉冲响应 h(n)为:
h(n)=h(n+1),n=0,1,2,? ,N
而且满足线性相位条件:
h(n)=h(N-1-n)
其中 wc 为对 π归一化的数字频率, 0≤wc ≤1。
hn=fir1(N,wc,’ ftype ’ ) 可设计高 通和带阻滤波器。
·当 ftype=high时, 设计高通 FIR 滤波 器;
·当 ftype=stop时, 设计带阻 FIR 滤波 器。
hn=fir1(N,wc,’ ftype ’ ,window) 通 过选择 wc 、 ftype 和 window 参数, 可以设计 各种加窗滤波器。
Fir2可以指定任何形状的 Hd (jw
e ) ,
用 help 命令查阅其调用格式。
4.
用 Matlab 对 FIR 数字滤波器进行仿真设计
4.1 编写流程 [4]
我们以低通数字滤波器设计为例,来介绍用 MATLAB 对 FIR 数字滤波器进行仿真过程: 设计 55阶低通滤波器,截止频率在 0.3,并用滤波器对信号 sin
(2*pi*15*t)+0.5*sin(2*pi*90*t)+0.2*sin(2*pi*300*t)滤波 (信号采样频率为 600Hz) 。
1) 用 RLS 设计数字低通滤波器 B=fircls1(n,wo,dp,ds)函数返回长度为 n+1 线性相位 低通 FIR 滤波器,截止频率为 wo , 取值 0-1之间。通带幅度偏离 1.0最大值为 dp ,阻带偏离 0最大值为 ds , n 为滤波器阶数。
2)建立新的 M 文件选择“ File ”菜单项,单击“ New M-file”按钮,便建立一个 M 文件 [5]。
3)编写程序 , 调试程序 , 在 MATLAB 平台上得出实验结果编写完程序,单击“ Debug ” 按钮,即可观察到所设计滤波器幅频特性和滤波前后的波形。
4.2 实例
下面给出两个实例说明用 MATLAB 设计 FIR 滤波器的优点,及滤波器的滤波特性。 先用最优化设计法设计一个滤波器:
例 1:设计一个最小阶数的低通滤波器,采样频率 fs=2000 Hz,通带截止频率为 500Hz ,阻带的截至频率为 600Hz ,阻带最小衰减为 40dB ,通带的最大衰减为 3dB 。 在设计之前应先确定用说明方法设计,本例可选择等波纹的最优化设计法。程序如 下:
fs=2000; %采样频率
rp=3; %通带波纹
rs=40; %阻带波纹
f=[500 600]; %截止频率
a=[1 0]; %期望的幅度
dev=[(10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)];
[n,fo,ao,w]=remezord(f,a,dev,fs);
b=remez(n,fo,ao,w); %调用最优设计法中 remez 函数
freqz(b,1,1024,fs)
程序运行后,计算机输出该滤波器的幅频及相频响应特性,如图 1所示。
图 1 滤波器输出的幅频及相频响应特性
上图中幅频特性曲线从 500Hz 开始向下折,这是因为题设中通带截止频率为 500Hz , 同样图中幅频曲线在 600Hz 降为最低,是因为题设中阻带的截至频率为 600Hz 。
用窗函数设计一个滤波器:
例 2:设计一个低通滤波器, 性能指标为通带 0~1000Hz , 阻带截止频率为 2000Hz , 通带波动 1%,阻带波动 5%,采样频率为 10000Hz ,采用 Kaiser 窗。
主要程序如下:
fc=1000;
fs=10000;
[n,Wn,beta,ftype]=kaiserord([1000 2000],[1 0],[0.05 0.05] ,fs); %得出 滤波器的阶数
w=2*fc/fs %模拟到数字滤波器的技术指标的转换
window=kaiser(n+1,beta); %使用 kaiser 窗函数
b=fir1(n,w,window); %使用标准频率响应的加窗设计函数 fir1
freqz(b,1,512); %数字滤波器频率响应 ;
t=(1:100)/fs;
s=sin(2*pi*t*800)+sin(2*pi*t*3000)+sin(2*pi*t*4000);
%混和正弦波信号
sf=filter(b,1,s); %对信号 s 进行滤波
滤波器长度为 13, 归一化截止频率为 0.2, 凯塞窗控制旁瓣的参数为 1.5099, 以及传 递给函数 firl 用于指定滤波器类型的 ftype 为 low , 通过图 2-图 4可以看出它能满足设计要 求。
图 2 滤波器的幅频与相频特性
图 3 滤波前混和正弦波信号的波形
图 4 滤波后的波形
用最小二乘法设计一个 fir 滤波器
例 3:有 一 个 采 样 频 率 为 1000Hz 的 信 号 源 , sin(30πt)+0.5*sin(180πt)+0.2*sin(600πt) ,应用约束最小二乘法设计一个带通滤波器,通带为 [0.2 0.4],对 该信号进行滤波。
程序如下:
t=0:1/1000:1;
sig=sin(2*pi*15*t)+0.5*sin(2*pi*90*t)+0.2*sin(2*pi*300*t);
plot(t,sig);
n=50;
f=[0 0.2 0.4 1];
a=[0 1 0];
up=[0.02 1.02 0.01];
lo=[-0.02 0.98 -0.01];
b=fircls(n,f,a,up,lo);
newsig=fftfilt(b,sig);
figure
ft=t(301:350);
ns=newsig(301:350);
zns=interp(ns,12);
znt=interp(ft,12);
plot(znt,zns);
该题滤波器的幅频特性曲线和相频特性曲线及滤波前后的波形如图 5、图 6和图 7所 示:
图 5 滤波器的幅频特性曲线和相频特性曲线。
图 6 滤波前的波形
图 7 滤波后的波形
上文分别介绍了 fir 滤波器设计的三种方法:窗函数法、 最优化设计法和最小二乘法 设计 fir 滤波器的程序步骤, 并对程序进行了仿真, 通过波形图, 展示了滤波器的特性曲 线和很好的仿真效果。
5结论:
FIR 滤波器的应用十分广泛,当今的
许多信号处理系统,如图像处理等系统要
求具有线性相位特性。 在这方面 FIR 滤波器
有其独特的优点,能很容易地设计出具有
严格线性特性的 FIR 系统。此外, FIR 滤波
器的冲激响应是有限长序列,其系统函数
为一个多项式,它所含的极点多为原点,
所以 FIR 滤波器永远是稳定的。综上所述,
在 Matlab 中进行数字滤波器的设计,简化
为函数的调用,极大方便了数字滤波器的
设计。
参考文献
[1]曲东才。 MATLAB 平台下数字微分信号提 取研究 [J]。系统仿真学报。 2002.Vol.14 No.8。
[2]丁吉,姜涛。基于 Matlab 的 FIR 数字滤 波器的设计 [J]。 长春工业大学学报。 2006年 9月第 27卷第 3期。
[3]丁玉美,高西全。数字信号处理 [M]。 第二版。西安电子科技大学出版社。 [4]陈玲玲 张虹。 基于 MATLAB 的 FIR 数字滤 波器的优化设计 [J]。 科技信息。 2008年第 32期。
[5]徐金明。 MATLAB 实用教程 [M]。北京 :清华大学出版社, 2005年。
作者:钱海峰(1991,男, 学士本科生, 研究方向:EDA/DSP应用技术 )
范文四:fir滤波器的Verilog程序
firVerilog
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////// // Company:
// Engineer:
//
// Create Date: 17:01:38 10/09/06
// Design Name:
// Module Name: ppeifir
// Project Name:
// Target Device:
// Tool versions:
// Description:用Verilog编写的fir滤波器程序
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////// module firv2(clk, x, y);
input clk;
input [7:0] x;
output [25:0] y;
reg [26:0] y;
reg[7:0] x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16;
wire[21:0]
acc1,acc2,acc3,acc4,acc5,acc6,acc7,acc8,acc9,acc10,acc11,acc12,acc13,acc14,acc15,acc
16,acc17;
reg [8:0]sxin[0:32];
reg [5:0]i,k;
reg [8:0]xx[16:0];
parameter c0=-21,
c1=-8,
c2= 22,
c3=34,
c4=6,
c5=-34,
c6=-31,
c7=32,
c8=87,
c9=32,
c10=-154,
c11=-321,
c12=-217,
c13=321,
c14=1185,
c15=1996,
c16=2328;
always @ (posedge clk)
begin
xx[16]<=sxin[16] ;="">=sxin[16]>
for(i=0;i<16;i=i+1)>16;i=i+1)>
xx[i]<=sxin[i]+sxin[32-i] ;="">=sxin[i]+sxin[32-i]>
for(k=32;k>0;k=k-1)
sxin[k]<=sxin[k-1];>=sxin[k-1];>
sxin[0]<={x[7],x};>={x[7],x};>
end
mult13_8 uut0(clk,c0,xx[0],acc1);
mult13_8 uut1(clk,c1,xx[1],acc2);
mult13_8 uut2(clk,c2,xx[2],acc3);
mult13_8 uut3(clk,c3,xx[3],acc4);
mult13_8 uut4(clk,c4,xx[4],acc5);
mult13_8 uut5(clk,c5,xx[5],acc6);
mult13_8 uut6(clk,c6,xx[6],acc7);
mult13_8 uut7(clk,c7,xx[7],acc8);
mult13_8 uut8(clk,c8,xx[8],acc9);
mult13_8 uut9(clk,c9,xx[9],acc10);
mult13_8 uut10(clk,c10,xx[10],acc11);
mult13_8 uut11(clk,c11,xx[11],acc12);
mult13_8 uut12(clk,c12,xx[12],acc13);
mult13_8 uut13(clk,c13,xx[13],acc14);
mult13_8 uut14(clk,c14,xx[14],acc15);
mult13_8 uut15(clk,c15,xx[15],acc16);
mult13_8 uut16(clk,c16,xx[16],acc17);
always @(posedge clk)
begin
y<={acc16[1],acc16[1],acc16[1],acc16[1],acc16[1],acc16}+{acc17[1],acc17[1],acc17[1],acc17[1],acc17[1],acc17}>={acc16[1],acc16[1],acc16[1],acc16[1],acc16[1],acc16}+{acc17[1],acc17[1],acc17[1],acc17[1],acc17[1],acc17}>
+{acc15[1],acc15[1],acc15[1],acc15[1],acc15[1],acc15}+{acc14[1],acc14[1],acc14[1],acc14[1],acc14[1],acc14}
+{acc13[1],acc13[1],acc13[1],acc13[1],acc13[1],acc13}+{acc12[1],acc12[1],acc12[1],acc12[1],acc12[1],acc12}
+{acc11[1],acc11[1],acc11[1],acc11[1],acc11[1],acc11}+{acc10[1],acc10[1],acc10[1],acc10[1],acc10[1],acc10}
+{acc9[1],acc9[1],acc9[1],acc9[1],acc9[1],acc9}+{acc8[1],acc8[1],acc8[1],acc8[1],acc8[1],acc8}
+{acc7[1],acc7[1],acc7[1],acc7[1],acc7[1],acc7}+{acc6[1],acc6[1],acc6[1],acc6[1],acc6[1],acc6}
+{acc5[1],acc5[1],acc5[1],acc5[1],acc5[1],acc5}+{acc4[1],acc4[1],acc4[1],acc4[1],acc4[1],acc4}
+{acc3[1],acc3[1],acc3[1],acc3[1],acc3[1],acc3}+{acc2[1],acc2[1],acc2[1],acc2[1],acc2[1],acc2}
+{acc1[1],acc1[1],acc1[1],acc1[1],acc1[1],acc1};
end
endmodule
范文五:基于MATLAB的fir数字滤波器
2012届毕业设计
题 目 基于 Matlab 的 FIR 低通滤波器设计及 simulink 仿真实现 学 院 自动化与电气工程学院
专 业 测控技术与仪器
班 级 083
学 号 108034063
学生姓名 乔静兵
指导教师
完成日期
浙 江 科 技 学 院 本 科 毕 业 论 文 (2012届 )
题 目
学 院
专 业
班 级
学 号
学生姓名
指导教师
完成日期
浙江科技学院毕业设计、学位论文
版权使用授权书
本人 乔静兵 学号 108034063声明所呈交的毕业设计、学位论文《 基于 》 , 是在导师指导下进行 的研究工作及取得的研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已 经发表或撰写过的研究成果, 与我一同工作的人员对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。
本毕业设计、学位论文作者愿意遵守 浙江科技学院 关于保留、使用学位论文的管理办 法及规定,允许毕业设计、学位论文被查阅。本人授权 浙江科技学院 可以将毕业设计、学 位论文的全部或部分内容编入有关数据库在校园网内传播,可以采用影印、缩印或扫描等复制手 段保存、汇编毕业设计、学位论文。
(保密的学位论文在解密后适用本授权书)
论文作者签名:乔静兵 导师签名:施秧
签字日期:2012 年 5月 25日 签字日期:2012 年 5 月 25日
摘 要
数字滤波器是数字信号处理的一个重要的技术分支。在现代电子系统中, FIR 数字滤波器以 其良好的线性特性被广泛使用,属于数字信号处理的基本模块之一。在工程实践中,一般对信号 处理要求有实时性和灵活性, 而已有的一些软件和硬件计算和实现方式则难以同时达到这两方面 的要求。而随着 EDA 技术和可编程逻辑器件的发展,使用 MATLAB 计算及实现 FIR 滤波的技术已 经非常成熟。随着滤波技术的发展,给人们带来了很多方便不论是学习、生活还是工作中,都有 着不可小觑的作用。在设计滤波器中,首先是基于 Matlab 软件,然后再利用 Matlab 里的 simulink 平台进行实现。
本次毕业设计首先对滤波器的现状和已有的技术进行了深入的研究, 在研究的基础上开发出 一个基于 MA TLAB 的 FIR 低通滤波器,通过编写程序,得到滤波器的仿真图,进行比较、分析。 在这次毕业设计中,针对 IIR 和 FIR 滤波器各自的优点和缺点进行比较、分析,得出 FIR 的优点, 得到最终设计 FIR 滤波器更为实用。实践证明,与其他的滤波器相比, FIR 低通滤波器应用更为广 泛。
关键词:MATLAB ; FIR ;低通滤波器
Abstract
Digital filter is an important technical branch of a digital signal processing.In modern electronic systems, the FIR digital filter with good linearity is widely used, which belongs to one of the basic digital signal processing module .In engineering practice, the general signal processing need require the real time and flexibility, and some software and hardware computing and realization way is difficulty to achieve these two requirements at the same time.As EDA technology and programmable logic device development, the use of MATLAB algorithm and Realization of FIR filter has a very sophisticated technology.With the filter technology development, bringing convenience to people whether it is learning, life and work, have an essential role.In the design of filter, the first is based on the Matlab software, and then using the Matlab simulink platform to achieve.
MATLAB based on the FIR low-pass filter, the filter is obtained by writing a program, the simulation map, comparative, analysis.In this graduation design, IIR and FIR filter for the respective advantages and disadvantages are compared, analysis, obtains the advantages of FIR, to get the final FIR filter design is more practical.Practice has proved that, compared with other filters, the FIR low-pass filter is more widely applied.
Keywords :MATLAB ; FIR ; Lowpass filter
目 录
摘要 ........................................................................................................................... Ⅰ Abstract................................................................................................................... Ⅱ 1 绪论 .................................................................................................................... 1 1.1 课题研究背景 ..............................................................................................................1 1.2 国内外现状和发展趋势 ............................................................................................. 1 1.3 MATLAB 概述 .......................................................................................................... ..2 1.3.1 MA TLAB 发展历史 ..........................................................................................2
1.3.2 MA TLAB 的语言优势 ......................................................................................3
2 滤波器技术概述 ...............................................................................................................5 2.1 滤波器概述 .................................................................................................................5 2.2 滤波器的工作原理 ............................................................................................... .....5 2.2.1 模拟滤波器的工作原理 ........................................................................... ......5 2.2.2 数字滤波器的工作原理 ............................................................................. ....6 2.3 FIR 低通滤波器 ....................................................................................................7 2.3.1 FIR 滤波器的原理 ............................................................................................7 2.3.2 FIR 滤波器的应用及特点 ................................................................................8 2.4 滤波器的基本特性 .....................................................................................................9
2.4.1 模拟滤波器与数字滤波器的基本特性 ..........................................................9
3 FIR 低通滤波器设计 ......................................................................................................12 3.1 FIR 低通滤波器设计 .................................................................................................12 3.1.1 FIR 低通滤波器设计原理 ................................................................................12 3.1.2 窗函数法设计及 MA TLAB 实现原理 .............................................................12 3.1.3 FIR 数字滤波系统 ............................................................................................13 3.2 窗函数法设计及 MA TLAB 仿真 ..............................................................................13 3.3 基于 Matlab 仿真系统 ...............................................................................................15 3.3.1 simulink 仿真系统原理 ....................................................................................15 3.3.2 simulink 仿真系统 ............................ ............................ ............................ .....16
3.3.3 模型的创建和模型文件 ............................ ............................ .........................16
3.3.4 simulink 仿真 ............................ ............................ ..........................................17
4 总结 .....................................................................................................................................21 致谢 ............................................................................................................................................22 参考文献 ...................................................................................................................................23
1 绪 论
1.1 课题研究背景
随着 21世纪经济全球化的到来,人们的生活水平不断的提高,人们对精神文化的要求也越 来越高,对周边环境的要求也日益提上了日程。喜欢高质量的影碟,安静的锻炼环境,修身养性 的休憩场所,等等 [1]。然而,不尽人愿的是,在现如今的一个高科技发展的世界中,在任何一个 场所,都离不开各种机器设备的应用系统的运作。而在一个实际的应用系统中 , 由于设备本身的 缺陷和外界环境的无常变化 , 总存在着各种干扰的影响 , 使信号中掺杂了各种噪音。 比如音频信号 中的混杂的高频成分的噪声使得音乐听起来非常刺耳 , 失去了原有的悦耳的音质。为了提高理想 信号的信噪比 , 可以对理想信号进行滤波 , 尽可能的将信号滤除掉。滤波有模拟滤波和数字滤波 之分 , 但是随着信息时代和数字世界的到来 , 数字信号处理已经成为当今一门非常重要的学科和 技术领域 , 它在图像、语音、通信、军事、雷达、自动控制、航空航天、医疗和家用电器等众多 领域得到了广泛的应用。而在数字信号处理应用中 , 数字滤波器十分重要并已获得广泛应用。在 数字滤波中,又有 IIR 和 FIR 滤波器之分 [2], IIR 数字滤波器的设计保留了一些典型的模拟滤波器优 良的幅度特性,但它所涉及的滤波器相位特性通常情况下都是非线性的, 而 FIR 滤波器则可以在 即保证幅度特性又满足技术要求的同时, 也很容易地做到严格的线性的相位特性 [3]。 因此, FIR 高 度的线性和稳定性使其受到了使用者很大的欢迎,将其广泛的应用在实际设计中。低通滤波对人 们的生活如此重要,所以,进一步加深对低通滤波的研究将有及其重要的意义。
1.2 国内外现状和发展趋势
随着信息时代和数字世界的到来 , 数字信号处理已成为当今一门及其重要的学科和技术领 域。数字信号处理在通信、军事、医疗、自动控制、雷达、语音、航空航天、图像和家用电器等 众多领域得到了广泛的应用。在数字信号处理应用中 , 数字滤波器十分重要井已获得广泛应用。 数字滤波是数字信号处理的一种重要算法,在数字信号处理应用中, 滤波占有十分重要的地位, 如对信号的过滤、检测、预测等, 都要广泛地用到滤波器。数字滤波器是使用最为广泛的装置, 在工业、农业和其他行业均有应用。数字滤波器按其单位脉冲响应的长度可分为有限脉冲响应 (FIR )滤波器和无限脉冲响应(IIR )滤波器两类。 IIR 数字滤波器的设计保留了一些典型模拟滤 波器优良的幅度特性, 但所涉及的滤波器相位特性一般是非线性的, 而 FIR 滤波器则可在保证 幅度特性并满足技术要求的同时, 也很容易做到严格的线性相位特性。 FIR 滤波器的线性与稳
定性使其应用更为广泛, 这对于要求高保真度的信号处理有很重要意义。 利用 MA TLAB 实现 FIR 低通数字滤波器的设计,并对被高频干扰的信号进行滤波,达到了预期结果。因而,不少学者针 对 MATLAB 本身的特点及低通滤波器的特点和性能先后提出了许多针对性的想法。使得 FIR 低通 滤波器的设计有了很大的改善。然而,随着数字信号的处理和 EDA 技术的发展,将对低通滤波器 的设计提出更高的要求,因而,进一步加深对低通滤波器的研究是很有必要的。
1.3 MATLAB 概述
1.3.1 MATLAB 发展历史
MATLAB 是 “ 矩阵实验室 ”MA Trix LABoratory 的缩写,是由美国 MathWorks 公司开发的 集符号计算、 可视化和图形数值计算三大基本功能于一体, 操作简单、 功能强大的语言。 MA TLAB 提供了一个人机交互的数学系统环境,此系统的基本数据结构是矩阵,在生成矩陈对象时,不要 求作明确的维数说明。
MATLAB 语言的创造者是 Cleve Moler教授, Cleve Moler教授在数值分析, 特别是在线性代 数的领域中有很大影响, 他参与并编写了数值分析领域中的一些著名的著作和两个重要的 Fortran 程序:EISPACK 和 LINPACK 。他曾经在斯坦福大学、密西根大学和新墨西哥大学担任数学与计 算机科学教授。 1980年前后,当时的新墨西哥大学计算机系主任 Moler 教授在教授线性代数时, 发现用其他高级语言编程很不方便, 因而构思并开发了 MATLAB (MATrix LABoratory, 即矩阵实 验室 ), 此软件利用当时的数值线性代数领域里最高水平的 EISPACK 和 LINPACK 两大软件包中可 靠的子程序,用 Fortran 语言编写了集科学计算、命令翻译于一身的一套交互式软件系统 [4]。 所谓交互式语言,指的是人们给出一条命令,立即就可以得出该命令的结果。该语言无需像 C 语言那样,先是要求人们去编写源程序,再对之进行编译、连接,最终才能形成可执行文件。 这无疑会给使用者带来极大的方便。
早期的 MA TLAB 是用 Fortran 语言编写的, 只能作矩阵运算; 绘图也只能用极其原始的方法, 即用星号描点的形式画图;内部函数也只提供了几十个。但即使其当时的功能十分简单,当它作 为免费软件出现以来,还是吸引了大批的使用者。
1984年, Cleve Moler和 John Little成立了 Math Works公司, Cleve Moler一直担任该公司的 首席科学家。发行了 Matlab 第 1版 (DoS版本 1.0) 。正式把 MATLAB 推向市场。 MA TLAB 的第 一个商业化版本是同年推出的是 3.0的 DOS 版本。并继续进行 MA TLAB 的研究和开发,逐步将 其发展成为一个集符号计算、数学建模、图像处理、 数值处理、 文字处理、 图形处理、实时控制、
信号处理、动态仿真为一体的数学应用软件。 Matlab 以商业形式出现后,仅短短几年,就以其良 好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如德国的 KEDDC ,瑞典的 LUND 和 SIMNON , )纷纷淘汰,而改以 Matlab 为平台加以重建。 The MathWorks 公司于 1992年推出了具有划时代意义的 MA TLAB 4.0版本, 并于 1993年推出了其微机版 , 可以配合 Microsoft Windows 一起使用,推出了 MA TLAB 4.1版。也是在这年(1993年) MathWorks 公司从加拿大 滑铁卢大学购得 Maple 的使用权, 以 Maple 为 “ 引擎 ” 开发了 Symbolic Math Toolbox 1.0。 MathWorks 公司因此加快结束了国际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算互补发展 的新时代。 1994年推出了 4.2版本,其扩充了 4.0版本的功能,尤其在图形界面的设计方面提供 了新的方法。 1997年推出的 MATLAB 5.0版本允许了更多的数据结构,如数据结构体、单元数 据、对象与类、多维矩阵等,使其成为一种更方便编程的语言。 1999年初推出的 MATLAB 5.3版在许多方面又改进了 MATLAB 语言的功能。 2000年 10月底推出了其全新的 MATLAB 6.0正 式版 (Release 12), 在核心数值算法、 外部接口、 应用桌面、 界面设计等诸多方面有了很大的改进。 虽然 MATLAB 语言是计算数学专家倡导并开发的,但其普及和发展离不开自动控制领域学者的 贡献。 甚至可以说, MATLAB 语言是自动控制领域学者和工程技术人员捧红的, 因为在 MA TLAB 语言的发展进程中,很多有代表性的成就和控制界的要求与贡献是分不开的。至今为止,大多数 工具箱也都是控制方面的。 MATLAB 有很强大的方便实用的绘图功能、数学运算能力及语言的 高度集成性,它在其他科学与工程领域的应用也是越来越广,并且有着更广阔的应用前景和无穷 无尽的潜能。如果说有一种十分有效的工具能解决在教学和研究中遇到的问题,那么这种工具正 是 MATLAB 。它可以帮助使用者从繁琐、无谓的底层编程中解放出来,把宝贵时间更多地花在 解决问题中,这样肯定会提高工作效率。 现在, MATLAB 已经成为国际上最流行的科学与工程 计算的软件工具,现在的 MATLAB 已经不单单是一个 “ 矩阵实验室 ” 了,它已成为了一种具有广 泛应用前景的全新的计算机高级编程语言了,有人称它为 “ 第四代 ” 计算机语言,它在国内外高校 和研究部门正扮演着重要的角色。
1.3.2 MATLAB 的语言优势
概括的讲,整个 MATLAB 系统由两部分组成,即 MA TLAB 内核及辅助工具箱,两者的调 用构成了 MATLAB 的强大功能。 MA TLAB 语言以矩阵为基本单位,包括输入输出、函数、数据 结构、控制流语句及面向对象等特点的高级语言。 MATLAB 语言之所以能如此迅速地普及并被 人们应用,显示出如此旺盛的生命力,是因为它有着不同于其他语言的特点。被称作第四代计算
机语言的 MATLAB ,利用其丰富的函数资源,帮助编程人员从繁琐的程序代码中解放出来。 MATLAB 的最突出的特点是简洁。 MA TLAB 用直观的,符合人们思维习惯的代码,代替了 C 和 Fortran 语言的冗长代码。 MATLAB 给用户带来的是最直观、最简洁的程序开发环境。以下简单 介绍一下 MATLAB 的主要特点:
(1)语言简洁紧凑,使用方便灵活。 MATLAB 程序书写自由,利用其丰富的库函数避开繁 杂的子程序编程任务,减缩了不必要的程序,由于库函数都有本领域的专家编写,用户不必担心 函数的可靠性。可以说,用 MA TLAB 进行科技开发是站在专家的肩膀上。
(2)运算符和库函数极其丰富。由于 MA TLAB 是用 C 语言编写的, MATLAB 提供了和 C 语言几乎一样多的运算符,灵活使用 MA TLAB 的运算符将使程序变得极为简短。
(3) MA TLAB 不但具有结构化的控制语句(如 while 循环、 for 循环、 if 语句和 break 语句) 还具有面向对象编程的特性。
(4)程序自由度大,语法限制不严格。例如,在 MA TLAB 里,用户无需对矩阵预定义就便 可使用。
(5)程序的可移植性良好,几乎不做修改就可以在各种型号的计算机和操作系统上运行。
(6) MATLAB 的图形功能强大。 在 Fortran 和 C 语言里, 绘图都不怎么容易, 但在 MA TLAB 里,数据的可视化非常简单。 MATLAB 还具有很强的编辑图形界面的能力。
(7) MA TLAB 另一大的特点就是具有较强大的工具箱。 MA TLAB 包含两个部分:核心部分 和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又可分为两类:功能性工具 箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、文字处理功能、图示建模仿真 功能以及与硬件实时交互功能。功能性工具箱能用于多种学科。而学科性工具箱是专业性比较强 的,如 control 、 communication toolbox、 signal processing toolbox、 toolbox 等。这些工具箱都是由 该领域内的学术水平很高的专家编写的,所以用于无需编写自己学科范围内的基础程序,而直接 进行高、精、尖的研究。
(8) MATLAB 的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于 MA TLAB 的 程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
2 滤波器技术概述
2.1 滤波器概述
凡是可以用来进行信号处理的装置或设备都可以称为滤波器。 在近现代电信设备和各类控制 系统中,滤波器应用极为普遍;在人们使用的所有的电子部件中,使用最多,技术最为复杂的可 以说是滤波器了。滤波器的质量直接决定产品的优劣,所以,对滤波器的研究和生产一直被生产 商们所重视。
对于不同的滤波器,每个频率范围的信号的强弱程度不同。当使用在音频应用时,它可以被 称为高频剪切滤波器 , 或高音消除滤波器。低通滤波器概念的形式有许多种,其中包括电子线路 (如音频设备中使用的 hiss 滤波器、平滑数据的数字算法、音障(acoustic barriers ) 、图像模糊 处理等等,这两个工具都是通过剔除掉短期波动、保留长期发展趋势提供了信号的平滑形式。低 通滤波器在信号处理中的作用等同于其它领域如金融领域中移动平均数(moving average)所起的 作用;低通滤波器有很多种,其中,最通用的就是巴特沃斯滤波器和切比雪夫滤波器。
滤波器各种形式的分类,一般可以归纳为如下几种。
(1)按被处理信号类型分类 ---按被处理信号类型分类,可分为模拟滤波器和离散滤波器两大类。 其中模拟滤波器又可分为有源、无源、异类三个小分类;离散滤波器又可分为数字、取样模拟、 混合三个小分类。
(2)按选择的物理量分类 ---按选择物理量分类,滤波器可分为幅度选择、频率选择、信息选择 (例如匹配滤波器)和时间选择(例如 PCM 制中的话路信号)等四类滤波器。
(3)按频率通带范围分类 ---按频率通带范围分类,滤波器可分为低通、高通、带通、带阻、全 通五个类别,而梳形滤波器属于带通和带阻滤波器,因为它有周期性的通带和阻带 [3]。
2.2 滤波器的工作原理
2.2.1 模拟滤波器的工作原理
大家都知道,凡是对模拟信号进行线性滤波的一种线性时不变系统就被称为模拟滤波器,如
图 1.1所示。 在时域内, 它的动态特性可以用系统的单位冲激函数的响应
) (t
h
a 来描述, 也就是该
滤波系统在任何时刻对输入单位冲激信号
()t
x
a =δ(t )的输出响应
()()t
h
t
y
a
a
=
。此函数从时域
上反映了该滤波系统的传输特性。 对于任意输入信号
()t
x
a , 系统的输出
()t
y
a 可以用卷积来表示:
()()()τ
ττd t x h t y a a a -?=?∞
∞-
=()()?
∞
∞
--?τ
ττd t h x a a
上式表明在对线性滤波器系统进行时域分析时,采用了叠加原理,先将任意输入信号的波形 分成不同时间的窄脉冲之和,再分别求出各个脉冲通过滤波器之后的响应,再进行线性叠加从而 得出总的输出信号。
(1.2)
图 1.1模拟滤波器原理
在进行频域分析时,线性滤波器的转移函数 ()S H a 等于系统的单位冲激函数的响应 ) (t h a 的
拉普拉斯变换:
()??? ???∞
∞--dt e h H st
t a (1.3) 很明显,当 s=jω,上式就成为傅立叶变换的表达式,此表达式反映了滤波器的传输特性对各种频 率的响应, 也就是滤波器的频率响应函数 ()
ωj H a , 它决定着滤波特性。 当滤波器输入信号
()
t x a 与输出信号
()t y a 进行拉普拉斯变换,得
()()()s X s H s Y a a a ?= (1.4) 这表明两信号卷积的变换等于各自变换的乘积。在频谱关系上,一个输入信号的频谱 ()
ωj a X ,
经过滤波器的作用后,被变换成
()()
ωωj X j H a a 的频谱。所以,根据不同的滤波要求来选定
()
ωj H a ,就可以得到不同类型的模拟滤波器。还可以看出,滤波器的滤波过程就是完成信号
()t x a 与它的单位冲激函数响应 ()t h a 之间的数学卷积运算过程。
2.2.2 数字滤波器的工作原理
在数字滤波中,我们大部分讨论的都是离散时间序列。如图 1.2所示。设输入序列为 ()n x , 离散或数字滤波器对单位抽样序列 ()n δ的响应为 ()n h 。因为 ()n δ在时域离散信号系统中所起的
()t
)s
作用就相当于单位冲激函数在时域连续信号系统中所起的作用一样。
图 1.2 数字滤波器原理
数字滤波器的序列 ()n y 即是这两个序列的离散卷积,即 ()()()∑∞
∞
=-=
k k n x k h n y (1.5)
同样,两个序列卷积的 z 变换等于各自 z 变换的乘积,即
()()()z X z H z Y = (1.6)
用 T
j e z ω=代入上式,其中 T 为抽样周期,则得到
()()()
T j T j T j e X e H e Y ωωω= (1.7) 式中 (
)T
j e
X ω和 ()T
j e Y ω 分别为数字滤波器输入序列和输出序列的频谱,而 ()T
j e H ω为单位抽
样 序 列 响 应 ()n h 的 频 谱 。 由 此 可 见 , 输 入 序 列 的 频 谱 (
)T
j e
X ω经 过 滤 波 后 , 变 为
()()T j T j e X e H ωω ,按照 ()
T j e X ω的特点和我们处理信号的目的,选取适当的 ()
T j e H ω使的滤波
后的 (
)()T
j T
j e X e
H ωω符合我们的要求 [5]。
2.3 FIR 低通滤波器
2.3.1 FIR 滤波器的原理
在国内外的研究中,设计 FIR 滤波器所涉及到的乘法运算方式:并行乘法、位串行乘法和采 用分布式算法的乘法。
并行乘法虽然速度快,但是它占用的硬件资源极大。随着滤波器的阶数的增加,乘法器位数 也随之增长很快,硬件规模将变得非常庞大。
位串行乘法器的实现方法主要是通过先对乘法运算进行分解,然后用加法器来完成乘法,也 就是没有乘法操作的乘法器。由于一个 8*8位的乘法器输出为 16位,为了能得到正确的 16位结果, 串行输入的二进制补码数就得进行符号位扩展,就是在串行输入的 8位二进制补码数前面补 8个
) )
0(对正数 ) 或 8个 1(对负数 ) 后再输入乘法器。如果每一位的运算都要用一个时钟周期的话,要得出 正确结果就要 16个时钟周期,这就意味着这类乘法器要完全计算出结果,它的延迟必将会很大。 所以位串行乘法器虽然可以使乘法器的硬件规模达到了最节省的优点,但是由于它是位串行运 算,导致它的运算周期太长,而我们要折衷考虑速度与规模,那这就不是最优的选择了。
分布式算法 (distributed arithmetic , DA) 的主要特点是巧妙地利用了 ROM 查找表将固定系数 的乘累加 (Multiply— accumulator , MAC) 运算转化为查表操作,它与传统算法实现乘累加运算的 不同在于执行部分积运算的先后顺序不同。就小位宽来说, DA 算法设计的 FIR 滤波器的速度可以 显著的超过基于 MAC 的设计。
相对于前两种方法, DA 算法不但可以全并行实现,还可以全串行实现,还可以串并行结合 实现,可以在硬件规模和滤波器速度之间作适当的折中,所以是现在被研究的主要方法。
2.3.2 FIR 滤波器的应用及特点
FIR 滤波器具有幅度特性可随意设计、线性相位特性可严格精确保证等优点,因此在要求相 位线性信道的现代电子系统,如图像处理、数据传输等波形传递系统中,具有很大吸引力。
噪声的基本定义是外来的不想要的干扰信号 (或伴随着想要的信息一起发生的无关的或没有 意义的数据 ) 。 FIR 低通滤波器允许用户滤掉这些不想要的信号干扰。 噪声可能有无穷无尽的来源, 包括设计内部来源或外部来源,噪声会挡住有用的信号。噪声会使您很难在一个信号中找到想要
的信息,譬如说测量一个信号的真实电压。提高抖动,增加了定时测量的难度。
几乎处理电路的每个工作人员都要用一定的时间和精力去处理噪声, 或者找出噪声来源修复 它,或者减少噪声对测量的影响。设计工程师需要做的是找到干净的没有噪声的轨迹,然后把重 点放在设计中预计的信号上。其它情况下,干净的轨迹可以用于报告和文档,清楚明白地显示设 计运行情况。
滤波器频率读数允许用户检定噪声的频率。 即使在单次波形上, 采集后仍可以使用这种调节, 仔细地检测信号。
有时也可以使用其它工具来降低信号上的噪声 (如带宽限制器或平均模式 ) ,可是这些工具有 许多限制,如滤波频率有限,没有指定固定滤波,或只能用于重复信号上。用来减少信号上的噪 声的其它工具 (如带宽限制器或波形平均模式 ) 只会去掉滤波频率以上的信号信息,或去掉不重复 的毛刺。使用 FIR 低通滤波器过滤信号可以让使用者得到很好的效果。
2.4 滤波器的基本特性
2.4.1 模拟滤波器与数字滤波器的基本特性
如果利用模拟电路直接对模拟信号进行处理则构成模拟滤波器,那么它是一个连续时间系 统。如果利用离散时间系统对数字信号(时间离散、幅度量化的信号)进行滤波则便构成了数字 滤波器。
数字滤波器的差分方程可表示为:
∑∑==-+-=
N
i M
k k k
k n x a i n y b
n y 1
) () () ( (1.8)
系统函数表示 :
∑∑=-=--==
N i i
i M
k k
k z b z
a z X z Y z H 1
1)
()
() ( (1.9)
数字滤波器的特性通常用其频率响应函数
) (ωj e H 来描述, 包括幅度特性
)
(ωj e H 和相位特性 )) (arg(ω
j e
H 。
按信号通过系统时的特性(主要是幅频特性)来分类:可以有低通、高通、带通和带阻四种 基本类型。
(1) 低 通数字滤波器:图 1.3所示
????
?>≥≤=c c
j j
e H e H ωπωωω
0) () ( (2.0)
图 1.3 低通数字滤波器的频谱
(2) 高通数字滤波器:图 1.4所示
????
?<≥≥=c c="" j="" j="" e="" h="" e="" h="">≥≥=c>
ω
0 ) () ( (2.1)
图 1.4 高通数字滤波器的频谱
(3)带通数字滤波器:图 1.5所示
??
???≥>>≥≥≥=0||, 0) () (212ωωωπωωωω
e H e H 1j j (2.2)
图 1.5 带通数字滤波器的频谱
(4)带阻数字滤波器:图 1.6所示
?????≥≥≥>>≥=221
00||, ) () (ωωωωωωπωω
1j j
e H e H (2.3)
-f s /2 -f s
s f s
-f c
c
图 1.6 带阻数字滤波器的频谱
3 FIR 低通滤波器设计
FIR 滤波器之所以被广泛使用,是由于他们存在的强大的设计算法,实现非递归的形式时有 其固有的稳定性, 可以实现线性相位的难易程度, 在多速率情况下简单可扩展, 充足的硬件支持。 本演示展示了在过滤器的设计上具有多种特性的低通 FIR 滤波器设计工具箱功能。 这里介绍的许 多概念可以扩展到其他的反应,如高通,带通等。
3.1 FIR 低通滤波器设计
3.1.1 FIR 低通滤波器设计原理
FIR 数字滤波器可以用下面的差分方程来描述
) () () () () (1
n h n x m n x m h n y N m *=-=∑-=
其中 x (n )是输入序列, y (n )是输出序列, h (n )是系统的单位脉冲响应。由于其采用卷积的 方法得到输出,所以可以采用快速算法 FFT 进行卷积计算,提高信号处理速度。 FIR 数字滤波器 之所以满足线性相位的条件是因为其乘法器的系数关于中点对称,又因为其结构是无反馈的回 路,所以是无条件的稳定系统。
3.1.2 窗函数法设计及 MATLAB 实现原理
目前 FIR 滤波器常用的设计方法有窗函数法和频率采样法两种,窗函数法是从时域的角度 去进行设计的,同样,频率采样法是从频域角度进行设计的。窗函数法由于既简单物理意义又清 晰,因而得到了较为广泛的应用 [5]。窗函数法设计的基本思想就是:首先,根据技术指标的要求, 然后选取合适的阶数 N 和窗函数的类型 w (n ) ,使其幅频特性逼近理想滤波器的幅频特性。其次, 因为理想滤波器的 hd (n )是无限长的,所以就需要对 hd (n )进行截断,数学上因此就称这种方 法为窗函数法。 但是在截断的过程中既要保证 FIR 滤波器的稳定性又要保证它的线性相位的特性。 由于截断效应会使所设计的滤波器的幅频特性存在一定的误差,将之称为吉布斯效应。最后,就 是验证所设计的滤波器满不满足要求,若不满足要求,则重新设计。
常用的窗函数有大概六种,包括三角窗、矩形窗、凯塞窗和汉宁窗等。窗函数的选择一般 要符合以下三个条件:(1)首先要具有较低的旁瓣幅度,尤其是第一旁瓣幅度; (2 )旁瓣幅度 下降速度要快,以便利于增加阻带的衰减; (3 )主瓣宽度也要窄,以便获得较陡的过渡带。
MATLAB 为用户提供的是一种综合、 简便的图形用户工具 ——— FDATool 滤波器设计分析 工具箱,它几乎包括了信号处理工具箱中所有的滤波器设计方法 [6]。利用这个工具就可以使复杂 的滤波器最佳设计方法变得很简单了 , 用户只需要在 FDATool 图形工具里面选择相应的滤波器 设计方法 , 再填入滤波器设计的理想指标 , 就可为用户生成所需要的滤波器频率响应特性。
3.1.3 FIR 数字滤波系统
MathWorks 公司开发的 Simulink 仿真系统是 MATLAB 软件里面的重要工具箱之一,它的主 要功能就是实现系统的建模、仿真及其分析,从而可在实际的系统制作出来之前,提前对系统进 行仿真及分析, 并可以对系统做出适当的随时修正或按照仿真的最佳效果来调试和整定系统的参 数,以便提高系统的性能,减少设计系统过程的时间,实现了高效率开发系统的目标 [7]。利用 MATLAB 平台提供的 Simulink 工具进行数字滤波系统的仿真,在建立仿真系统时,要注意选用数 字模块,并进行其相应参数的设计。
3.2 窗函数法设计及 MATLAB 仿真
窗函数法设计是一种通过截短和计权的办法使无限长非因果序列变为有限长脉冲响应序列 的设计方法。一般在设计滤波器之前 , 应该先根据具体的要求来确定滤波器的技术指标 [8]。然后 建立目标数字滤波器的模型 , 在这里通常先采用理想的数字滤波器模型 , 然后根据数学知识和滤 波器原理设计出一个实际的滤波器模型用来逼近给定的设计指标。
设计滤波器的常用窗函数有海明窗 (Hamming)、矩形窗 ( Boxcar) 、三角窗 ( barelett) 、汉宁窗 (Hanning)、布莱克曼窗 ( Blackm an)等。
本次设计是采用海明窗设计的 FIR 低通滤波器;程序如下:
Fc = 0.4;
N = 100; % FIR filter order
Hf = fdesign.lowpass('N,Fc',N,Fc);
Hd = design(Hf,'window','window',@hamming);
hfvt = fvtool(Hd,'Color','White');
legend(hfvt,'Hamming window design')
Matlab 仿真界面:
图 1.7 仿真界面
仿真效果图:
图 1.8 仿真效果图
海明窗又叫做汉明窗, 就拿语音信号打个比方吧, 语音信号一般是在 10ms 到 30ms 之间, 我 们可以把它看成是平稳的信号 [9]。为了妥善处理语音信号,我们就得对语音信号进行加窗,也就
是仅仅处理窗中的数据。由于实际的语音信号是很长的,但是我们不能也不必对很长的数据进行 一次性处理的。 最好的解决办法是每次取一段数据, 来进行数据分析, 然后接着再取下一段数据, 再进行数据分析。
仅取一段数据的方法就是构造一个函数。这个函数在某一个区间有非零值,但是在其余区间 皆为 0。 汉明窗就是这样的一种函数 [10],它的主要部分的形状就像 sin (x ) 在 0到 区间的形状, 而其它部分的都是 0。这样的函数乘上任何其他一个函数 g , g 只有一部分有非零值。
因为加上了汉明窗,一个图形中只有中间的数据被体现出来了,其他的的数据信息都被丢失 了,所以等到移窗的时候,只会移 1/3或 1/2的窗,这样就把前一帧或前二帧丢失的数据又重新 体现出来。
简单的说汉明窗其实就是个函数,它的形状非常像窗,所以与它类似的函数都叫做窗函数。 现提取脉冲响应图如下:
点击界面上的图标:
得到脉冲响应:
图 1.9 脉冲响应图
3.3 基于 Matlab 的 simulink 仿真系统
3.3.1 simulink 仿真系统原理
系统级设计的核心就是在统一的开发环境中进行算法设计和系统设计仿真,从而有效地把 开发流程的两个部分结合在一起。
要进行系统设计得需要一个统一的开发环境,并且在此开发环境中不仅可以对系统机构、 算法进行描述,还要能够对系统不同的层次,不同的组件和不同的数据类型进行建模;同时还要 有良好的移植性能。 Simulink 为我们提供了一个很好的开发环境,它是一个基于图块的系统级仿 真环境 [11]。 分级系统的描述方式为我们提供了真正的自顶向下的设计方法, 而且通过图块的方式 实现移植和建模。
由美国的 TI 公司 和 Math 公司联合开发的对象即面向 TI TMS320C6000 simulink 开发平台 的嵌入式对象, 使 Matlab/simulink与 TI/dsp工具结合为一体。 这套软件能够使设计者利用 Matlab 平台,经概念设计到代码及自动生成模型,对设计的数字信号处理系统进行开发、验证。
3.3.2 simulink 仿真系统
SIMULINK 仿真系统是 MATLAB 软件的扩展, 它是实现动态系统建模和仿真的一个软件包, Simulink 是一个进行动态系统建模、仿真和综合分析的集成软件包 [12]。它与 MATLAB 语言的主 要区别在于, 它与用户的交互接口是基于 Windows 的模型化之后的图形输入, 其结果是可以让用 户把更多的精力投放在构建系统的模型上,而并不是其语言的编程上。
所说的模型化图形的输入就是指 SIMULINK 仿真系统提供了许多按功能来分类的基本的系 统模块,我们使用者仅仅需要知道这些模块的输入输出及其各自的功能,而不用研究模块内部的 功能是怎样实现的,通过调用这些基本模块,再把它们按需连接起来就能构成我们所需要的系统 模型(以 .mdl 文件进行存取) ,进而进行仿真及分析。
它可以处理的系统有:离散、连续和混合系统;线性、非线性系统;单任务和多任务离散事 件系统。
在 simulink 提供的图形用户界面 GUI 上, 要想构造出复杂的仿真模型只需要进行鼠标的简单 拖拉操作就可以。它的外表采用方块图形式,且采用分层结构。
从建模的角度讲,这不但适用于自上而下的设计流程(概念、功能、系统、子系统、直至器
件) ,还适用于自下而上逆程设计。
从分析研究的角度讲,这种 simulink 仿真模型不仅可以让客户知道具体环节的动态细节,而 且还能让客户清晰的了解各器件、各子系统、各系统间的交换信息,以便客户掌握各部分间的交 互影响。
在 simulink 环境中, 用户可以观察到现实世界中的非线性和各种随机因素对系统行为的影响。 在 simulink 环境中, 用户还可以在仿真进程中改变参数, 实时的观察和记录系统行为的变化。 3.3.3 模型的创建和模型文件
Simulink 模型有以下几个基层含义:
1. 在视觉上表现为非常直观的方框图;
2. 在文件上则是扩展名为 mdl 或 ASCLL 的代码;
3. 在数学上则表现为一组微分方程或差分方程;
4. 在行为上模拟了实际系统的动态特性。
Simulink 模型通常包含三个 “ 组件 ” :
信源:可以使用常数、时钟、白噪声、阶梯波、正弦波、脉冲生成器、扫频信号、随机数产生器 等信号源;
系统:即指被研究系统的 SIMULINK 方框图;
信宿:可以是示波器、图形记录仪等。
对于具体的 SIMULINK 模型而言,它不一定完全包含这三大组件。例如:研究初始条件对 系统影响就不用包含信源组。
SIMULINK 模型的创建步骤:
创建模型文件;选择对象;选择模块;进行连线;注释模型;常用的 Source 库信源;常用的 Sink 库信宿;仿真的配置。
3.3.4 simulink 仿真实现
dsp Blockset为我们提供了 200多个高级 simulink 和数学函数,包括变换、矩阵运算、 FIR 、 IIR 、 多速率和自适应滤波、 谱分析和实时数据 I/O-所有的这些都是非常高效的基于帧的实现。 dsp Blockset 对于开发语音、音频和基带通信算法、基于传感器的信号处理应用都是很理想的。可以 利用这个具有强大功能的软件 MA TLAB 中专为数字信号处理(simulink )而设计的工具箱 dsp Blockset 对数字滤波器进行仿真。
本设计通过调用 Simulink 中的功能模块,构成数字滤波器的仿真框图 , 在仿真中 , 可以双击各 个功能模块 , 随时改变调整参数 , 获得不同状态或不同参数下的仿真结果。例如构造以基波为主的 原始信号 x (k ) =5sin(100πk )+2sin(200πk )+sin(300πk), 然后通过 Simulink 环境下的 Digital Filter Design (数字滤波器设计 ) 模块中的 dsp Blockset 工具箱设计一个低通滤波器,滤出频率低于或等 于 100Hz 的信号。
在 simulink 环境下, 用鼠标拖出自己需要的各个模块到新建的文件里, 然后将各个模块按需 相应的链接起来,如下图所示:
图 2.0 数字滤波器的模块图
数字滤波器模块图如图 2.0所示。
图 2.1 仿真界面
双击 Digital Filter Design模块,按照需要设置各个参数如下所示:
图 2.2 数字滤波器的参数设定
点击 scope 1 得到原始信号 x (k ) =5sin(100πk )+2sin(200πk )+sin(300πk) 的仿真图形如下所示:
图 2.3 滤波前的波形
原始信号为 x (k ) =5sin(100πk)+2sin(200πk )+sin(300πk), 通过 Simulink 环境下的 Digital Filter Design (数字滤波器设计 ) 模块中的 dsp Blockset 工具箱设计的一个低通滤波器,滤出频率低于或 等于 100Hz 的信号。
点击 scope 模块,得到进过 Digital Filter Design模块滤波后的仿真图形如下图所示:
图 2.4 滤波后的波形
这个例子用的是 dsp Blockset 这个工具箱。此工具箱几乎提供了所有的滤波器模型,只需修 改上面的参数就可以得到我们需要的数字滤波器。
4 总 结
本设计在我的班主任施秧老师的细心指导和严格要求下完成,终于完成了。回顾整个过程, 虽然在设计过程中遇到过很多困难,但是通过自己的不懈努力和指导老师的细心指点,基本上解 决了大部分设计过程中碰到的各种困难,基本上完成了软件的设计和仿真,基本达到了预期的目 标。
本次毕业计主要是对 FIR 低通滤波器的软件设计进行了研究和仿真,主要是基于 Matlab 这 个平台, 设计的 FIR 低通滤波器, 并且在 Simulink 下进行仿真。 整理和总结了国内外在低通滤波 器设计方面的研究成果和发展方向,系统介绍了我国 FIR 的主要特点和低通滤波器的主要特征, 还简要介绍了 simulink 仿真环境的强大功能。再此并介绍了本次设计中主要用到的 MA TLAB 软 件的相关介绍。 在设计 FIR 低通滤波器时采用的是窗函数中汉明窗 (hamming ) 函数的设计方法, 并用 MA TLAB 软件进行仿真。最后又通过 MA TLAB 软件中的 simulink 平台进行了低通滤波器 的仿真。本次在 MA TLAB 的平台上对 FIR 低通滤波器进行了设计和仿真,表明,应用汉明窗 (hamming )函数的设计方法有很高的正确性。
致 谢
经过我和指导老师的忙碌后,论文终于写完了,心中不由喜悦万分。在这里,我非常感谢在 大学四年的最后学习阶段 --毕业设计阶段帮助过我的指导老师,即我的班主任施秧老师。从论文 的选题, 到资料收集, 到写作、 修改, 到论文定稿, 是他给予了我很多耐心的指导和无私的帮助。 才使我顺利的完成了论文的写作。
在这里我还要感谢大学四年来,所有教过我的任课老师,是他们给予了我很多专业知识,教 会了我如何学习,如何做人,才使我有今天的小小成就。同样,也非常感谢大学四年里所结实的 同学们,因为有了彼此,我们的大学才生动,因为我们一起奋斗,所以我们的生活才充实。正是 由于他们,我才能在各个方面取得显著的进步,在此,向他们表示衷心的感谢。
感谢生我养我的父母,给我创造了良好的生活环境,让我可以安心的在异乡学习生活。你们 的恩情我无以回报,但我相信在今后的日子里,我会尽我最大的努力来报答你们的养育之恩,以 我的实际行动向你们尽孝。
感谢学校为我创造了良好的学习氛围,感谢电气学院的所有的教师们。
最后再次感谢在毕业设计中给予过我帮助的老师和同学们,对你们深深地说一声 '
参考文献
[1] 程佩青 . 数字信号处理教程 [M](第 2版) . 北京:清华大学出版社, 2002
[2] 黄忠霖 , 周向明 . 控制系统 MA TLAB 计算及仿真实训 [M]. 北京:国防工业出版, 2006 [3] 温寒江 . 全面深入改革传统教育 , 培养创新能力 [J].中国教育学刊 .1999,(1)
[4] 李了了 , 邓善熙 . MATLAB 在图像处理技术方面的应用 [M].北京:国防工业出版, 2003 [5] 周伟林 , 周鲜成 . FIR滤波器的软件仿真与硬件实现 [J].微计算机信息, 2009, 25
[6] 高西全 , 丁玉美 . 数字信号处理 [M](第 3 版 ). 西安:西安电子科技大学出版社, 2008 [7] 黄忠霖 , 周向明 . 控制系统 MA TLAB 计算及仿真实训 [M].北京:国防工业出版社, 2006 [8] 丁玉美 . 数字信号处理 [M].西安:西安电子科技大学出版社, 2001
[9] Texas Instruments.TMS 320C 54x Assembly Language Tools User'5 Guide,1998
[10] 陈亚勇 .Matlab 信号处理详解 [M].北京 :人民邮电出版社, 2001
[11] Texas Instruments.TMS 320C 54x simulink Reference Set,Vo14:Applications Guide,1996 [12] 伯晓晨等 .Matlab 工具箱应用指南 [M].北京 : 电子工业出版社, 2000
转载请注明出处范文大全网 » FIR滤波器基本结构