韩 建 魏运锋 谈卿瑕 赵晓丹
(1.东北石油大学电子科学学院,黑龙江 大庆 163318;2.大庆油田公司,黑龙江 大庆 163318)
数字滤波器主要有无限冲激响应数字滤波器(Infinite Impulse Response Digital Filter,IIR数字滤波器)和有限冲激响应数字滤波器(Finite Impulse Response Digital Filter,FIR数字滤波器)[1]。与FIR数字滤波器相比,要实现同样的衰减特性,IIR数字滤波器的阶数比FIR滤波器要低,通常也消耗较少的硬件资源,对于不要求线性相位的场合,IIR滤波器则更为适合[2]。
笔者采用FPGA技术,应用硬件描述语言实现IIR数字滤波器的设计。基于其串联网络结构的特点,先实现低阶数字滤波器,再串联实现高阶数字滤波器。根据设计的数字滤波器系数,结合研究算法,在Quartus II软件环境下,对程序进行了仿真,仿真结果初步说明了算法程序的有效性。
实现高阶的IIR数字滤波器,可通过实现低阶的IIR数字滤波器,然后串联得到高阶IIR数字滤波器的方法。笔者设计是六阶IIR数字滤波器,要实现该滤波器,可根据系数先实现二阶IIR数字滤波器[3]。一个二阶的IIR滤波器的系统函数如下:
为了编程方便,把a0化为1,并且采用二阶IIR滤波器的转置网络结构,如图1所示。

图1 二阶IIR滤波器的转置网络结构
笔者实现IIR数字滤波器采用定点数制。为了避免计算中数据溢出和数据截短造成的计算错误,对数据的表示和处理进行了如下规定。
输入和输出数据用17位定点数表示,最高位为符号位,最后4位为小数部分,中间的12位为整数部分[4]。
系数用14位定点数来表示,由于最小量化单位为1/4096,定点数的格式是最高位为符号位,接下来一位为整数位,剩下的12位为小数位,该格式可以表示的数的范围是-2~2。……