【7-8】有一1阶IIR数字滤波器,满足以下差分方程:
y(n)?0.75y(n?1)?0.21875
可以看出,该滤波器的系统函数为
111H(z)????1D(z)1?az?1 1?0.75zH(z)的极点z=0.75在单位园内,故该滤波器是一个稳定系统。由于输入信号是恒定值x(n)=0.21875,故经多次迭代计算后,滤波器输出将稳定在一个恒定值上,该恒定值用d表示,于是d=0.75d+0.21875 由此求出 d=0.21875/0.25=0.875
现用5位定点小数(不包括符号位)运算直接型结构来实现该数字滤波器,求滤波器的输出。
解:将题中给出的所有数据用5位字长的定点二进制数来表示 A=0.75=(0.11000)2 x(n)=0.21875=(0.00111)2 d=0.875=(0.11100)2 q=2-5=0.03125=(0.00001)2 D(1)=1-a=1-0.75=0.25=(0.01000)2
qq?y2?d?利用式d?2D(1)2D(1)可求出滤波器输出值所处的
数值范围或死带范围
0.8125 滤波器输出的常量在死带范围内取什么具体数值,取决于迭代运算的初始值y2(0)。下面讨论3种不同情况。 ⑴取y2(0)=0.78125=(0.11001)2 由式 y1(n)?0.75y(n?1)?0.21875?(0.11000))?(0.00111)2,这2y2(n?1是迭代计算公式 y1(1)?(0.11000))2?(0.11000))2?(0.1100111000)2 2y2(0)?(0.001112(0.11000)2?(0.00111(0.11010)取舍y1(1)后,得到y2(1)?2?0.8125 进入下次迭代: y1(2)?(0.11000))?(0.00111)2?(0.11000))2?(0.1101010000)2 2y2(12(0.11010)2?(0.00111(0.11011)取舍y1(2)后,得到y2(2)?2?0.84375 y1(3)?(0.11000))2?(0.11000))2?(0.00111)2?(0.1101101000)2 2y2(2)?(0.001112(0.11011(0.11011)取舍y1(3)后,得到y2(3)?2?0.84375 以下迭代结果便重复了,所以稳定的输出为恒定值 y2?(0.11011)2?0.84375 注意,这是比死带下界高一个量化间隔的数值,即 qy2?[d?]?q?0.8125?0.03125?0.84375 2D(1)⑵取y2(0)=0.96875=(0.11111)2 )?0.21875?(0.11000))?(0.00111)2,由式y1(n)?0.75y(n?12y2(n?1得 y1(1)?(0.11000))2?(0.11000))2?(0.00111)2?(0.1111001000)2 2y2(0)?(0.001112(0.11111(0.11110)取舍y1(1)后,得到y2(1)?2?0.9375 进入下次迭代: y1(2)?(0.11000))?(0.00111)2?(0.11000))2?(0.1110110000)2 2y2(12(0.11110)2?(0.00111(0.11110)取舍y1(2)后,得到y2(2)?2?0.9375 y1(3)?(0.11000))2?(0.11000))2?(0.1110110000)2 2y2(2)?(0.001112(0.11110)2?(0.00111 (0.11110)取舍y1(3)后,得到y2(3)?2?0.9375 以下迭代结果便重复了,所以稳定的输出为恒定值 y2?(0.11110)2?0.9375 注意,这是比死带上界的数值,即 ⑶取y2(0)=0.90625=(0.11101)2 )?0.21875?(0.11000))?(0.00111)2,由式y1(n)?0.75y(n?12y2(n?1得 y1(1)?(0.11000))2?(0.11000))2?(0.00111)2?(0.1110011000)2 2y2(0)?(0.001112(0.11101(0.11101)取舍y1(1)后,得到y2(1)?2?0.90625 进入下次迭代: y1(2)?(0.11000))?(0.00111)2?(0.11000))2?(0.00111)2?(0.1110011000)2 2y2(12(0.11101(0.11101)取舍y1(2)后,得到y2(2)?2?0.90625 y1(3)?(0.11000))2?(0.11000))2?(0.00111)2?(0.1110011000)2 2y2(2)?(0.001112(0.11101(0.11101)取舍y1(3)后,得到y2(3)?2?0.90625 以下迭代结果便重复了,所以稳定的输出为恒定值 y2?(0.11101)2?0.90625 输出值等于迭代计算的初始值。因此,滤波器的稳定输出值就是初始值y2(0)。 若选取y2(0)=0.8725=(0.11100)2,则有 y1(1)?(0.11000))2?(0.11000))2?(0.1110000000)2 2y2(0)?(0.001112(0.11100)2?(0.00111(0.11100)取舍y1(1)后,得到y2(1)?2?0.875 即稳定输出值还是等于初始值y2(0)。 从以上3种情况的计算结果可以得出结论:如果y2(n)是从一个比死区下界还低的一个初始值开始迭代运算,那么,滤波器的输出将稳定在比死区下界略高的数值上,这个数值比下界恰好高出一个量化间隔q;如果y2(n)是从一个比死区上界高的初始值开始迭代运算,那么,滤波器的输出将稳定在等于死区的上界;如果y2(n)是从死区内某个数值开始迭代,那么,滤波器的输出将稳定在初始值上。理论上的精确输出值d处在死区内部,因此,当初始值选取在死带外时,滤波器的稳定输出决不可能逼近位于死带内的精确值,而只能取死区的上界值或取比死区下界值大q的某个值。如果初始值选择到死区内任何一个数,那么,滤波器的稳定输出就等于所选的初始值,也不会等于精确值,除非很偶然地把精确输出值选成为迭代运算时y2(n)的初始值y2(0)。 7.6 定点运算IIR和FIR数字滤波器 误差分析 通过前面的讨论我们知道,系统的系数量化对零、极点位臵的改变,将导致系统频响特性的改变。利用零、极点位臵敏感度无法直接得到频响特性的偏差,尤其当系统为高阶的情况,其系数多且量化误差具有随机特点,所以可以将系数量化误差等效为随机变量,通过采用统计方法估计高阶系统的性能偏差。 实现数字滤波器所包含的基本运算有延时、乘系数和相加三种。 延时运算由寄存器来完成,并不造成字长的变化,而通常信号和滤波器的系数用有限字长定点二进制小数表示,因此,滤波器主要涉及乘系数和乘法、加法运算造成的影响。 定点小数相加后字长不会增加,因此无需进行截尾或舍入处理;定点小数相加的溢出问题可以通过乘以适当的比例因子的办法来解决。定点小数相乘没有溢出问题,但字长会增加,因此必须采用截尾或舍入处理。 每次进行定点小数乘法运算后,都会引入截尾或舍入噪声,并最终在滤波器输出端反映出来。 浮点制运算中,相加和相乘都有可能使尾数增加,故都会有舍入或截尾,引起运算量化误差,但不存在动态范围问题。 舍入或截尾的处理是非线性过程,分析起来非常麻烦,精确计算不仅不大可能,也没有必要,因而采用统计方法,得到舍入或截尾的平均效果即可。下面通过讨论运算中的有限字长效应来分别分析定点运算IIR和FIR数字滤波器误差情况。 一.有限字长定点运算IIR滤波器的误差分析 在定点制中,把定点乘法运算后的截尾或舍入处理过程模型化为在精确乘积上叠加一个截尾或舍入量化噪声。 根据叠加原理,滤波器输出端的噪声等于作用于滤波器结构中不同位臵上的量化噪声在输出端发生的响应的总和,这样仍可以用线性