在前面讨论好滤波器的标准的时候,主要是从滤波器的性能方面来考虑的。实际上,好滤波器的另外一个更高的标准在于满足性能要求的情况下效率要高。更多的时候,好的滤波器是性能与效率的折中。这是因为DSP的使命和任务主要在于实时处理,因此,必然要对运算效率有很高的要求。那么,怎么来衡量一个滤波器的效率呢?

   衡量滤波器效率最常用的标准是滤波器的阶数。在满足性能要求的条件下,滤波器阶数越低则效率越高。无论是FIR滤波器,还是IIR滤波器都是如此。当然,FIR滤波器的阶数和IIR滤波器的阶数是完全不同的概念。实现同样的性能,IIR滤波器所需的阶数要远低于FIR滤波器。从理论上来说,只要阶数足够高,FIR滤波器几乎能满足任何的性能要求。但随着阶数的增加,运算效率越来越低。因为FIR滤波是基于卷积运算的,虽然卷积可用FFT来快速实现,但随着点数的增加,时间的开销还是相当之大,很难满足实时性的要求。IIR滤波器的效率要远高于FIR滤波器,但IIR滤波器由于稳定性及相位的非线性等问题,限制了它的应用。

   衡量滤波器效率的第二个标准在于滤波器的实现结构,这点则通常为人们所忽略。实际上,在阶数相同的情况下,不同的实现结构,运算效率可能相去甚远。比如FIR滤波器来说,最简单,也是最普通的实现结构是横向结构。这种结构的运算效率比较低。如果FIR滤波器系数中含有比较多的0,则采用频率采样结构,多相结构对效率会有比较大的提高。另外,还可根据滤波器系数和具体DSP的结构,选用串联结构、并联结构,格型结构等不同的实现结构,以使运算效率最高。对IIR滤波器也一样,有多种实现结构,要根据具体的情况选择。

   在滤波器设计过程中,实际上也包含着这么两个过程。一是滤波器系数的设计。这是一般教科书上介绍比较多的,有一些比较成熟的思路,比如FIR滤波器的窗函数设计法,IIR的双线性变换法等。另外一个过程是设计滤波器的实现结构。当然,在具体编程时,充分发挥所用DSP的特性,也在一定程度上影响最终的效率,这就是另外一个层面的问题了。

posted on 2015-04-13 23:58  士兵突击  阅读(957)  评论(0编辑  收藏  举报