1、第9章 数字信号处理的实现 第第9 9章章 数字信号处理的实现数字信号处理的实现 9.1 数字信号处理中的量化效应数字信号处理中的量化效应 9.2 数字信号处理技术的软件实现数字信号处理技术的软件实现 9.3 数字信号处理的硬件实现简介数字信号处理的硬件实现简介 第9章 数字信号处理的实现 9.1 数字信号处理中的量化效应数字信号处理中的量化效应9.1.1 量化及量化误差量化及量化误差数字信号处理技术实现时,信号序列值、运算结果及参加运算的各个参数都必须用二进制的编码形式存储在有限长的寄存器中,如果该编码长度长于寄存器的长度,需要进行尾数处理;运算中,二进制乘法会使位数增多,也需要进行尾数处理
2、。尾数处理必然带来误差,例如,序列值0.8012用二进制表示为(0.1100110101)2,如用7位二进制表示,序列值则为(0.110011)2,其十进制为0.796 875,与原序列值的差值为0.80120.796 875=0.004 325,该差值是因为用有限位二进制数表示序列值形成的误差,称为量化误差。第9章 数字信号处理的实现 量化误差产生的原因是用有限长的寄存器存储数字引起的,因此也将这种误差引起的各种效应称为有限寄存器长度效应。这些量化效应在数字信号处理技术实现中,表现在以下几方面:A/DC中量化效应,数字网络中参数量化效应,数字网络中运算量化效应,FFT中量化效应等。这些量化效
3、应在数字信号处理技术实现时,都是很重要的问题,一直受到科技工作者的重视,并在理论上进行了很多研究。随着科学技术的飞速发展,主要是数字计算机的发展,计算机字长由8位、16位提高到32位;一些结合数字信号处理特点发展起来的数字信号处理专用芯片近几年来发展尤其迅速,不仅处理快速,字长达到32 bit;另外,高精度的A/D变换器也已商品化。第9章 数字信号处理的实现 这样,随着计算字长的大大增加,量化误差大大减少了,因此,对于处理精度要求不高、计算字长较长的一般数字信号处理技术的实现,可以不考虑这些量化效应。但是对于要求成本低,用硬件实现时,或者要求高精度的硬件实现时,这些量化效应问题亦然是重要问题。
4、如果信号值用b+1位二进制数表示(量化),其中一位表示符号,b位表示小数部分,能表示的最小单位称为量化阶(或量化步长),用q表示,q=2b。对于超过b位的部分进行尾数处理。尾数处理有两种方法:一种是舍入法,即将尾数第b+1位按逢1进位,逢0不进位,b+1位以后的数略去的原则处理;另一种是截尾法,即将尾数第b+1位以及以后的数码略去。显然这两种处理方法的误差会不一样。第9章 数字信号处理的实现 如果信号x(n)值量化后用Qx(n)表示,量化误差用e(n)表示,e(n)=Qx(n)x(n)一般x(n)是随机信号,那么e(n)也是随机的,经常将e(n)称为量化噪声。为便于分析,一般假设e(n)是与x
5、(n)不相关的平稳随机序列,且是具有均匀分布特性的白噪声。设采用定点补码制,截尾法和舍入法的量化噪声概率密度曲线分别如图9.1.1(a)和(b)所示。这样截尾法量化误差的统计平均值为q/2,方差为q2/12;舍入法的统计平均值为0,方差也为q2/12,这里q=2b。很明显,字长b+1愈长,量化噪声方差愈小。第9章 数字信号处理的实现 图9.1.1 量化噪声e(n)的概率密度曲线第9章 数字信号处理的实现 根据上述量化原理,建立量化的数学模型:Qx=qroundx/q(9.1.1)式中,roundx表示对x四舍五入后取整,roundx/q表示x包含量化阶q的个数,所以Qx=qroundx/q就是
6、量化后的数值。x可以是标量、向量和矩阵。将数取整的方法有四舍五入取整、向上取整、向下取整、向零取整,对应的MATLAB取整函数分别为 round(x)、ceil(x)、floor(x)、fix(x)。round最常用,对应的MATLAB量化语句为xq=q*round(x/q)。第9章 数字信号处理的实现 例如,x=0.8012,b=6,量化程序如下:x=0.8012;b=6;q=2-b;%计算量化阶qxq=q*round(x/q)%对x舍入值量化e=x-xq%计算量化误差e运行结果:xq=0.796875,e=0.004325第9章 数字信号处理的实现 9.1.2 A/D变换器中的量化效应变换
7、器中的量化效应A/D变换器的功能原理图如图9.1.(a)所示,图中是量化编码后的输出,如果未量化的二进制编码用x(n)表示,那么量化噪声为,因此A/D变换器的输出为 (9.1.2)考虑A/D变换器的量化效应,其统计模型如图9.1.2(b)所示。这样,由于e(n)的存在而降低了输出端的信噪比。)(nx)()()(nxnxne)(nx)()()(nenxnx第9章 数字信号处理的实现 图9.1.2 A/DC功能原理图及统计模型 第9章 数字信号处理的实现 假设A/D变换器输入信号xa(t)不含噪声,输出中仅考虑量化噪声e(n),信号xa(t)平均功率用表示,e(n)的平均功率用表示,输出信噪比用S
8、/N表示,信噪比通常用dB数表示:(9.1.3a))(nx2e2x22exNSdBlg1022exNS第9章 数字信号处理的实现 A/D变换器采用定点舍入法,e(n)的统计平均值me=0,方差将代入(9.1.3a)式,得到:此式表明,A/D变换器的位数b愈多,信噪比愈高;每增加一位,输出信噪比增加约6 dB。当然,输出信噪比也和输入信号功率有关,为增加输出信噪比,应在A/D变换器动态范围中,尽量提高信号幅度。如果对输出端信噪比提出要求,根据(9.1.3b)式可以估计对A/D变换器的位数要求。beq22221211212e2lg1079.1002.6xbNS(9.1.3b)第9章 数字信号处理的
9、实现 设xa(t)服从标准正态分布N(0,),A/D变换器的动态范围为1 V。我们知道,对于正态分布,xa(t)的幅度落入3x以外的概率很小,可以忽略。为充分利用其动态范围,取,代入(9.1.3)式,得如果要求S/N60 dB,由上式计算出b10;如果S/N80 dB,则d13。增加A/D变换器的位数,会增加输出端信噪比,但A/D变换器的成本也会随位数b增加而迅速增加;另外,输入信号本身有一定的信噪比,过分追求减少量化噪声提高输出信噪比是没有意义的。因此,应根据实际需要,合理选择A/D变换器位数。2xV31x29.102.6bNS第9章 数字信号处理的实现 输入最大幅度为1 V的b位A/D变换
10、器,根据舍入量化模型(9.1.1)式,可以写出b位A/D变换器的MATLAB量化函数quant:function y=quant(x,b,V)if nargin3 V=max(abs(x);end%缺省V,则默认V等于x的最大值ax=abs(x);%去掉负号q=V/(2b-1);%计算量化阶qxq=q*round(ax/q);%对|x|舍入值量化y=sign(x).*xq;%加入负号,恢复带负号的量化值y第9章 数字信号处理的实现 该函数可以对带负号的数据x进行A/D变换,x可以是标量、向量和矩阵。应当注意,上述为线性量化,其缺点是不利于小信号。为了改善小信号量化信噪比,工程上常常采用非线性量
11、化。第9章 数字信号处理的实现 9.1.3 数字系统中的系数量化效应数字系统中的系数量化效应系统对输入信号进行处理时需要若干参数或者说系数,这些系数都要存储在有限位数的寄存器中,因此存在系数的量化效应。系数的量化误差直接影响系统函数的零、极点位置,如果发生了偏移,会使系统的频率响应偏离理论设计的频率响应,不满足实际需要。量化误差严重时,极点移到单位圆上或者单位圆外,造成系统不稳定。系数量化效应直接和寄存器的长度有关,但也和系统的结构有关,有的结构对系数的量化误差不敏感,有的却很敏感。各种结构对系数量化误差的敏感度也是本节要研究的内容之一。第9章 数字信号处理的实现 MATLAB按二进制双精度格
12、式表示数,表示一个数用8字节(64位二进制数)。键入命令eps、realmin和realmax,可以显示出MATLAB浮点制表示的量化阶q=252=2.22041016、可以表示的最大数和最小数分别为2.225110308和0.797710308。所以MATLAB的量化误差可以忽略不计,用MATLAB设计的滤波器系数可以看成精确的理论值。工程实际中要把用MATLAB设计的滤波器付诸实现,必须采用嵌入式的DSP芯片(或专用数字硬件电路),DSP芯片(或专用数字硬件电路)的字长一般为8、16、32 bit,采用定点或浮点二进制表示数,并进行数值运算。第9章 数字信号处理的实现 因此,用MATLAB
13、设计完成后,必须考虑实际系统的有效字长,对设计结果进行量化仿真检验。当然,实际系统的有效字长越长,实际实现的性能越逼近MATLAB设计结果。好在MATLAB提供了定点运算方真模块库(FixPoint Blockset),有兴趣的读者请找相关书籍学习。第9章 数字信号处理的实现 1.系数量化对系统频响特性的影响系数量化对系统频响特性的影响数字网络或者数字滤波器的系统函数用下式表示:式中的系数br和ar必须用有限位二进制数进行量化,存储在有限长的寄存器中,经过量化后的系数用表示,量化误差用br和ar表示,那么(9.1.4)NrrrMrrrzazbzH101)(rrab和第9章 数字信号处理的实现(
14、9.1.5)(9.1.6)实际的系统函数用表示,公式为 显然,系数量化后的频率响应不同于原来设计的频率响应。rrraaarrrbbb)(zH(9.1.7)NrrrMrrrzazbzH101)(第9章 数字信号处理的实现【例例 9.1.1】假设窄带滤波器的系统函数如下式:如果用b+1位二进制表示上式中的系数,b=4,采用舍入法处理尾数,试分析系数量化误差对极点位置和频响特性的影响。解解 求解本例的系数量化与绘图程序为ep911.m。21965.017.011)(zzzH第9章 数字信号处理的实现%ep911.m:例题9.1.1 系数量化与图9.1.3绘图程序B=1;A=1,-0.17,0.965
15、;%量化前系统函数系数向量b=4;%量化2进制位数Aq=quant(A,b);%对系统函数分母系数向量A进行b位量化p=roots(A)%计算量化前的极点pq=roots(Aq)%计算量化后的极点ap=abs(p)%计算量化前极点的模apq=abs(pq)%计算量化后极点的模%以下为绘图部分省略第9章 数字信号处理的实现 运行程序,得到量化后的系统函数 为并求出H(z)和的极点分别为显然,因为系数的量化,使极点位置发生变化,算出极点的模为:|p1,2|=0.9823,说明量化后的极点离单位圆稍远一些,会使带通滤波器的幅度特性的峰值减小,中心频率有所移动。)(zH121()10.20000.93
16、33H zzz)(zH1,20.0850 j 0.9787p1,20.1000 j0.9609p1,20.9661p第9章 数字信号处理的实现 程序自动画出H(z)和的幅频特性曲线分别如图9.1.3中的实线和虚线所示。该例题说明由于系数量化效应,使极点位置发生了变化,从而改变了原来设计的频率响应特性。)(zH第9章 数字信号处理的实现 图9.1.3 量化前后系统幅频响应曲线第9章 数字信号处理的实现 应当注意,数字滤波器的系数的大小有时差别很大,如果用b位定点数表示时,以最大的系数确定量化阶q,对所有系数统一量化,必然使较小的系数相对量化误差很大,使滤波器性能远离设计指标要求。所以工程实际中常
17、常采用浮点制表示系数。第9章 数字信号处理的实现 2.极点位置敏感度极点位置敏感度下面分析系数量化误差对极零点位置的影响。如果极零点位置改变了,严重时不仅IIR系统的频率响应会发生变化,还会影响系统的稳定性。因此研究极点位置的改变更加重要。为了表示系数量化对极点位置的影响,引入极点位置灵敏度的概念,所谓极点灵敏度,是指每个极点对系数偏差的敏感程度。相应的还有零点位置灵敏度,分析方法相同。下面讨论系数量化对极点位置的影响。(9.1.4)式中,分母多项式A(z)有N个极点,用pk(k=1,2,N)表示,系数量化后的极点用(k=1,2,3,N)表示,那么kp第9章 数字信号处理的实现 上式中极点偏差
18、pk表示第k个极点的偏差,它应该和各个系数偏差都有关,它和各系数偏差的关系用下式表示:上式中,的大小直接影响第i个系数偏差ai对第k个极点偏差pk的大小,愈大,pk愈大,愈小,pk愈小。称为极点pk对系数ai变化的灵敏度。下面推导该灵敏度和极点的关系。kkkppp(9.1.8)iNiikkaapp1ikapikapikapikap第9章 数字信号处理的实现 (9.1.9)式中(9.1.10)(9.1.12)kkpziikpzkazAappzA)()(kpzkiikpzAazAap/)(/)(NkkNiiizpzazA111)1(1)(9.1.11)iizazA)(1111()(1)()NNNl
19、lllkl kl kA zzp zzzpp 第9章 数字信号处理的实现 将(9.1.11)和(9.1.12)式代入(9.1.9)式,得到上式即是第k个极点对系数ai的极点位置敏感度。将上式代入(9.1.8)式,得到(9.1.13)NklllkiNkikpppap1)(9.1.14)iNiNklllkiNkkapppp11)(第9章 数字信号处理的实现 上式表示系数量化误差引起的第k个极点的偏差,由该式可以得到以下结论:(1)极点偏移和系数量化误差大小有关。如果系统采用定点补码制,尾数采用b位舍入法处理,那么ai的变化范围为1/2q,q=2b,均方误差为q2/12,因此为减小极点偏移,应加长寄存
20、器长度。(2)分母多项式中,pkpl是极点pl指向极点pk的矢量,整个分母是所有极点(不包括pk极点)指向极点pk的矢量之积。如果极点密集在一起,极点间距短,那么极点对系数量化误差的敏感度高,相应的极点偏差就大。第9章 数字信号处理的实现(3)极点偏差与系统函数的阶数N有关,阶数愈高,极点灵敏度愈高,极点偏差也愈大。这样对于一些窄带滤波器,因为要求选择性高,势必要求阶数高,极点的偏差会很大。严重时使极点移到单位圆上或者单位圆外,引起系统不稳定。考虑以上因素,系统的结构最好不用高阶的直接型结构,而将其分解成一阶或者二阶系统,再将它们进行并联或者串联,以便减小极点偏移量。第9章 数字信号处理的实现
21、【例例 9.1.2】按照例6.5.2数字带通滤波的设计指标:系统采样频率Fs=8 kHz,要求保留20252225 Hz频段的频率成分,幅度失真小于1 dB;滤除01500 Hz和2700 Hz以上频段的频率成分,衰减大于40 dB。调用MATLAB滤波器设计分析工具FDATool,设计该滤波器,并对其系数用16位字长量化,其中尾数15位。直接型结构系数量化前后的零极点分布图和频响特性曲线分别如图9.1.4(a)和(b)所示。级联型结构系数量化前后的零极点分布图和频响特性曲线分别如图9.1.4(c)和(d)所示。第9章 数字信号处理的实现 图9.1.4 窄带滤波器系数量化前后的零极点分布图和
22、频响特性曲线比较第9章 数字信号处理的实现 由图可见,六阶椭圆带通滤波器的直接型结构的极点对系数量化误差的敏感度高,相应的极点偏差大,量化误差使频响曲线偏差很大。量化后的滤波器无法使用。但级联型结构的零极点对系数量化误差的敏感度很低,相应的极点几乎看不出偏差,量化前后频响曲线基本重合。所以,工程上高阶滤波器一般都用级联型结构和并联型结构。观察图9.1.4(a)和(c)发现,直接型结构和级联型结构系数量化前后的零点偏移都很小。这是因为该滤波器的各零点之间距离较大(不密集)。而窄带带通滤波器的极点分布密集,所以直接型结构的极点对系数量化误差的敏感度高,相应的极点偏差大。本例的实验结果与理论结论一致
23、。第9章 数字信号处理的实现 9.1.4 数字系统中的运算量化效应数字系统中的运算量化效应在数字网络的运算中,其中间结果和最后结果的位数,如果超出了规定的有限位二进制数长度,则需要进行尾数处理,这样便引起了运算量化误差;运算中还可能出现溢出,造成更大的误差;运算误差的大小除了和规定的二进制数的长度有关以外,还和网络结构有关。下面就以上三个问题进行介绍。第9章 数字信号处理的实现 1.运算量化效应运算量化效应在定点制运算中,二进制乘法的结果尾数可能变长,需要对尾数进行截尾或舍入处理;在浮点制运算中无论乘法还是加法都可能使二进制的位数加长,也需要对尾数进行截尾或舍入处理。这样不管是采用定点制还是浮
24、点制,都会因运算差生量化误差,这种误差称为运算量化误差。下面我们仅介绍定点制的乘法量化效应。由于输入信号是随机信号,差生的运算量化误差同样是随机的,需要进行统计分析。运算量化误差在系统中起噪声作用,会使系统的输出信噪比降低。第9章 数字信号处理的实现 为了分析计算简单,假定运算量化误差具有以下统计特性:系统中所有的运算量化噪声都是平稳的白噪声;所有的运算量化噪声之间以及和信号之间均不相关;这些噪声的概率密度都是均匀分布的。假设定点乘法运算按b位进行量化,量化误差用e(n)表示。对于一个乘法支路,如图9.1.5(a)所示,图中节点变量v2(n)=av1(n),经过量化后用 表示,那么)()(12
25、navQnv第9章 数字信号处理的实现 这样量化以后乘法支路的统计模型如图9.1.5(b)所示。因此系统中所有的乘法支路都和图9.1.5(b)一样引入一个噪声源。12212()()()()()()()e nQ av nv nv nQ av nv ne n第9章 数字信号处理的实现 图9.1.5 乘法支路及其量化模型第9章 数字信号处理的实现 图9.1.6中,有两个乘法支路,采用定点制时共引入两个噪声源,即e1(n)和e2(n),噪声e2(n)直接输出,噪声e1(n)经过网络h(n)输出,输出噪声ef(n)为ef(n)=e1(n)*h(n)+e2(n)第9章 数字信号处理的实现 图9.1.6 考
26、虑运算量化效应的一阶网络结构第9章 数字信号处理的实现 如果尾数处理采用定点舍入法,则输出端噪声平均值为上式中E表示求统计平均值,m1和m2分别表示两个噪声源的统计平均值,这里m1=m2=0,因此,mf=0)()()(21neEnhneEmfmEmmhmneEmnemhE2121)()()()(第9章 数字信号处理的实现 由于e1(n)和e2(n)互不相关,求输出端噪声方差时,可分别求其在输出端的方差,再相加。这里,每个噪声源的方差均为式中q=2b。输出端的噪声ef(n)的方差为式中,ef1(n)和ef2(n)分别表示e1(n)和e2(n)在输出端的输出;22112eq2222212()()(
27、)()ffffffEenmE enE enE en第9章 数字信号处理的实现 022220220020011001121222)()()()()()()()()()()()()()()(meefmemlemlmlffcmhmhlmlhmhlnemneElhmhlnelhmnemhEneEneE第9章 数字信号处理的实现 2f式中根据帕斯维尔定理(2.5.29)式),也可以用下式计算:11212211)(zd)()(j21azbzzHzzHzHecef第9章 数字信号处理的实现 2.网络结构对输出噪声的影响网络结构对输出噪声的影响下面我们通过一个二阶网络的例子说明不同网络结构对输出噪声的影响。【
28、例例9.1.3】已知网络系统函数为网络采用定点补码制,尾数处理采用舍入法。试分别计算直接型、级联型和并联型结构输出噪声功率。9.0|,72.07.112.04.0)(211zzzzzH第9章 数字信号处理的实现 解解 按照以上H(z)的三种表示公式,画出考虑乘法量化效应的直接型、级联型和并联型网络结构图如图9.1.7所示。下面分别计算这三种网络结构的输出信噪比。112111110.40.2()1 1.70.720.40.211 0.91 0.85.65.21 0.91 0.8zH zzzzzzz第9章 数字信号处理的实现 图9.1.7 例9.1.3的网络结构图第9章 数字信号处理的实现 (1)
29、直接型。f01232221f()()()()()()111d22()()12122jce ne ne ne ne nh nzqqH z H zz 11111121221d10.40.20.40.2d()()2j2j(1 0.9)(1 0.8)(1 0.9)(1 0.8)Res()(),0.9Res()(),0.861.05328.89932.1641132.1645.52766ccfzzzzH z H zzzzzzzH z H zH z H Zqqq式中第9章 数字信号处理的实现 (2)级联型。f012321222122121f22()()()()()()()1(),()()1 0.811d3
30、1d()()()()122j122jcce ne nh ne ne ne nh nHzh nZTHzzzzqH z H zqHz Hzzz122111222222f111d()()2j2j(1 0.8)(1 0.8)Res()(),0.82.7781132.1642.7783.375124ccdzzHz HzzzzzHz Hzzqqq式中第9章 数字信号处理的实现 (3)并联型。f0112321111222122222f120022222()()()()()()()1()ZT(),()0.9()1 0.81()ZT(),()0.8()1 0.8112()2()1212111161 0.961
31、0.81.34nnnne ne ne nh ne ne nh nH zh nh nu nzHzh nh nu nzqh nqh nqqq 以上式中222bq第9章 数字信号处理的实现 此例表明,对同一个系统函数H(z),因乘法量化效应在输出端引起的量化噪声功率除了与量化位数b有关外,还与网络结构形式有关。量化位数b愈长,输出量化噪声愈小;网络结构中,输出端量化噪声以直接型最大,级联型次之,并联型最小。原因是直接型量化噪声通过全部网络,经过反馈支路有积累作用,级联型仅一部分噪声通过全部网络,并联型每个一阶网络的量化噪声直接送到输出端。而对于三种不同网络结构输出端的信号功率都是一样的。设输入信号x
32、(n)方差为,均值mx=0,输出端信号功率用表示 2x2y第9章 数字信号处理的实现 输出信噪比S/N用信号和噪声的功率比计算因此,输出信噪比也同样随量化位数b增加而增加;网络结构中以并联型输出信噪比最大,直接型最差。对于定点制,输出信噪比还与输入信号功率有关,应在保证运算中不发生溢出的前提下,尽量增大输入信号幅度。2222101d()()()2jyxxcnzhnH z H zz 22fyNS第9章 数字信号处理的实现 实际时域离散线性时不变系统可以用线性常系数差分方程表示:所以,不论采用哪种结构,其中与量化有关的基本运算单元如下:y=k1x1+k2x2只要调用定点量化函数quant分别对每个
33、基本运算单元量化,求解差分方程,即可得到量化后的实际系统输出响应,也可以计算分析各种结构的有限字长效应。基本运算y=k1x1+k2x2的MATLAB函数qbcu.m为01()()()MNiiiiy nb x nia y ni()y n()()()e ny ny n第9章 数字信号处理的实现 function yq=qbcu(k1,x1,k2,x2,b,V)%基本运算y=kx*x1+k2*x2的定点量化运算函数%b为量化尾数位数,V为量化动态范围k1q=quant(k1,b,V);k2q=quant(k2,b,V);x1q=quant(x1,b,V);x2q=quant(x2,b,V);v1=k
34、1q*x1q;v1q=quant(v1,b,V);v2=k2q*x2q;v2q=quant(v2,b,V);yq=v1q+v2q;第9章 数字信号处理的实现 3.防止溢出的措施防止溢出的措施我们知道,在数字网络中有两种运算,即乘法和加法,由于存在有限寄存器长度效应,乘法会产生乘法量化效应,加法不会产生量化误差,但却会产生溢出。例如,在定点制网络系统中,补码二进制0.110加0.011,结果为1.001,其真值为7/8,实际真值应是 9/8。这样,由于加法进位,产生了溢出,形成了很大的误差。在浮点制系统中,由于动态范围大,一般不产生溢出。下面介绍一般防止溢出的方法。第9章 数字信号处理的实现 可
35、以采用限制输入信号动态范围的方法来防止溢出。设网络节点用i表示,从输入节点x(n)到i节点的单位取样响应为hi(n),式中,|x|max为|x(n)|的最大值,为保证节点i不溢出,要求|i|1,那么要求:(9.1.16)(9.1.15)0max0()()|()|iimiimh m x nmxh mmax01|()|imxh m第9章 数字信号处理的实现 上式即是对输入信号动态范围的限制。例如,一阶IIR网络,单位取样响应h(n)=anu(n),|a|1要求输入信号的动态范围为1|a|,显然该动态范围与一阶网络的极点a有关。极点愈靠近单位圆,限制输入信号的动态范围就愈小。另外,如果输入信号幅度固
36、定在一定范围中,可以在输入支路上加衰减因子来防止溢出。例如,在图9.1.8中,为防止溢出,输入支路上加衰减因子A,0A1。max01|1|()|nnxaa u n 第9章 数字信号处理的实现 图9.1.8 一阶滤波网络第9章 数字信号处理的实现 设|x(n)|max=xmax,则有为防止溢出,要求|y(n)|1,即对于该例,有(9.1.18)0)()()(mmnxmhAnymax0|()|()|,0my nAxh mA(9.1.17)max01|()|mAxh mmax1|aAx第9章 数字信号处理的实现 对于级联型或并联型结构,可在每个基本节的输入支路加衰减因子,如图9.1.9中A1和A2。
37、如果xmax=1,图中A1和A2均按下式计算:式中,h(m)是每个相应基本节的单位取样响应。这样可保证每个基本节的输出节点不溢出。对于基本节内部的加法可能有溢出,但理论可以证明对补码加法,只要输出节点不溢出,网络内部的溢出不影响结果的正确性。(9.1.19)01|()|mAh m第9章 数字信号处理的实现 图9.1.9 级联型与并联型的衰减因子第9章 数字信号处理的实现 最后要指出的是按照(9.1.17)式或(9.1.19)式选择衰减因子是比较保守或者说是比较苛刻的。经常用下式计算:式中,是大于1的数,如果输入信号是方差为1的白噪声,可选5。(9.1.20)1/2201|()|mAh m第9章
38、 数字信号处理的实现 9.2 数字信号处理技术的软件实现数字信号处理技术的软件实现数字信号的处理可以用软件实现,也可以用硬件实现。软件实现指的是在通用计算机上执行数字信号处理程序。这种方法灵活,但一般不能实现实时处理。硬件实现是利用数字信号处理专用集成电路或单片数字信号处理器DSP(Digital Signal Processor)来实现的。目前,这些器件一般都照顾到数字信号处理的特点,内部带有乘法器、累加器,采用流水线工作方法以及并行结构,多总线,速度快,并配有适合数字信号处理的指令等。第9章 数字信号处理的实现 一些特殊的专用器件有:FFT专用芯片,FIR滤波器、卷积和相关等专用芯片,它的
39、软件算法已在芯片内部用硬件实现,随着超大规模集成电路的发展,DSP芯片成本在不断下降,从而使这种实现方法成为数字信号处理的主导方法。本节主要介绍软件实现方法。第9章 数字信号处理的实现 在第1章已学习过描写系统的线性常系数差分方程,具有递推求解的特点,可以求解系统的暂态解、稳态解以及系统的单位脉冲响应。求暂态解时,对于N阶差分方程要给定N个初始条件;求系统的单位脉冲响应时,要令系统初始状态为零和输入信号为单位脉冲序列。下面通过例题说明按照差分方程求解系统输出的软件流程图。【例例9.2.1】假设两个二阶网络的级联结构如图9.2.1(b)所示。第9章 数字信号处理的实现 图9.2.1 例题9.2.
40、1图第9章 数字信号处理的实现 从n=0开始加入x(n)信号,x(1)=0,x(2)=0,初始条件为:w(1)=0,w(2)=0,y(1)=0,y(2)=0,a1、a2、a3、a4、b0、b1、b2、b3、b4、b5均为已知参数。要求设计求输出响应的软件流程图。解解 其差分方程为其软件流程图如图9.2.2所示。1201234345()(1)(2)()(1)(2)()(1)(2)()(1)(2)w na w na w nb x nb x nb x ny na y na y nb w nb w nb w n第9章 数字信号处理的实现 图9.2.2 两个二阶网络的级联结构软件流程图第9章 数字信号处
41、理的实现 上面介绍了求解差分方程的软件流程图,仿真实验时用MATLAB语言求解最方便。MATLAB语言的filter函数和filtic函数可以求解差分方程。我们知道,系统函数与差分方程是等价的,系统函数的系数就是差分方程的系数。所以,根据系统函数的系数和初始条件,调用filter函数和filtic函数可以方便地求系统输出响应。下面是求系统输出响应的MATLAB通用程序。第9章 数字信号处理的实现%调用filter和filtic函数求系统输出响应的通用程序B=b0,b1,bM;A=a0,a1,aN;%设置H(z)的分子和分母多项式系数向量B和Axn=input(x(n)=);%输入信号x(n),
42、也可以直接赋值,或读取数据文件ys=y(1),y(2),y(N);%设置初始条件xi=filtic(B,A,ys);%由初始条件计算等效初始条件的输入序列xi,设x(n)为因果序列yn=filter(B,A,xn,xi);%调用filter求系统输出信号y(n),n0第9章 数字信号处理的实现【例例 9.2.2】设系统函数H(z)=1/(1bz1),x(n)=anu(n),求系统输出响应。解解 对于给定的H(z),分子、分母多项式系数B=1、A=1,b。求系统输出的程序ep922.m如下:%ep922m:例9.2.2 调用filter函数和filtic函数求系统输出响应b=input(b=);
43、%输入差分方程系数ba=input(a=);%输入信号x(n)的参数aB=1;A=1,-b;%H(z)的分子、分母多项式系数B、A第9章 数字信号处理的实现 n=0:31;xn=a.n;%计算产生输入信号x(n)的32个样值ys=input(ys=);%输出初始条件y(1)xi0=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)
44、;axis(0,32,min(yn),max(yn)+0.5)第9章 数字信号处理的实现 运行程序,并输入不同的参数b和a以及初始条件,得到系统不同的输出y(n)波形。如果b=0.8,a=0.8,y(1)=2,输出响应如图9.2.3(a)所示。如果令初始状态为y(1)=0,b=0.8,a=1,得到的是系统的零状态响应如图9.2.3(c)所示。如果令x(n)=u(n),b=0.8,y(1)=2,得到的系统响应如图9.2.3(b)所示。如果x(n)=u(n),b=0.8,y(1)=0,得到的系统响应如图9.2.3(d)所示。第9章 数字信号处理的实现 图9.2.3 例题9.2.2 系统输出响应第9
45、章 数字信号处理的实现 以上求系统输出响应的方法,并没有涉及网络结构的问题,下面我们介绍按照网络结构编写程序的方法。首先将信号流图的节点进行排序,延时支路输出节点变量是其输入节点变量前一时刻已存储的数据,起始时,作为已知值(初始条件),网络输入是已知数值,这样延时支路输出节点以及网络输入节点排序k=0,网络中可以由k=0节点变量计算出的节点排序k=1,然后由k=0,1,可以计算出的节点排序k=2,,依照这样的规律进行节点排序,直到将全部节点排完。最后按照k从小到大写出运算次序。图9.2.4(a)的二阶网络排序如图9.2.4所示,图中圆圈中的数字表示排序。其运算次序如下:第9章 数字信号处理的实
46、现 图9.2.4 图9.2.1(a)的节点排序第9章 数字信号处理的实现 起始数据:v1=0,v2=0(1)(2)v5=x(n)+v3(3)v6=v5(4)v7=b0v6+v4(5)y(n)=v7(6)数据更新:v2=v1,v1=v631 12241 122va va vvbvb v第9章 数字信号处理的实现 循环执行以上步骤,可完成网络运算。也可以进行简化:(2)、(3)合成一步,(4)、(5)合成一步。软件流程图如图9.2.5所示。这种编写程序的方法的特点是充分考虑了不同结构的特点;只要知道网络结构,不需要写出差分方程,就可编写程序;运算操作的基本公式为 v=cx+dy。对于图9.2.1(
47、b)两个二阶网络级联结构,节点排序如图9.2.6所示,其软件流程图如图9.2.7所示。上述软件实现思想适合各种不同的编程语言,如C语言、汇编语言等。第9章 数字信号处理的实现 图9.2.5 图9.2.4软件流程第9章 数字信号处理的实现 图9.2.6 图9.2.1(b)的节点排序第9章 数字信号处理的实现 图9.2.7 图9.2.6的软件流程图第9章 数字信号处理的实现 9.3 数字信号处理的硬件实现简介数字信号处理的硬件实现简介如前所述,数字信号处理可分为软件实现与硬件实现。但实质上这两种实现方法是不能截然分开的。因为所谓的软件实现,需要硬件支持才能运行,而硬件实现一般也离不开软件。最流行的
48、通用数字信号处理单片机,通常又称为通用数字信号处理器(DSP)就是这种软、硬结合的实现方式,但习惯上将其划为硬件实现。数字信号处理的硬件实现又可分为专用硬件实现和数字信号处理器实现。前者属于硬件实现,后者称为软硬结合实现。第9章 数字信号处理的实现 所谓硬件实现,就是根据数字滤波器的数学模型和算法,设计专用数字信号处理电路(集成电路),使计算程序全部硬件化。专用处理器中的硬件电路包括加法器、乘法器、存储器、控制器和输入/输出接口等。例如按照第5章介绍的直接型、级联型、并联型或FFT实现方案,用FPGA设计实现电路。硬件实现的优点是处理速度高,但灵活性差,开发周期长。因为硬件电路一旦做好就不易改
49、变(如滤波器阶数和结构类型等)。第9章 数字信号处理的实现 所谓软硬结合实现,就是用通用数字信号处理器(DSP)实现信号处理。DSP实质上是一种适用于数字信号处理的单片微处理器,其主要特点是灵活性大,适应性强,具有可编程功能,且处理速度高(DSP的指令周期已达到ns级)。例如TI公司的TMS320系列DSP就是应用广泛的通用数字信号处理器的典型产品。例如,数字滤波器的DSP实现,就是设计DSP硬件电路,充分利用DSP的软硬件资源,开发并优化程序,实现数据采集、滤波器单位脉冲响应h(n)与所采集的数字信号x(n)的快速卷积运算、输出滤波结果。第9章 数字信号处理的实现 实现中选用何种实现方法,要
50、视具体要求而定。例如,数字通信中的信道均衡器和雷达信号处理中,对信号处理要求有限且具体,但要求实时性好,因而可采用专用硬件。在信号处理算法复杂,处理种类繁多,并要求有智能化控制功能的系统中最好选用DSP实现方法,以便简化开发过程,缩短开发周期。例如软件无线电和认知无线电系统。自从1980年以来,DSP技术引发了现代电子系统设计的革命。在当今数字化时代,DSP已经成为信号处理、通信、雷达、计算机和消费类电子产品等领域的基础器件。DSP芯片不同于通用单片微计算机,DSP是一种对数字信号进行高速实时处理的专用单片处理器,其处理速度比最快的CPU还快1050倍。第9章 数字信号处理的实现 这主要是因为