搜档网
当前位置:搜档网 › FIR滤波器的原理及设计

FIR滤波器的原理及设计

FIR滤波器的原理及设计
FIR滤波器的原理及设计

选题2 实验讲义

实验名称:基于分布式算法的FIR 滤波器设计

1.数字滤波器基础知识

数字滤波是信号与信号处理领域的一个重要分支,在语音图像处理、模式识别、谱分析、无线通信等领域都有着非常广泛的应用。通过滤波运算,将一组输入数据序列转变为另一组输出数据序列,从而达到修正时域或频域中信号属性的目的。数字滤波器就是用于完成这种信号滤波功能,用有限精度算法来实现的一种离散时间线性时不变(LTI )系统。相比于模拟滤波器,数字滤波器具有以下优点:(1)数字滤波器的频域特性容易控制,性能指标优良;(2)数字滤波器可以工作在极低的频率,可以方便地实现模拟滤波器难以实现的线性相位系统;(3)数字滤波器工作稳定,一般不会受到外部环境的影响;(4)数字滤波器的灵活性和可重用性高,只需要简单编程就可以修改滤波器的特性,设计周期短。数字滤波器的实现可以采用专用DSP 芯片,通过编写程序,利用软、硬件结合完成滤波器设计,也可以采用市面上通用的数字滤波器集成电路来实现,但这两种方法无法适应高速应用场合。随着集成电路技术的高速发展,FPGA 应用越来越普及,FPGA 器件具有芯片密度大、执行效率高,速度快,集成度高等优点,用FPGA 芯片作为滤波器的设计载体,可以实现高速信号滤波功能。

1.1 FIR 数字滤波器特点

数字滤波器通常分为IIR (无限冲激响应)和FIR(有限冲激响应)两种。FIR 滤波器具有以下特点:(1)可以做成严格的线性相位,同时又可以具有任意的幅度特性(2)单位冲激响应是有限长的,所以一定是稳定的,因此在实际中得到广泛的应用。

1.2 FIR 滤波器结构

设FIR 滤波器的单位冲激响应为)(n h ,10-≤≤N n ,

系统函数 ∑-=-=

1

)()(N n n

z

n h Z H

差分方程形式为:∑-=-=1

)()()(N k k n x k h n y (1)

基本结构(直接型):

图(1)FIR 滤波器的基本结构

1.3 结构简化

当FIR 滤波器具有严格线性相位时,)(n h 满足)1()(n N h n h --=或

)1()(n N h n h ---=设N 为偶数,令 )]1([)()0(--±=N n x n x s )]2([)1()1(--±-=N n x n x s

)2

()]12([)12(

N n x N n x N s -±--=- 则(1)式可以简化为:

∑-=-=120

)()()(N

k k n s k h n y (2)

与(1)相比,所需乘法器数量降为原来的一半。

图(2) 简化乘法器数量的线性相位滤波器

1.4 设计规模的改进

当滤波器的长度N 增加时,可将求和分配到几个独立的M 阶并行DA 的LUT 中。以(1)式为例,设M L N ?=,

∑∑∑-=-=-=+?-+?=-=101

10

)]([)()()()(L l M m N k m l L n x m l L h k n x k h n y

这样,长度为N 的滤波器实现可以分解为L 个长度为M 的滤波器,可运用流水线加法器累加结果。

2. 分布式算法

在很多DSP 应用场合中,滤波器系数一般为常数,在这种情况下,可以利用分布式(Distributed Algorithm ,DA )算法原理将求乘积和运算转变为移位和加法运算来实现。在滤波器规模比较小的情况下,采用DA 算法可以减少电路规模,更容易实现流水处理,从而有更高的执行效率。以(2)式为例,DA 算法的基本思想为:

在(2)式中,设)(k h 为常数,将)(k n s -表示为B+1位二进制补码形式,其中,最高位为符号位,用)(k n s B -表示,下标B 表示第B 位,数值位共有B 位,用)(k n s b -表示,其中

10-≤≤B b 。

即补B k n s k n s k n s k n s )]()()([)(01---=- 将式中各二进制位按权展开,则有下式成立,

∑-=?-+--=-1

2)()(2)(B b b b B B

k n s k n s k n s

代入(2)式,并改变式中求和的次序,可得

∑-=-=12

)()()(N k k n s k h n y

∑∑-=-=?-+--=12

1

]2)()(2)[(N k B b b b B B

k n s k n s k h

∑∑∑-=-=-=?-+--=1

120

120

2)()(])()([2B b b b N k N k B B

k n s k h k n s k h

∑∑∑-=-=-=-+--=1

120

120

)]

