购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 有限字长效应

3.3.1 字长效应的产生因素

数字信号处理的实质是一组数值运算,这些运算可以在通用数字计算机上用软件实现,也可以用专门的硬件实现。无论哪种实现方式,数字信号处理系统的一些系数、信号序列的各个数值及运算结果等都要以二进制的形式存储在有限字长的存储单元中。如果处理的是模拟信号,如常用的抽样信号处理系统,输入的模拟量经过抽样和A/D转换后,变成有限字长的数字信号,那么有限字长的数就是有限精度的数。因此,在具体实现中往往难以保证原设计精度而产生误差,甚至导致错误的结果。在数字信号处理系统中主要有如下三种由有限字长而引起误差的因素。

模/数(A/D)转换器把模拟输入信号转换成一组离散电平时产生的量化效应。

用有限位二进制数表示系数时产生的量化效应。

在数字运算过程中,为限制位数进行的尾数处理和为防止溢出而压缩信号电平的有限字长效应。

引起这些误差的根本原因在于寄存器(存储单元)的字长有限。误差的特性与系统的类型、结构形式、数字的表示方法、运算方式及字的长短有关。在通用计算机上,字长较长,量化步长很小,量化误差不大,因此用通用计算机实现数字系统时,一般可以不考虑有限字长效应。但用专用硬件(如FPGA)实现数字系统时,其字长较短,就必须考虑有限字长效应。

3.3.2 A/D转换的字长效应

从功能上讲,A/D转换器可简单分为抽样和量化两部分,抽样将模拟信号变成离散信号,量化将每个抽样值用有限字长表示。抽样频率的选取直接影响A/D转换的性能,根据奈奎斯特定理,抽样频率至少需要大于或等于信号最高频率的2倍,才能从抽样后的离散信号中恢复原始的模拟信号,且抽样频率越高,A/D转换的性能越好。量化效应可以等效为输入信号为有限字长的数字信号,其等效模型如图3-6所示。

图3-6 A/D转换的等效模型

根据图3-6所示的模型,量化后的取值可以表示成精确取样值和量化误差之和,即

该模型基于以下几点假设。

e n )是一个平稳的随机取样序列。

e n )具有等概分布特性。

e n )是白噪声过程。

e n )和 x n )是不相关的。

由于 e n )具有等概分布特性,舍入误差的概率分布如图3-7(a)所示,补码截尾的概率分布如图3-7(b)所示,原码截尾的概率分布如图3-7(c)所示。

图3-7 量化误差概率分布

在以上三种概率分布中,误差信号的均值和方差分别如下所述。

舍入时:均值为0,方差为δ 2 /2。

补码截尾时:均值为-δ/2,方差为δ 2 /12。

原码截尾时:均值为0,方差为δ 2 /3。

这样,量化过程可以等效为在无限精度的数上叠加一个噪声,其中,舍入操作得到的信噪比(量化信噪比)的表达式为

从式(3-13)可以看出,舍入后的字长每增加1位,SNR约增加6dB。那么,在数字信号处理系统中选取字长是否越长越好呢?其实选取A/D转换的字长主要考虑两个因素:输入信号本身的信噪比和系统实现的复杂度。由于输入信号本身有一定的信噪比,因此字长增加到A/D转换器量化噪声比输入信号的噪声电平更低就没有意义了。随着A/D转换字长的增加,数字系统实现的复杂程度也会急剧增加,特别是采用硬件系统实现时,这一问题显得尤其突出。

3.3.3 数字滤波器系数的字长效应

文献[2]对字长效应在数字滤波器系统设计中的影响进行了详细的理论分析,对于工程设计与实现来说,不必详细了解严谨的理论推导过程,但起码需要了解字长效应对系统设计中定性的影响、相应的指导性结论,并在实际工程设计中最终通过试验仿真来确定最佳的运算字长参数。

