FIR 滤波器设计方案
Designer
yaoguaiws
FIR滤波器的基本结构
横截型(卷积型、直接型)<Direct-type>
FIR滤波器的差分方程表达式为:
很明显,这就是线形时不变系统的卷积和公式,也就是x[n]的延时级联的横向结构,如下图所示:
由于线形相位FIR滤波器的系数是镜像对称的,所以N阶滤波器系数只需要个储存单元即可。而输入x[n]的值需要N个储存单元,这样总共就需要个储存单元。
级联型<Cascade-type>
将H(z)分解成实系数二阶因子的乘积形式:
图中画出了一个FIR滤波器的级联结构,其中每一个二阶因子用一个横截型来表示:
这种结构的每一节控制一对零点,因而在需要控制传输零点时可以采用它。但是这种结构所需要的系数比卷积型的系数h[n]要多,因而需要更多的储存单元。理论上需要个单元储存系数,再加上各单元储存中间结果,结果一共需要个储存单元。
频率抽样型<Decimation-type>
把一个N店有限长序列的z变换H(z)在单位圆上作N等分抽样,就得到,其主值序列就等于h(n)的离散傅里叶变换。即H(z)的内插公式为:
这个公式就为FIR滤波器提供了另外一种结构,这种结构由两部分组成。
其中的第一部分为(这是一个FIR子系统,是由N节延时单元构成的梳状滤波器):
级联的第二部分为(这是一个由N个一节网络并联而成的IIR子系统):
频率抽样型的结构如图所示:
该系统需要2N个储存单元用来缓存输入的数据,N个储存单元用来储存系数,一共需要花费3N个储存单元。
量化误差分析
理论设计的FIR滤波器系数都是无限精度的,当他们有硬件实现时,必须要量化,这必然引起量化误差。这也就使得理论滤波器和实际滤波器存在一些性能上的差别<由于FIR滤波器只有z=0只一个极点,他在单位圆内,不会出现系统的不稳定,这还算Lucky! >
系数的量化误差对系统的影响,不仅仅和量化字长有关,更是和滤波器的结构密切相关的!
分析:
假设为理论系数,为量化系数,为量化误差,则有:
可以得到由于各的偏差引起的第i个零点位置变化量为(推导过程见:《》):
上式分母中的每一个因子是由一个零点指向的矢量,而整个分母正是所有其它零点指向该零点的矢量积。当系统的零点非常密集时,他们互相的矢量长度就很短,矢量积就更小,就较大。
高阶直接型滤波器的零点数目多而密集,而低阶直接型滤波器的零点数目少而稀疏,因而前者对系数的量化误差要敏感得多。
实现方案比较
Direct-type
使用储存单元最少,但是由于阶数很高,所以零点非常密集,系数的量化误差对零点的影响较大,必须要通过增加系数的量化字长来确保系统的正确。
Cascade-type
使用的储存单元较多,但是由于每一个子系统都是二阶系统,故量化误差对整个系统的影响较小,可以使用较短的系数量化字长。
Decimation-type
使用的储存单元较多,由于每一个并联的二阶字系统的误差值对自身影响,故该结构的整个系统误差最小。但是由于引入了IIR系统,故在系数量化的时候,必须是极点量化在单位圆之内,否则将使系统不稳定。
指标:
采样频率系数量化字长
通带截止频率阻带截止频率
通带纹波系数阻带衰减
在右上角的幅频特性曲线图(经放大)中,我们可以看到,系数经过量化后,会对幅频特性产生一定的影响。但是由于量化比特数非常的高,所以影响不是太大,能符合我们的设计指标。右下角展示了量化过后的系数对零极点的影响。
设计方案
由于要求是硬件最少,并且最优,我们采取第一种方案,即:系数高bit量化的直接型结构。由于FIR滤波器的系数镜像对称,故将线形相位FIR滤波器的流图改造成如下格式:
在上结构中,每一个乘加单元<MAC>都是将镜像对称的两个值进行MAC运算。所以我们在实现输入值x[n]的缓冲时,将缓冲设置成两个镜像对称的缓冲器<top-buffer & buttom-buffer>。这样在实现累加时两个buffer可以共用一个指针减计数器<decrementor>(采用减计数器,而不采用加计数器的原因将会在后续的时序关系中得到解释),而不必要使用一个指针加计数器<incrementor>和一个指针减计数器<decrementor>,或者让系数ROM的指针变量产生复杂的运动,这能简化时序设计的复杂性,同时也就节约了硬件;并且采用用镜像对称buffer,再不额外增加硬件的同时,可以降低时钟一半的频率,这是非常重要的。虽然增加了一个(24+1)-bit加法器,但是同时也减少了ROM中的计数器(资源共享原理将在ROM模块介绍),并且换来上述的优化设计。
在上述的原理框图中我们可以看到,所有的M
基于FPGA的FIR滤波器 来自淘豆网m.daumloan.com转载请标明出处.