在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,把模拟信号转化为数字信号;为了使信号处理能够不发生失真,信号的采样速度必须满足香农采样定理,一般取信号频率上限的4-5倍做为采样频率;一般可用速度较高的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换,因此由FPGA构成的FIR滤波器的输出须外接D/A模块。FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。
FIR滤波器的硬件实现有以下几种方式:
另一种是使用DSP芯片。DSP芯片有专用的数字信号处理函数可调用,或者根据芯片指令集的结构自行设计代码实现FIR的功能;由于FIR设计时其系数计算及其量化比较复杂,因此一般都采用MATLAB软件作为辅助设计,计算出FIR的系数;然后进行代码设计实现。实现FIR滤波器相对简单,但是由于程序顺序执行,速度受到限制。而且,就是同一公司的不同系统的DSP芯片,其编程指令也会有所不同,开发周期较长。
还有一种是使用可编程逻辑器件,FPGA/CPLD。FPGA有着规则的内部逻辑块阵列和丰富的连线资源,特别适合用于细粒度和高并行度结构的FIR滤波器的实现,相对于串行运算主导的通用DSP芯片来说,并行性和可扩展性都更好。
有限长单位冲激响应(FIR)滤波器有以下特点:
(1) 系统的单位冲激响应h (n)在有限个n值处不为零
设FIR滤波器的单位冲激响应h (n)为一个N点序列,0 ≤ n ≤N —1,则滤波器的系统函数为
H(z)=∑h(n)*z^-k
y(n)=∑h(m)x(n-m) ( 7.11)
将H (z)分解成实系数二阶因子的乘积形式
(7.12)
其中[N/2]表示取N/2的整数部分。若N为偶数,则N—1为奇数,故系数B2K中有一个为零,这是因为,这时有奇数个根,其中复数根成共轭对必为偶数,必然有奇数个实根。画出N为奇数时,FIR滤波器的级联结构,其中每一个二阶因子用横型结构。
这种结构的每一节控制一对零点,因而再需要控制传输零点时,可以采用它。但是这种结构所需要的系数B2k(I=0,1,2,k,=1,2,...,[N/2])比卷积型的系数h (n)要多,因而所需的乘法次数也比卷积型的要多。
在第三章中已说过,把一个有限长序列(长度为N点)的z变换H (z)在单位圆上作N等分抽样,就得到H (k),其主值序列就等于h (n)的离散傅里叶变换H (k)。那里也说到用H (k)表示的H (z)的内插公式为
(7.13)
这个公式就为FIR滤波器提供了另外一种结构,这种结构由两部分级联组成。
(7.14)
其中级联的第一部分为
(7.15)
则有
(7.16)
因而幅度响应为
幅角为
级联的第二部分为
(7.17)
可得到此一阶网络在单位圆上有一个极点
也就是说:此一阶网络在频率为
处响应为无穷大,故等效于谐振频率为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个并联谐振器与梳状滤波器级联后,就得到频率抽样结构。
频率抽样结构的特点是它的系数H (k)就是滤波器在ω=2πk / N处的响应,因此控制滤波器的频率响应很方便。但是结构中所乘的系数H (k)及WN都是复数,增加了乘法次数和存储量,而且所有极点都在单位圆上,由系数WN决定,这样,当系数量化时,这些极点会移动,有些极点就不能被梳状滤波器的零点所抵消(零点由延时单元决定,不受量化的影响)。系统就不稳定了。
用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点
随着个人音频的发展,曾经的IIR滤波器处理音频带来的音质劣化越来越受市场排斥。原有的IIR虽然具有简单,算量小,使用方便的特点,但精度并不足够,所以在专业音频,很多有FIR 4096的音频算法,例如拉脱维亚的Coneq等。
相反的WFIR滤波器
FIR用于音频的优势
劣势
2:FIR在其他领域主要解决高频问题,在音频应用常常遇到1Khz以下的信号,FIR至少需要FIR 512才能对1K以下产生作用
新的解决方案
包括FIR与IIR的混合使用,以及新型研发的音频专用VIR滤波器。