在对数字信号进行滤波时,在根据信号的特性计算出滤波器系数之后,还要考虑用何种结构来实现所设计的滤波器。通常,人们往往更注重滤波器系数的求解,而经常忽略滤波器的实现结构。理论上,相同的滤波器,采用不同的实现结构,其结果是完全相同的。但在工程实际中,不同的实现结构,结果可能相差很大。而且,在不同的应用场合,对滤波器的实现结构也有不同的要求。这些到底是为什么呢?
一方面,在理论分析中,有一个基本的假定即数据是无限精确的,但在实际的数字系统中,数是有限精度的,这也即是通常所说的字长有限。比如说,滤波器有一个系数是0.999,在实际的系统实现时,可能会量化为0.998985。这样,实际实现的滤波器与理论分析得到的滤波器性能会有所差别。另外,在不同的应用场合,对系统的运算速度要求不尽相同,对系统的造价要求也不尽相同,这时,也要尽量选择合适的实现结构。
那么,在工程实践中,到底哪些因素影响滤波器实现结构的选择呢?就一般的情况来看,主要有如下三个主要因素:运算复杂度、存储量需求和有限字长影响。
运算复杂度主要是指运算量的要求。在实时系统中,希望运算效率尽量高,在滤波器设计阶段,往往要求滤波器的阶数尽量低。在滤波器结构选择阶段,则是希望对于相同阶数的滤波器,所需的算术运算尽量少。比如说,在工程实际中,FIR滤波器通常要求线性相位,这时候滤波器的系数是对称的,如果直接用横向结构,所需的算术运算与FIR的阶数N成正比。但如果采用改进型的横向实现结构,充分利用系数的对称性,所需的算术运算与N/2成正比。这样,不同的实现结构其运算量就相差了一倍。
存储量需求主要设计到系统硬件资源的开销,从而影响系统的造价。在选择实现结构的时候,希望所要求的存储量尽量小。还是上面的这个例子,在两种不同的结构下,对滤波器系数的存储量要求也相差一倍。在滤波器系数不是很多的情况下,这样的差别可能关系不是很大,但如果滤波器系数很多,则对系统资源的开销差别就会比较明显。而且,在有些场合,比如雷达声纳等军事应用领域,价格因素相对不是很重要,但在手机等商业性竞争领域,价格因素是致命的,这时候系统资源的节约就有重要的价值。
有限字长的影响是滤波器实现结构选择时的另外一个非常重要的考虑。有些实现结构非常便于理解,也易于实现,可是对有限字长造成的影响非常敏感。比如说对IIR滤波器而言,如果极点位于单位圆附近,系统的量化误差很容易就会使极点从单位圆内变成单位圆外,从而导致系统的不稳定。这时候,采用对有限字长影响不敏感的实现结构就至关重要。
此外,是否易于并行运算以及是否能够实现流水线运算也常影响滤波器的实现结构。