频率为零的振荡。对于滤波器系数为-0.625的情形,可以进行类似的讨论,它的极点位臵由z=-0.625变为z=-1。
振荡幅度用A表示,它的大小与量化字长和滤波器系数的数值有关,下面就来推导这一关系。
一般情况下的1阶IIR滤波器的差分方程为
y(n)??y(n?1)?x(n)
现用b位字长(不包含符号位)的定点运算来实现该系统,乘积
?y(n?1)运算结果先经过舍入处理,然后才与x(n)相加。舍入误差
的数值范围是
qQR[?w(n?1)]??w(n?1)?
2其中,q是量化间隔,q?2。进入极限环振荡后,有
?bQR[?w(n?1)]?w(n?1)代入上式得
qw(n?1)??w(n?1)?2qw(n?1)1???
2所以
q2w(n?1)??2(1??)1???b?1
式中,w(n?1)就是震荡幅值A。可以看出,在字长b一定的条件下,
?越小,A就越小;而在α一定的条件下,字长b越长,A就越小。
如上例A≤2-4/(1-0.625)=1/6,比1/6还小的3位定点小数的量化值是1/8。这与上例是一致的。
极限环振荡的产生是有条件的。对于1阶IIR滤波器来说,由式
q2w(n?1)??2(1??)1???b?b?1
看出,如果振幅的数值小于一个量化间隔q?2,那么,用b位定点小数来表示的振幅将是零。这就意味着,滤波器的输出衰减为零,即不会出现极限环振荡现象。因此,1阶IIR滤波器不产生极限环振荡的条件是
qw(n?1)??q 2(1??)1?(1??) 2由此得出 ??1 2这意味着,只要滤波器系数的绝对值不超过0.5,一阶IIR滤波器无论用多短的字长来实现都不会产生极限环振荡。
二.死带效应
死带效应是与极限环振荡密切相关的一种现象。设有一个IIR数字滤波器,它的系统函数为
N(z)H(z)??D(z)?bzkk?0Nk?1M?k1???kz?kM
该滤波器的直接型结构按以下差分方程来实现
y(n)???ky(n?k)??bkx(n?k)
k?1k?0N设H(z)的全部极点都在单位园内,因此该滤波器是稳定的。假设所有系数和信号都能无限精确地表示,所有运算也是无限精确的,那么,在输入x(n)=c(常数)时,滤波器的输出y(n)将收敛于常数d。在这种情况下,式y(n)???Nk?1ky(n?k)??bkx(n?k)变成
Mk?0d?d??k?c?bkk?1k?0NM
由此得出
d?c?bk1???kk?1k?0NM?cH(1)
以上是理论上的计算。实际上,所有系数ak、bk和输入信号都是用b+1位定点二进制数表示的,所有定点乘法运算后都要进行舍入处理,也可以将所有全精度乘积累加并与c?bk求和之后再进行舍入
k?0M处理。假设采用后一种运算方法。具体来说,计算过程用下式来表示:
y1(n)???ky2(n?k)?c?bkk?1k?0NM
关于该式的来源可做如下说明:两个b位二进制数(不含符号位)ak与
y2(n?k)相乘,得到全精度(字长2b位)乘积,对应于不同k值的这些全精度乘积累加后,与另一个全精度积c?bk求和后得到字长2b
k?0M位的输出,用y1(n)表示。对y1(n)进行舍入处理,使之从2b位变成b位,舍入处理结果y2(n)被存储器起来,它是滤波器的有效输出,同时也是下次迭代运算的已知数据。
按式y1(n)???ky2(n?k)?c?bk进行工程计算时,由于有限字长效
k?1k?0NM应,滤波器的输出会产生误差,但假设滤波器的稳定性仍然没有遭到破坏。就是说,随着迭代运算的进行,滤波器存储的输出值y2(n)逐渐趋近某个稳定值y2,它与理想的稳定输出d之间存在着误差e,即
y2?d?e
y2是b位字长的量化值,即y2一定是q?2的倍数。
当存储的滤波器输出为稳定值y2时,根据式y1(n)???ky2(n?k)?c?bkk?1k?0NM?b可算出双精度输出y1(n)为
y1(n)???ky2(n?k)?c?bk???k(d?e)?c?bk?d??k?e?ak?c?bkk?1k?0k?1k?0k?1k?1k?0NMNMNNM
根据d?d??k?c?bk可以看出,上式右端第一和第三项之和就是
k?1k?0NM滤波器的理想输出d。因此,上式变成
y1(n)?d??k?c?bk?e?ak?d?e?ak
k?1k?0k?1k?1
NMNN
对上式右端同时加减e,并利用y2?d?e。得到
y1(n)?d?e?e?e?ak?y2?e(1??ak)?y2?eD(1)
k?1NNNk?1其中 D(1)?1???k
k?1qq如果 ??eD(1)<
22那么,从式y1(n)?y2?eD(1)可以看出,y1(n)将舍入为y2。当
qqD(z)的全部根均在单位园内时,D(1)为正值,故??eD(1)<可
22qq?e?写成?,由y2?d?e可得
2D(1)2D(1)qqd??y2?d?2D(1)2D(1)
且存储的连续N个输出都为y2时,则存储的输出y2(n)将一直保持为恒定值y2。上式所表示的区间称为死带。死带的宽度与D(1)成反比。对于窄带低通滤波器,由于它的极点聚集在z=1附近,D(1)的值非常小,且滤波器的阶越高,D(1)的值越小,因此,高阶窄带低通滤波器的死带很宽,往往为量化间隔q的若干倍。所以,对于2阶以上的IIR数字滤波器,通常应避免采用直接型结构来实现。
qq?y2?d?式d?2D(1)2D(1)说明,滤波器的理论输出值d位
于死带内,滤波器的实际输出值y2在死带内不再改变。
下面的例子将进一步说明,滤波器的实际输出值在死带内取什么具体数值,是由迭代运算中y2(n)的初始值y2(0)来决定的。