第9章数字信号处理的实现本章主要内容9.0引言9.1数字信号处理中的量化效应9.1.1量化及量化误差 9.1.2A/D变换 器中的量化效应9.1.3数字系统中的系数量化效应1.系数量化对系统频率特性的影响 2.极点位置敏感度 9.1.4数字系 统中的运算量化效应 9.2数字信号处理技术的软件实现 9.3数字信号处理的硬件实现简介 9.0引言 数字系统的实现方法 :1、软件实现:按照设计的软件在通用计算机上实现。2、硬件实现:按照设计的运算结构(如结构流图、差分方程),利用加法器、乘法器 和延时器等组成专用设备,完成特定的信号处理算法。或利用数字信号处理专用芯片实现。数字系统的一般设计与实现过程:1、理论设计得到 系统函数或者差分方程;2、设计一种具体算法,进行实现。例如,第五章介绍的各种网络结构,均代表一种具体算法,根据这些具体算法才能 设计软件或硬件进行实现。9.0引言网络结构的性能描述参数:存储量:为存储系统参数、中间计算结果以及输入输出信号值等要求 的存储量。计算复杂性:乘法次数、加法次数、来回取数存数次数以及两数之间的比较次数等。处理速度:与硬件本身的速度和计算复杂性有 关。还有计算误差、设备成本,等。计算误差主要来源于有限字长效应,它是数字信号处理实现中特有的重要问题。因此需要研究各种网络结构 对有限字长效应的敏感程度,以及为给定的运算误差所需要的字长等。9.1数字信号处理中的量化效应9.1.1量化及量化误差量化 :用有限位二进制数表示一个无限精度的量(如A/DC);尾数处理:数字信号处理实现时,信号序列值、运算结果及参加运算的各个参数都必 须用二进制的编码形式存贮在有限长的寄存器中,如果该编码长度长于寄存器的长度,需要进行尾数处理;运算中,二进制乘法会使位数增多 ,也需要进行尾数处理。尾数处理也属于量化,其量化对象一般为精度更高的数据;而A/DC的对象一般为模拟量量化、尾数处理(截尾, 四舍五入)量化误差量化误差是因为用有限位二进制数表示序列值形成的误差,称为量化误差。量化误差产生的 原因是用有限长的寄存器存贮数字引起的,因此也将这种误差引起的各种效应称为有限寄存器长度效应(有限字长效应)。9.1.1量化 及量化误差例如,x=0.8012,用二进制表示为:(0.1100110101…),用7位二进制表示:(0.110011), 对应的十进制为:0.796875,量化误差值为:0.8012-0.796875=0.004325数字信号处理技术实现中的量 化效应:A/DC中量化效应;数字网络中参数量化效应;数字网络中运算量化效应;FFT中量化效应等。9.1.1量化及量化 误差量化效应在数字信号处理技术实现时,都是很重要的问题,一直受到科技工作者的重视,并在理论上进行了很多研究。随着科学技术的飞速 发展,主要是数字计算机的发展,计算机字长由8位、16位、32位提高到64位;一些结合数字信号处理特点发展起来的数字信号处理专用芯片 近几年来发展尤其迅速,不仅处理快速,字长达到32bit、64bit;另外,高精度(如12位、16位)的A/D变换器也已商品化。随 着计算字长的大大增加,量化误差大大减少了,因此,对于处理精度要求不高,计算字长较长的一般数字信号处理技术的实现时,可以不考虑这些量 效应。但是对于要求成本低(如8位字长),并用硬件实现,或者要求高精度的硬件实现时,这些量化效应问题亦然是重要问题。9.1.1 量化及量化误差用b+1位二进制数表示(量化)信号值1位表示符号,b位表示小数部分;量化阶(或量化步长):b+1位二进制数 能表示的最小单位用q表示,。对于超过b+1位的部分进行尾数处理。尾数处理的两种方法:舍入法:将尾 数第b+1位按逢1进位,逢0不进位,b+1位以后的数略去;截尾法:将尾数第b+1位及其后的数码略去。显然这两种处理方法的误差会 不一样。9.1.1量化及量化误差表示,如果信号值量化后用表示,量化误差用也是随机的,经常将称为量化噪声。一般是随机信号,那么不 相关的平稳随机序列,且是具有为便于分析,一般假设是与均匀分布特性的白噪声。设采用定点补码制,截尾法和舍入法的量化噪声概率密度曲线分 别如图9.1.1(a)和(b)所示。截尾法的统计平均值为,方差为舍入法的统计平均值为0,方差也为这里图9.1.1量化噪声e(n) 的概率密度曲线结论:字长愈长,量化噪声方差愈小。9.1.1量化及量化误差量化的数学模型:式中,round为MATLAB函数, round[x]表示对x四舍五入后取整,表示x包含量化阶q的个数,所以就是量化后的数值。x可以是标量、向量和矩阵。将数取整的方法有 四舍五入取整、向上取整、向下取整、向零取整,对应的MATLAB取整函数分别为round(x)、ceil(x)、floor(x)、f ix(x)。round最常用,对应的MATLAB量化语句为xq=qround(x/q)。例如,x=0.8012,b=6,量化程序 如下:x=0.8012;b=6;q=2^-b;%计算量化阶qxq=qround(x/q)%对 x舍入值量化e=x-xq%计算量化误差e运行结果:xq=0.796875,e=0.0043259. 1.2A/D变换器中的量化效应A/D变换器的功能原理图如图9.1.2(a)所示,图中, 量化编码后的输出未量化的二进制编码用表示,那么量化噪声为:因此A/D变换器的输出为考虑A/D变换器的量化效应,其统计模型如图9. 1.2(b)所示。这样,由于e(n)的存在而降低了输出端的信噪比。(9.1.2)统计模型A/DC变换器功能原理图图9.1. 2A/DC功能原理图及统计模型9.1.2A/D变换器中的量化效应假设:A/D变换器输入信号不含噪声,输出信号中仅考虑量化噪声 的平均功率的平均功率则,出信噪比(9.1.3a)用dB数表示:A/D变换器采用定点舍入法,的统计平均值的方差将代入(9.1.3 a)式,得到:9.1.2A/D变换器中的量化效应(9.1.3b)此式表明:(1)A/D变换器的位数b愈大,信噪比愈高;(2 )每增加一位,输出信噪比增加约6bB;(3)输出信噪比也和输入信号功率有关,为增加输出信噪比,应在A/D变换器动态范围中,尽量提 高信号幅度。信号越小,S/N越小。所以,工程上常用非线性量化,以提高小信号量化信噪比。如A律量化等。如果对输出端信噪比提出要求, 根据(9.1.3b)式可以估计对A/D变换器的位数要求。设服从标准正态分布,A/D变换器的动态范围为,我们知道,对于正态分布,的 幅度落入以外的概率很小,可以忽略。为充分利用其动态范围,取,代入(9.1.3)式,得9.1.2A/D变换器中的量化效应如 果要求,由上式计算出如果要求,则注意:(1)增加A/D变换器的位数,会增加输出端信噪比,但A/D变换器的成本也会随位数b增加而 迅速增加;(2)输入信号本身有一定的信噪比,过分追求减少量化噪声提高输出信噪比是没有意义的。因此,应根据实际需要,合理选择A/ D变换器位数。9.1.2A/D变换器中的量化效应b位A/D变换器的MATLAB量化函数quant:输入最大幅度为±1V的b位 A/D变换器,根据舍入量化模型(9.1.1)式,可以写出b位A/D变换器的MATLAB量化函数quant: functiony= quant(x,b,V) ifnargin<3V=max(abs(x));end%缺省V,则默认V等于x的最大值 ax= abs(x);%去掉负号 q=V/(2^b-1);%计算量化阶q xq=qround(ax/q);% 对|x|舍入值量化 y=sign(x).xq;%加入负号,恢复带负号的量化值y函数功能:可以对带负号的数据x进行A /D变换,x可以是标量、向量和矩阵。应当注意:上述A/DC采用的是线性量化,其缺点是小信号的量化信噪比低。为了改善小信号的量化信 噪比,实际中常常采用非线性量化。9.1.3数字系统中的系数量化效应系统对输入信号进行处理时需要若干参数或者说系数,如系统函 数的分子分母多项式系数,差分方程系数。系数存储在有限位数的寄存器中系数的量化误差 可能使系统函数的零、极点位置偏移会使系统的频率响应偏离理论设计的频率响应 ,不满足实际需要。量化误差严重时,极点移到单位园上或者单位园外,造成系统不稳定。9.1.3数字系统中的系数量化效应6阶椭圆带 通滤波器的直接型结构系数量化前后的零极点分布图和频响特性曲线分别如下图所示。零极点分布图频响特性曲线9.1.3数字系统中的系数 量化效应6阶椭圆带通滤波器的级联型结构系数量化前后的零极点分布图和频响特性曲线分别如下图所示。二者量化字长相同。由图可见:系数 量化效应不但与寄存器的长度有关,而且和系统的结构有关,有的结构对系数的量化误差不敏感,有的却很敏感。所以,研究各种结构对系数量化 误差的敏感度有重要意义,为我们在实际中选取系统结构提供理论指导!。零极点分布图频响特性曲线9.1.3数字系统中的系数量化效应 MATLAB表示数的精度:用二进制双精度格式数表示一个数:8字节(64位二进制数)。键入命令eps、realmin和realma x,显示出MATLAB浮点制表示的:量化阶:可以表示的最大数:最小数:所以MATLAB的量化误差可以忽略不计,用MATLA B设计的滤波器系数可以看成精确的理论值。工程实际中采用嵌入式的DSP芯片(或专用数字硬件电路),DSP芯片(或专用数字硬件电 路)的字长一般为8、16、32bit,采用定点或浮点二进制表示数。9.1.3数字系统中的系数量化效应工程实际中的滤波器设计 与系数量化效果仿真:1、用MATLAB设计滤波器2、选定采用的嵌入式的DSP芯片(或专用数字硬件电路),DSP芯片(或专用 数字硬件电路)3、用实际系统的有效字长,对设计的滤波器系数进行量化仿真检验。当然,实际系统的有效字长越长,实际实现的性能越逼近 MATLAB设计结果。MATLAB提供了定点运算仿真模块库(Fix-PointBlockset)有兴趣的读者请找相关书籍学习。 9.1.3数字系统中的系数量化效应1、系数量化对系统频率特性的影响数字网络的系统函数:量化前的系数:量化后的系数:量 化误差:(9.1.5)(9.1.6)量化后的实际的系统函数:(9.1.7)显然,如果存在系数量误差,则频率响应不同 于原来设计的频率响应。9.1.3数字系统中的系数量化效应例题9.1.1假设带通滤波器的系统函数如下式用b+1位二进制表示 上式中的系数,b=4,采用舍入法处理尾数,试分析系数量化误差对极点位置和频率响应特性的影响。量化后的系统函数为9.1.3 数字系统中的系数量化效应2、极点位置敏感度主要分析不同网络结构的系数量化误差对极零点位置的影响。为此,引入零极点位置灵敏度的概念 。极点灵敏度:指每个极点对系数偏差的敏感程度。零点灵敏度的分析方法相同。下面以系数量化对极点位置的影响为例进行分析。分母多 项式A(z)的极点:系数量化后的极点:表示第k个极点的偏差,对直接型结构,它应该和各个系数偏差(9.1.8)都有关,它和各系数偏差 的关系为9.1.3数字系统中的系数量化效应讨论:的大小直接影响第i个系数偏差对第k个极点偏差的“贡献”极点灵敏度和极点的关系 :上式中,(9.1.11)9.1.3数字系统中的系数量化效应所以,上式即是第k个极点对系数的极点位置敏 感度。将上式代入(9.1.8)式,得到,上式表示N个系数量化误差引起的第k个极点的偏差。由该式可以得到以下结论:极点偏移 和系数量化误差大小有关。而系数量化误差大小与寄存器长度有关,因此为减小极点偏移,应加长寄存器长度。9.1.3数字系统中的系 数量化效应的矢量,2、分母多项式中(是极点指向极点的矢量之积。整个分母是所有极点(不包括极点)指向极点如果极点密集在一起,极点间 距短,那么极点对系数量化误差的敏感度高,相应的极点偏差就大。3、极点偏差与系统函数的阶数N有关,阶数愈高,极点灵敏度高,极点偏 差也大。这样对于一些窄带滤波器,因为要求选择性高,势必要求阶数高,且几点密集,所以,极点的偏差会很大。严重时使极点移到单位园上 或者单位园外,引起系统不稳定。9.1.3数字系统中的系数量化效应综上所述,得出结论:系统的结构最好不用高阶的直接型结构,而 将其分解成一阶或者二阶子系统,再将它们进行并联或者级联,以便减小极点偏移量。降低系数量化效应!9.1.3数字系统中的系数量 化效应如图9.1.4(a)和(b)所示:6阶椭圆带通滤波器的直接型结构的极点对系数量化误差的敏感度高,相应的极点偏差大,量化误差 使频响曲线偏差很大。量化后的滤波器无法使用。图9.1.4(a)零极点分布图(b)频响 特性曲线9.1.3数字系统中的系数量化效应如图9.1.4(c)和(d)所示:级联型结构的零极点对系数量化误差的敏感度很低, 相应的极点几乎看不出偏差,量化前后频响曲线基本重合。所以,工程上高阶滤波器一般都用级联型结构和并联型结构。图9.1.4(c )零极点分布图(d)频响特性曲线9.1.3数字系统中的系数量化效应注意:观察图9. 1.4(a)和(c)发现,直接型结构和级联型结构系数量化前后的零点偏移都很小。原因:该滤波器的各零点之间距离较大(不密集)。而窄带 带通滤波器的极点分布密集,所以直接型结构的极点对系数量化误差的敏感度高,相应的极点偏差大。本例的实验结果与理论结论一致。9.1. 4数字系统中的运算量化效应在数字网络的运算中的运算误差:1、定点二进制乘法的结果尾数变长,对尾数进行截尾或舍入处理的误差; 2、定点加法运算中可能出现溢出,造成更大的误差;3、浮点制运算中乘法和加法都可能使二进制的位数加长,对尾数进行截尾或舍入处理 的误差。分析结果将证明:运算误差的大小除了和规定的二进制数的长度有关以外,还和网络结构有关。运算量化效应仅介绍定点制的乘 法量化效应。1、分析方法:统计分析由于输入信号是随机信号,差生的运算量化误差同样是随机的,所以,需要进行统计分析。2、分析条件: 假定运算量化误差具有以下统计特性:(1)系统中所有的运算量化噪声都是平稳的白噪声;(2)所有的运算量化噪声之间以及和信号之间均 不相关;(3)这些噪声的概率密度都是均匀分布的;(4)乘法支路的运算量化等效为其输出接点的加性噪声。运算量化效应3、乘法支路 运算量化模型及其分析:理想乘法支路输出节点变量:经过量化后的输出节点变量:则系统中每个乘法支路都引入一个噪声源。运算量化效应 考虑运算量化效应的一阶IIR网络结构分析模型:对定点舍入法,输出端噪声平均值和方差分别为分别表示和和在输出端的输出运算量 化效应根据帕斯维尔定理(2.5.29)式,也可以用下式计算:网络结构对输出噪声的影响我们通过一个二阶网络的例子说明不同网络结构 对输出噪声的影响。例9.1.3已知网络系统函数为网络采用定点补码制,尾数处理采用舍入法。试分别计算直接型、级联型和并联型结构输出 噪声功率。下面分别计算这三种网络结构的输出信噪比网络结构对输出噪声的影响三种网络结构的运算量化效应分析模型:网络结构对输出噪 声的影响(1)直接型式中网络结构对输出噪声的影响(2)级联型网络结构对输出噪声的影响(3)并联型网络结构对输出噪声的影响 结论:(1)对同一个系统函数,因乘法量化误差在输出端引起的量化噪声功率除了与量化位数b有关外,还与网络结构形式有关。( 2)量化位数愈长,输出量化噪声愈小;(3)较高阶的网络结构中,直接型输出端量化噪声以最大,级联型次之,并联型最小。(4)三种不同网 络结构输出端的信号功率都是一样的。原因分析:直接型量化噪声通过全部网络,经过反馈支路有积累作用;级联型仅一部分噪声通过全部网 络;并联型每个一阶网络的量化噪声直接送到输出端。网络结构对输出噪声的影响输出信噪比计算:方差为,均值设输入信号为输出端信号功率 输出信噪比结论:(1)输出信噪比也同样随量化位数增加而增加;(2)网络结构中以并联型输出信噪比最大,直接型最差。(3)对于定点制, 输出信噪比还与输入信号功率有关,应在保证运算中不发生溢出的前提下,尽量增大输入信号幅度。防止溢出的措施1、原码与补码表示 :在定点制网络系统中,补码二进制表示:设要表示十进制数x补码的特点:计算加减法方便,但乘法计算比原码复杂。防止溢出 的措施2、加法溢出概念:加法不会产生量化误差,但却会产生溢出。例:2个补码二进制数相加:0.110+0.011=(1.001) 2,其对应的十进制数为-1+1/8=-7/8,但实际值应是1/2+1/4+1/4+1/8=9/8。这样,由于加法进位,产生了 溢出,形成了很大的误差。防止溢出的措施3、防止加法溢出的措施:(1)定点制系统,数的动态范围小,一般采用限制输入信号动态范围方 法防止加法溢出。(2)采用浮点制。4、定点制系统输入信号动态范围限制设网络节点用表示,从输入节点节点的单位取样响应为防止溢出的措 施例:一阶IIR网络,单位取样响应为要求输入信号的动态范围为(9.1.17)显然该动态范围与一阶网络的极点有关。极点愈靠近单 位圆,限制输入信号的动态范围就愈小。防止溢出的措施4、定点制系统输入支路加衰减器如果输入信号幅度固定在一定范围中,可以在输入 支路上加衰减因子来防止溢出。例:在图中,为防止溢出,输入支路上加衰减因子A,即为防止溢出,要求对于该例,有防止溢出的措施 对于级联开型或并联型结构,可在每个基本节的输入支路加衰减因子,如图所示。如果,图中 均按下式计算,以保证每节输出接点不溢出:(9.1.19)对于基本节内部的加法可能有溢出,但理论可以证明对补码加法,只要 输出节点不溢出,网络内部的溢出不影响结果的正确性。防止溢出的措施最后要指出的是按照(9.1.17)式或(9.1.19)式选择 减因子比较保守。经常用下式计算:(9.1.20)。式中,是大于1的数,如果输入信号是方差为1的白噪声,可选9.2数字信号处理 技术的软件实现1、按照差分方程求解系统输出的软件流程例:假设两个二阶网络的级联结构如图所示。从n=0开始加入信号要求设计求输出 响应的软件流程图。9.2数字信号处理技术的软件实现解:网络差分方程为求暂态解时,对于N阶差分方程要给定N个初始条件,本题中 的2个2阶网络的初始条件均已给定。根据差分方程可得到软件流程图:9.2数字信号处理技术的软件实现2、线性时不变系统的MATL AB实现线性时不变系统的实现函数:filter和filtic按直接型结构实现,采用递推求解系统差分方程实现功能及调用格式:见本书p 20~~21%调用filter和filtic函数求系统输出响应的通用程序B=[b0,b1,···,bM];A=[a0,a1,··· ,aN];%设置H(z)的分子和分母多项式系数向量B和Axn=input(‘x(n)=’);%输入信号x(n)xs=[x(-1), x(-2),···,x(-N)]; %设置想x(n)初始条件ys=[y(-1),y(-2),···,y(-N)];%设置y(n )初始条件xi=filtic(B,A,ys,xs);%由初始条件计算等效初始条件的输入序列xiyn=filter(B,A,xn,x i);%调用filter求系统输出信号y(n),n≥09.2数字信号处理技术的软件实现举例:设系统函数初始条件y(-1)=2 ,,求系统输出响应。H(z)的分子、分母多项式系数B=1、A=[1,-b]。9.2 数字信号处理技术的软件实现%ep922m:例9.2.2调用filter函数和filtic函数求系统输出响应clearall; closeallb=input(''b='');%输入差分方程系数ba=input(''a='');%输信号x( n)的参数aB=1;A=[1,-b];%H(z)的分子、分母多项式系数B、An=0:31;xn=a.^n; %计算产生输入信号x(n)的32个样值ys=input(''ys='');%初始条件y(-1)=2xi0=filtic(B,A,ys) %由初始条件计算等效初始条件的输入序列xiyn=filter(B,A,xn,xi0); %调用filter解差分方程,求系统输出信号y(n)subplot(3,2,1);stem(n,yn,''.'');title(''(a)b=-0.8,a=0.8,y(-1)=2'')xlabel(''n'');ylabel(''y(n)'');axis([0,32,min(yn),max(yn)+0.5])9.2数字信号处理技术的软件实现程序运行结果:9.2数字信号处理技术的软件实现2、按照网络结构编写程序的方法(1)首先将信号流图的节点进行排序:延时支路输出节点以及网络输入节点排序可以由节点计算出的节点排序可以由节点计算出的节点排序,……,依照这样的规律进行节点排序,直到将全部节点排完。(2)最后按照k从小到大写出运算次序:9.2数字信号处理技术的软件实现起始数据:(1)(2)(3)(4)(5)(6)数据更新:,返回(1)9.2数字信号处理技术的软件实现循环执行以上步骤的软件流程图:这种编写程序的方法的特点:充分考虑了不同结构的特点;只要知道网络结构,不需要写出差分方程,就可编写程序。9.2数字信号处理技术的软件实现例:二阶网络级联结构的节点排序及编程流程 |
|