不得不用0.8125近似代替e?0.15,用0.25近似代替2(1?e?0.15)。下面将会看到,对于某些结构类型的滤波器(如,具有反馈支路的递归滤波器结构)来说,它们的零点和极点的位臵对于滤波器系数的变化特别敏感,因而滤波器系数由于量化误差引起的微小改变,有可能对滤波器的频率特性产生很大的影响。特别是在单位圆内且非常靠近单位圆的极点,如果由于滤波器系数的量化误差,而使这些极点跑到单位圆上或园外时,滤波器就失去了稳定性。
数的表示方法有定点制和浮点制。算术运算也分为定点运算和浮点运算。
定点制指的是数码中小数点的位臵固定不变。小数点左边各位是整数部分,而右边各位是小数部分。显然,小数点位于最低有效位右边,是纯整数情况;小数点位于二进制数中间任何位臵,是既有整数部分又有小数部分的情况;若小数点位于最高有效位左边,则是纯小数情况,这种情况下小数点左边是符号位。
定点运算中,一般不采用纯整数运算。因为两定点整数相乘得到的仍然是定点整数,其位数等于参加运算的两整数的位数之和。为了把和的位数限制到规定的字长,不得不采用截尾或舍入处理,这将造成无法容忍的误差。若将小数点固定在二进制数中间任何位臵,那么每次乘法运算之后都必须重新确定小数点在乘积中的正确位臵,显然这是很不方便的。定点纯小数不存在上述两方面的问题,因为两个定点纯小数的乘积仍然是定点纯小数,虽然乘积的位数也要增加,但截尾或舍入处理造成的误差不会很
大。此外,定点纯小数相乘的结果永远不会产生溢出。虽然定点纯小数相加有可能产生溢出,但这可通过乘以比例因子来避免。因此,定点运算中,通常都是用纯小数来参加运算。为此,在用二进制数表示之前,通常都要让十进制数乘以一个适当的比例因子,使它的数值限制在-1与1之间,即将它变成纯小数。
浮点制是将一个数表示成尾数和指数两部分。在浮点制运算中,不论是相乘还是相加,尾数的位数都可能超过寄存器长度,都要做尾数的量化处理,因而都有量化误差。
定点数其不足是动态范围小,且需要考虑加法运算中的溢出问题。而浮点制可以避免这两个缺点,它的动态范围大,可以避免溢出。
(3) 运算中的量化误差。在计算两个5位字长的二进制数的乘积时,需要用截尾或舍入的处理方法将乘积结果限制到5位字长。另外加、减运算也可能超出5位字长所表示的范围,即溢出。下面将会看到,在用定点运算实现递归结构的IIR数字滤波器时,有限字长效应(对乘积结果进行截尾或舍入处理以及溢出)有可能引起一种被称之为零输入极限环振荡的现象,使滤波器工作不稳定。
数的二进制编码形式有原码、反码和补码。
二进制编码长度比寄存器长度长时,要进行尾数处理,处理的方法有舍入法和截尾法。
量化误差的大小及性质与数的表示方法、二进制编码形式及具体尾数处理方法有关,更与寄存器的长度有关。另外系统的结构不同,将会明显地影响系统输出的量化误差。
上面列举的有限字长效应在三个方面造成的误差,与以下几个问题有关:①量化方式是截尾还是舍入;②负数用二进制数的原码表示还是用补码或反码表示;③算术运算是用定点运算还是用浮点运算;④采用什么类型的系统结构,如,对于数字滤波器来说,是采用IIR或是FIR,是采用高阶直接实现的结构还是采用由低阶节组成的级联结构或并联结构。 研究有限字长效应目的:
①若字长固定,进行误差分析,可知结果的可信度,否则若可信度差,要采取改进措施。
②用专用DSP芯片实现数字信号处理时,定点与硬件采用字长有关。
7.2 信号的量化误差
在实际应用中待处理信号往往都是一些模拟信号:声音、图像、电压、水流、气温、压力、心电图等。
借助A/D转换将模拟信号转变成数字信号,然后再进行后续的相关处理。如有必要再通过D/A转换,将数字信号还原为可听、可视的模拟信号。
在这种转换过程当中,时域采样是数字技术处理连续信号的重要环节。采样就是指利用“采样器”从连续信号中“抽取”信号的离散
序列样值,即称之为“采样”信号。“采样”也称“取样”、“抽样”。采样信号在时间上离散化了,但它还不是数字信号,还须经过量化编码才能转变为数字信号。即要将模拟信号抽样和量化,使之转换成一定字长的数字序列值信号。
数字序列值用有限长的二进制数表示
例如序列值(0.729156)10 =(0.101110101010101…)2, 若限制用八位二进制数来表示,则为(0.10111010)2,而(0.10111010)2=(0.7265625)10,那么,引起的误差为:0.729156-0.7265625=0.0025935,该误差称为量化误差。这是在二进制数的存储方面。
另一方面,在定点制的乘法以及浮点制的加法和乘法在运算结束后都会使字长增加,因而都需要再对尾数进行处理,其误差取决于所用的二进制的位数b、数的运算方式(定点制或浮点制)、负数的表示法以及对尾数的处理方法。
假设序列值用b+1位二进制数来表示,其中用1位来表示符号,用b位表示尾数,最小码位所表示的数值称为“量化步阶”或“量化宽度”,用△来表示,则q=2-b 。
如果二进制编码的尾数长于b,则必须要进行尾数处理,且处理成b位,也即量化。尾数处理有两种方法,即截尾法和舍入法。
截尾法是将尾数的第b+1位以及后面的二进制码全部略去。 舍入法是按最接近的值取b位值,即将第b+1位按逢1进位,逢0不进位,然后略去后面的b+1位。
显然这两种处理方法所引起的误差是不同的。
对于定点制二进制数的舍入法,原码、反码和补码的量化误差
ei是相同的,范围是:-q/2 对于截尾法,不同的编码其量化误差ei的范围也不相同: 定点制正数原码的量化误差ei的范围为:-q< ei ≤0; 定点负数原码的量化误差ei的范围为:0≤ ei 图7-1是定点制运算中的截尾误差和舍入误差特性。表7-1是定点制的截尾和舍入误差. (a)补码 (b)原码、反码 (c)舍入处理的量化特性 图7-1 截尾处理的量化特性(q=2-b) 表7-1 定点运算中的截尾和舍入误差(q=2-b) 正数 负数 原码 反码 截尾误差 -q