FIR滤波器的原理及设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
选题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=
图(3) 移位加法器DA 结构
3. FIR 滤波器的MATLAB 设计 3.1 设计函数
在MATLAB 信号处理工具箱中,提供了基于窗函数的FIR 数字滤波器设计函数。fir1是用窗函数法设计线性相位FIRDF 的工具箱函数,调用格式如下: hn=fir1(N, wc, ′ftype ′, window)
fir1实现线性相位FIR 滤波器的标准窗函数法设计。“标准”是指在设计低通、 高通、