()([2])()([2B b b N k b N k B B

k n s k h k n s k h

∑-=-?+-=1

)](),([2)](),([2B b b b B B

k n s k h f k n s k h f

DA 算法的基本思想就是用一个LUT (查找表)来实现运算)](),([k n s k h f B -及

)](),([k n s k h f b -,则滤波结果可以相应二次幂加权并累加来实现,从而达到提高执行效

率的目的。

例:无符号DA 卷积

用分布式算法计算∑=>==<2

)()(,n n x n c x c y ,假设3位系数值分别为c(0)=2,c(1)=3和

c(2)=1,则可得LUT 如下: 0 0 0 1*0+3*0+2*0=0 0 0 1 1*0+3*0+2*1=2 0 1 0 1*0+3*1+2*0=3 0 1 1 1*0+3*1+2*1=5 1 0 0 1*1+3*0+2*0=1 1 0 1 1*1+3*0+2*1=3 1 1 0 1*1+3*1+2*0=4 1 1 1 1*1+3*1+2*1=6

步骤 Xt(2) Xt(1) Xt(0) Acc(t) 0 1 1 1 6 1 1 1 0 14 2

1

18

进行数值校验:

y==c(0)x(0)+c(1)x (1)+C(2)x(2)=18 √

图(3) 移位加法器DA 结构

3. FIR 滤波器的MATLAB 设计 3.1 设计函数

在MATLAB 信号处理工具箱中,提供了基于窗函数的FIR 数字滤波器设计函数。fir1是用窗函数法设计线性相位FIRDF 的工具箱函数,调用格式如下: hn=fir1(N, wc, ′ftype ′, window)

fir1实现线性相位FIR 滤波器的标准窗函数法设计。“标准”是指在设计低通、 高通、

带通和带阻FIR滤波器时,H d(ejω)分别取相应的理想低通、高通、带通和带阻滤波器,因此设计的滤波器的频率响应称为标准频率响应。

hn=fir1(N,wc)可得到6dB截止频率为wc的N阶(单位脉冲响应h(n)长度为N+1)FIR低通滤波器,默认(缺省参数windows)选用hammiing窗。其单位脉冲响应h(n)为h(n)=hn(n+1), n=0,1,2,…,N而且满足线性相位条件:h(n)=h(N-1-n)其中wc为对π归一化的数字频率,0≤wc≤1。当wc=[wc1, wc2]时,得到的是带通滤波器,其6 dB通带为wc1≤ω≤wc2。

hn=fir1(N,wc,′ftype′)可设计高通和带阻滤波器。

当ftype=high时,设计高通FIR滤波器;

当ftype=stop时,设计带阻FIR滤波器。

应当注意,在设计高通和带阻滤波器时,阶数N只能取偶数(h(n)长度N+1为奇数)。不过,当用户将N设置为奇数时,fir1会自动对N加1。

hn=fir1(N,wc,window)可以指定窗函数向量window。如果缺省window参数,则fir1默认为hamming窗。可用的其他窗函数有Boxcar, Hanning, Bartlett, Blackman, Kaiser 和Chebwin窗。这些窗函数的使用很简单(可用help命令查到),例如:

hn=fir1(N,wc,bartlett(N+1))使用Bartlett窗设计;

hn=fir1(N,wc,chebwin(N+1,R))使用Chebyshev窗设计。

hn=fir1(N,wc,′ftype′,window)通过选择wc、 ftype和window参数(含义同上),可以设计各种加窗滤波器。

Fir2可以指定任意形状的H d(ejω), 用help命令查阅其调用格式。

3.2 FDATOOL使用

fdatool(filter design & analysis tool)是matlab信号处理工具箱里专用的滤波器设计分析工具,fdatool可以灵活地采用不同方法设计几乎所有的经典滤波器,查看滤波器的各种指标,并得到所设计滤波器的系数。

在MATLAB的命令窗口输入:fdatool命令,会出现图(4)所示界面,界面总共分两大部分,一部分是design filter,在界面的下半部,用来设置滤波器的设计参数;另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。design filter部分主要分为:Response type(滤波器类型)选项,包括lowpass(低通)、highpass(高通)、ban dpass(带通)、bandstop(带阻)和特殊的fir滤波器。

design method(设计方法)选项,包括iir滤波器的butterworth(巴特沃思)法、cheby shev type i(切比雪夫i型)法、 chebyshev type ii(切比雪夫ii型)法、elliptic (椭圆滤波器)法和fir滤波器的equiripple法、least-squares(最小乘方)法、windo

w(窗函数)法。

filter order(滤波器阶数)选项,定义滤波器的阶数,包括specify order(指定阶数)和minimum order(最小阶数)。在specify order中填入所要设计的滤波器的阶数(n阶滤波器,specify order=n-1),如果选择minimum order则matlab根据所选择的滤波器类型自动使用最小阶数。

frequency specifications选项,可以详细定义频带的各参数,包括采样频率fs和频带的截止频率。它的具体选项由filter type选项和design method选项决定,例如bandpass (带通)滤波器需要定义fstop1(下阻带截止频率)、fpass1(通带下限截止频率)、fpa ss2(通带上限截止频率)、fstop2(上阻带截止频率),而lowpass(低通)滤波器只需

要定义fstop1、fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。

magnitude specifications选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义wstop1(频率fstop1处的幅值衰减)、wpass(通带范围内的幅值衰减)、wstop2(频率fstop2处的幅值衰减)。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。

window specifications选项,当选取采用窗函数设计时,该选项可定义,它包含了各种常用的窗函数类型。

图(4)滤波器设计分析界面

例:设计方法(Design Method)为FIR,采用窗口法(Window);

?滤波器阶数(Filter Order)定制为15;

?窗口类型为Kaiser,Beta为0.5;

?Fs为48 kHz,Fc为10.8 kHz。

设置好后的界面如图(5)所示。

图(5)设计界面

计算完FIR滤波器系数后,往往需要对设计好的FIR滤波器进行相关的性能分析,以便了解该滤波器是否满足设计要求。分析操作步骤如下:

(1)选择FDATool的菜单“Analysis”→“Magnitude Response”,启动幅频响应分析。图(6)显示了滤波器的幅频响应图,x轴为频率,y轴为幅度值(单位为dB)。在图的左侧列出了当前滤波器的相关信息:滤波器类型为Direct form FIR(直接I型FIR滤波器);滤波器阶数为15。

图(6)滤波器的幅频响应图

选择菜单“Analysis”→“Phase Response”,启动相频响应分析。图(7)显示了滤波器的相频响应。由图可以看到设计的FIR滤波器在通带内其相位响应为线性的,即该滤波器是一个线性相位的滤波器。

图(8)显示了滤波器幅频特性与相频特性的比较。这可以通过菜单选择“Analysis”→“Magnitude & Phase Response”来启动分析。

选择菜单“Analysis”→“Group Delay Response”,启动群延时分析,波形如图(9)所示。

图(7)相频响应

图(8)幅频响应与相频响应的比较

图(9) FIR滤波器的群延时

求出的FIR滤波器的系数可以通过选择菜单“Analysis”→“Filter Coefficients”来观察,见图(10)。图中列出了FDATool计算的15阶直接I型FIR滤波器的部分系数。

图(10) FIR滤波器系数

(5)量化

从图(10)可以看到,FDATool计算出的值是一个有符号小数,而FIR滤波器模型需要一个整数作为滤波器系数。所以必须进行量化,并对得到的系数进行归一化。为此,点击FDATool左下侧的工具按钮进行量化参数设置。在设置“Turn quantization on”前选择“√”,如图(11)所示。

图(12 )中显示了量化后的部分系数值。注意在这里系数仍是用小数表示的,不同于量化前的系数,现在其二进制表示的位数已满足量化要求。

图(11)量化参数设置

设计的FIR滤波器在量化后滤波器的性能会有所改变,其幅频响应、相频响应也有所变化。量化在带来实现方便的同时也带来了量化噪声,图()显示了量化带来的噪声分析。

图(12)量化后的噪声分析

(6)导出滤波器系数

为导出设计好的滤波器系数,选择FDATool菜单的“File”→“Export...”,打开导出(Export)对话框,如图(13)所示。在该窗口中,选择导出到工作区(Workspace)。这时滤波器系数就存入到一个一维变量Num中了,不过这时Num中的元素是以小数形式出现的: Num =-0.0742 0.0234 0.1133 0.0117 -0.1758 -0.0977 0.3594 0.8281 0.8281 0.3594 -0.0977 -0.1758 0.0117 0.1133 0.0234 -0.0742

图(13)导出系数对话框

现在若要在FIR滤波器模型中使用这些数据,还需要将它们转化为整数:在MATLAB主窗口的命令窗口中键入:

>>Num*(2^8)

得到:>>Num*(2^8)

ans=

Columns 1 through 10

-19 6 29 3 -45 -25 92 212 212 92

Columns 11 through 16

-25 -45 3 29 6 -19

计算出的系数可用于FIR滤波器设计中。

4. DDS信号发生器

DDS为直接数字频率合成技术,最初由美国学者J.Tierney等人于1971年提出,它是一种新颖的全数字实现技术,由于其具有频率转换时间短,频率分辨率高,相位噪声低以及在频率转变时保持相位连续等优点,在现代通信、雷达、航天航空等众多领域得到广泛应用。DDS的基本结构如图(14)所示。

图(14) DDS的基本结构

一个基本的DDS结构主要由相位累加器、相位调制器、正弦ROM查找表和D/A构成。图中的相位累加器、相位调制器、正弦ROM查找表是DDS结构中的数字部分,由于具有数控频率合成的功能,又合称为NCO(Numerically Controlled Oscillators)。

相位累加器是整个DDS的核心,在这里完成相位累加功能。相位累加器的输入是相位增

f是简单的线性关系,故相位累加器的输入又可称为频率字输入,量,又由于与输出频率

out

频率字输入在图(14)中还经过了一组同步寄存器,使得当频率字改变时不会干扰相位累加器的正常工作。

相位调制器接收相位累加器的相位输出,在这里加上一个相位偏移值,主要用于信号的相位调制,如PSK(相移键控)等。在不使用时可以去掉该部分,或者加一个固定的相位字输入。相位字输入也需要用同步寄存器保持同步。需要注意的是,相位字输入的数据宽度M 与频率字输入N往往是不相等的,M

正弦ROM查找表完成的查表转换,也可以理解成相位到幅度的转换,它的输入是相位调制器的输出,事实上就是ROM的地址值;输出送往D/A,转化成模拟信号。由于相位调制器的输出数据位宽M也是ROM的地址位宽,因此在实际的DDS结构中N往往很大,而M总为10位左右。M太大会导致ROM容量的成倍上升,而输出精度受D/A位数的限制未有很大改善。因此,在实际应用中,对于ROM容量的缩小,人们提出了很多解决方法。

5.SignalTap Ⅱ逻辑分析仪

随着FPGA设计任务复杂性的不断提高,FPGA设计调试工作的难度也越来越大,在设计验证中投入的时间和花费也会不断增加。为了让产品更快投入市场,设计者必须尽可能减少设计验证时间,这就需要一套功能强大且容易使用的验证工具。Altera SignalTap Ⅱ逻辑分析仪可以用来对Altera FPGA内部信号状态进行评估,帮助设计者很快发现设计中存在问题的原因。

Quartus Ⅱ软件中的SignalTap Ⅱ逻辑分析仪是非插入式的,可升级,易于操作且对Quartus Ⅱ用户免费。SignalTap Ⅱ逻辑分析仪允许设计者在设计中用探针的方式探查内部信号状态,帮助设计者调试FPGA设计。

SignalTap Ⅱ逻辑分析仪支持下面的器件系列:Stratix Ⅱ、Stratix、Stratix GX、Cyclone Ⅱ、Cyclone、APEX Ⅱ、APEX 20KE、APEX 20KC、APEX 20K、Excalibur和Mercury。在设计中嵌入SignalTap Ⅱ逻辑分析仪有两种方法:第一种方法是建立一个SignalTap Ⅱ文件(.stp),然后定义STP文件的详细内容;第二种方法是用MegaWizard Plug-InManager 建立并配置STP文件,然后用MegaWizard实例化一个HDL输出模块。

6.FIR滤波器IP核使用

QuartusII中提供了高性能FIR滤波器的IP core供设计人员使用。用户界面如图(15)所示。

FIR IP核有丰富的控制信号,详细说明如下:

7. 实验结果

用VHDL 语言设计分布式算法FIR 滤波器,并设置DDS 信号源的频率和相位控制字,使得输入到FIR 滤波器的激励信号相当于:)200sin()100sin()(t t t s ππ+=,即频率分别为50Hz 和100Hz 的两路正弦波的和信号,则经FIR 滤波器滤波后,通过嵌入式逻辑分析仪监测到的信号波形如图(16)所示。

图(16) 滤波结果1

图(16)中filterin 端口是DDS 信号源的输入信号,filterout 端口为FIR 滤波器的输出信号。从滤波结果可以看出信号滤波前后的时域波形有了很大的不同,原始信号中的两个频

率分量经滤波后只留下一个单频的正弦波分量。而当改变频率和相位控制字,使得DDS 信号源的输出信号相当于)48sin()96sin()(t t t s ππ+=,即频率为24Hz 和48Hz 两个正弦波的和信号,通过嵌入式逻辑分析仪监测到的信号波形如图(17)所示。

图(17) 滤波结果2

从图(17)中可以直观地看出信号时域输出波形在滤波前后没有发生什么变化,原始信号中两个频率分量依然存在。建立相同数据在MATLAB 中仿真,可得到一致结果,验证了设计的正确性。

相关主题