对于硬件系统来说,在设计常用的FIR滤波器或IIR滤波器时,按理论设计方法或MATLAB软件仿真设计出来的滤波器系数可以看成无限精度的。但在实际实现时,数字滤波器的所有系数都必须用有限长的二进制码表示,并存放在存储单元中,即对理想的系数值进行量化。我们知道,数字滤波器系数直接决定了系统函数的零/极点位置和频率响应,因此,由于实际系数存在的误差,必将使数字滤波器的零/极点位置发生偏移、频率响应发生变化,从而影响数字滤波器的性能,甚至严重到使单位圆内的极点位置偏移到单位圆外,造成数字滤波器的不稳定。系数量化对数字滤波器性能的影响与字长有关,也与数字滤波器结构有关。对各种结构的数字滤波器分析系数量化的影响比较麻烦,感兴趣的读者请参见文献[2]中的相关内容。下面给出一个实际的例子,通过MATLAB来仿真系数量化对数字滤波器性能的影响。

例3-2:MATLAB软件仿真二阶数字滤波器的频率响应。

用MATLAB软件仿真二阶数字滤波器的频率响应,以及极点因量化位数变化而产生的影响,画出8bit量化后与原系统的频率响应图,列表对比随量化位数变化而引起的系统极点的变化。二阶数字滤波器的系统函数为

该实例的MATLAB源程序文件为E3_2_QuantCoeff.m,源代码请参考本书的配套开发资源包中的内容,下面直接给出仿真程序运行的结果。

从表3-6中可以看出,随着量化位数的减小,偏离原系统的极点值越来越大,对于本实例的系统来说,当量化位数小于7位时,系统的极点已在单位圆外,不再是一个因果稳定系统了;从图3-8中也可明显地看出量化后系统的频率响应与原系统响应的差别。

表3-6 量化系数前后的系统极点

图3-8 系统量化前后的频率响应图

3.3.4 滤波器运算中的字长效应

对于二进制数运算来说,定点数的加法运算虽然不会改变字长,但存在数据溢出的可能性,因此需要考虑数据的动态范围。定点数的乘法运算显然存在字长效应,因为2个 B 位字长的定点数相乘,要保留所有有效位需要使用2 B 位字长的数据,数据截尾或舍入必定会引起字长效应。在浮点数运算中,乘法或加法运算均有可能引起尾数位的增加,因此也存在字长效应。一些读者可能会问,为什么不能增加字长来保证运算过程不产生截尾或舍入操作呢?这样虽然需要增加一些寄存器资源,但毕竟可以避免因截尾或舍入而带来的运算精度下降甚至运算错误。对于没有反馈的系统,这样理解也未尝不可。对于数字滤波器或较为复杂的电路系统来说,通常会用到反馈网络,这样每次闭环运算都会增加一部分字长,循环运算下去势必要求越来越多的寄存器资源,字长的增加是单调增加的,也就是说,随着运算的持续,所需寄存器资源是无限增加的,实现这样的系统显然是不现实的。

考虑一个一阶数字滤波器,其系统函数为

在无限精度运算的情况下,其差分方程为

在定点数运算中,每次乘加运算后都必须对尾数进行舍入或截尾处理,即量化处理,而量化过程是一个非线性过程,处理后相应的非线性差分方程变为

例3-3:用MATLAB软件仿真一阶数字滤波器输入信号响应。

用MATLAB软件仿真式(3-17)所示的一阶数字滤波器输入信号响应结果,输入信号为7 δ n )/8, δ n )为冲激信号。仿真原系统、2bit、4bit、6bit量化运算结果的输出响应结果,并画图进行对比说明。

该实例的MATLAB源程序请参考本书的配套程序资料,图3-9所示为一阶数字滤波器的量化运算结果。从仿真结果可以看出:进行无限精度运算时,输出响应逐渐趋近于0值;运算过程经量化处理后,输出响应在几次运算后在固定值处来回振荡;量化位数越少,振荡的值越大。

图3-9 一阶数字滤波器的量化运算结果 QJtoX+Z60M6hVYr6OuebQ/BaTj59I3+VmFi6fqkfIXbboiKxY4MNAgxl/nj3NKDD

点击中间区域
呼出菜单
上一章
目录
下一章
×