1第五章数字信号处理应用程序设计一、FFT运算的DSP实现二、数字滤波器的DSP实现三、工程问题的DSP实现2一、FFT运算的DSP实现1、DFT与FFTDFT:离散傅立叶变换FFT:一种高效实现离散傅立叶变换的算法。作为一个非常重要的工具经常使用,甚至成为DSP运算能力的一个考核标准。傅立叶变换3时域——频域离散信号周期谱周期信号离散谱离散周期信号离散周期谱4)()(00tT5DFT的定义)1,...,1,0()(1][][)(/21010/2NkekXNnxenxkXNnkjNkNnNnkj6NjNNnnkNeWWnxkX210][)(,...2,1,0,))((lmWWnkNlNkmNnN7DFT和FFT计算量对比82、N点蝶2FFTx1[n]=x[2n]x2[n]=x[2n+1]将N点的序列分为两个N/2点的序列9)(2)(1][2][1]12[]2[][][)(12/02/12/02/12/0)12(12/021010kXWkXWnxWWnxWnxWnxnnWnxWnxkXkNNnnkNkNNnnkNNnknNNnnkNnkNNnNnnkN为奇数为偶数10上式的最后一步是因为2/)2/2(2)2(2][NNjNjNWeeW11我们已经将一个N点的DFT分解成为两个N/2点的DFT。但是,X(k)有N点,但X1(k)和X2(k)都只有N/2点,因此,前面计算的只是X(k)的前一半项的结果。12对于后一半X(k),有)(2)(1)2/(2)2/(1)(kXWkXNkXWNkXkXkNkNkNkNNNkNNWWWW)2/()2/(这是因为13这样,只要计算出(0,N/2-1)区间的X1(k)和X2(k),也就可以很方便地计算整个(0,N-1)区间的全部X(k),从而大大地节省了运算量。14将N点DFT分为两个N/2点DFT15将N/2点DFT分为两个N/4点DFT162点DFT178点蝶2FFT18按频率抽取(DIF)x1[n]=x[n]x2[n]=x[n+N/2]n=0,1,……,N/2-112/012/12/0])[2][1(][][)(NnnkNkjNNnnkNNnnkNWnxenxWnxWnxkX1912/02/12/012/02/12/02])[2][1(])[2][1()12(])[2][1()])([2][1()2()12(NnNnNNnNNnnkNnkNnNnkknWnxnxWWnxnxkXWnxnxWnxnxkX20DIT与DIF对比DIT输入是混序的,频域的输出是顺序的;DIF输入是顺序的,频域的输出是混序的。DIT的复数乘法出现在加减之前;DIF的复数乘法出现在加减之后。2122定点DSP计算1024点FFT的时间DSP时间(ms)TMS320C2510.9TMS320C62010.067DSP560011.6523浮点DSP计算1024点FFT的时间DSP时间(ms)TMS320C303.87TMS320C401.02ADSP210600.46DSP960010.6ADSP211600.45s24顺序、混序与位倒序DIT与DIF总有一边是混序的;所有DSP都提供了位倒序(bitreverse)寻址指令;溢出问题无论是C语言,还是DSP汇编语言的FFT程序都有现成的程序可用。253、FFT运算的DSP实现主要内容:1基二实数FFT运算的算法2FFT运算模拟信号的产生及输入3实序列FFT汇编源程序及链接命令文件4观察信号时域波形及其频谱261.基二实数FFT运算的算法该算法主要分为以下四步:第一步,输入数据的组合和位倒序把输入序列作位倒序是为了在整个运算最后的输出中得到的序列是自然顺序。第二步,N点复数FFT在DATA数据处理缓冲器里进行N点复数FFT运算。27第三步,分离复数FFT的输出为奇部分和偶部分分离FFT输出为RP、RM、IP和IM四个序列,即偶实数、奇实数、偶虚数和奇虚数四部分。第四步,产生2N点的复数FFT输出序列产生2N=256个点的复数输出,它与原始的256个点的实输入序列的DFT一致。282.FFT运算模拟信号的产生及输入产生模拟输入信号可以有两种方法:第一种方法是用C语言程序产生mdata.inc文件,然后,在DSP汇编语言程序中通过.copy汇编命令将生成的数据文件mdata.inc复制到汇编程序中。第二种方法是建立与输入信号对应的数据流文件mdata.dat,具体操作步骤见教材内容。293.实序列FFT汇编源程序及链接命令文件【例】256点实序列FFT的DSP实现。256点实序列FFT汇编源程序如下:**************************************Radix-2,DIT,Real-inputFFTProgram**fft.asm**************************************.mmregs.globalreset,start,sav_sin,sav_idx,sav_grp.defstart,_c_int00.data30DATA.space1024.copymdata1.inc;mdata1.inc为模拟输入信号数据,起始地址标号INPUTN.set128;复数点数LOGN.set7;蝶形级数sav_grp.usecttempv,3;定义组变量值sav_sin.setsav_grp+1;定义旋转因子表sav_idx.setsav_grp+2OUTPUT.usectOUTPUT,256;信号功率谱BOS.usectstack,0Fh;定义堆栈TOS.usectstack,1.copy“twiddle1.inc”;正弦表系数由twiddle1.inc;文件给出,起始地址标号TWI131.copy“twiddle2.inc“;余弦表系数由twiddle2.inc文件给;出,起始地址标号TWI2.text_c_int00bstartnopnopstart:STM#TOS,SPLD#0,DPSSBXFRCT…………32输入信号时域波形、频谱图及其功率谱4.观察信号时域波形及其频谱33二、数字滤波器的DSP实现1、模拟滤波器回顾数字信号处理主要是面向实时的密集型数据运算。而滤波在数字信号处理中占有极其重要的地位,是语音处理、图像处理、模式识别、频谱分析等应用的基本处理算法。34理想低通滤波器35低通、高通、带通与带阻滤波器36高通滤波器37带通滤波器38带阻滤波器39截止频率与带宽40通带、阻带与过渡带41滚降(过渡带)42阻带衰减43带内平坦度44巴特沃尔斯滤波器(Butterworth)带宽是是滤波器的阶数,其中dBNjHcNc3)(11)(224546契比协夫滤波器(Chebyshev))(11)(222cNCjH1||)coscos(1)(11)(xxNxxNchchNxC契比协夫多项式47契比协夫滤波器(Chebyshev)I型48契比协夫滤波器(Chebyshev)II型49椭圆滤波器)(11)(222NJjH50在同样的通带平滑度、过渡带宽和阻带衰减指标下,三种滤波器所需要的阶数为:巴特沃尔什6阶契比雪夫4阶椭圆3阶51二阶低通滤波器52)}(Re{)}(Im{tan)()()1(1)(12222HHdHcc幅频特性和相频特性53542、数字滤波器数字滤波又称程序滤波,是将输入信号通过一定的运算关系(程序)变为所需的输出信号,即:实现数字滤波就必须把输入输出信号关系转变成可实现的数学模型或算法。用DSP芯片实现数字滤波具有稳定性好、精确度高、不受环境影响,以及灵活性好等突出优点。55101][][][NpMppppkybpkxaky数字滤波器的差分方程分为无限冲激响应系统(IIR)和有限冲激响应系统(FIR)。IIR系统因为与过去某些输出有关,所以网络结构有反馈支路称为递归结构,FIR系统只与激励有关没有反馈支路,称为非递归结构。56IIR滤波器的主要特点单位冲击响应有无限多项高效率(因为结构简单、系数小、乘法操作较少)与模拟滤波器有对应关系可以解析控制,强制系统在指定位置为零点有极点,在设计时要考虑稳定性具有反馈,可能产生噪声、误差累积57y[k]=a0x[k]+a1x[k-1]+a2x[k-2]–b1y[k-1]–b2y[k-2]Y(z)=a0X(z)+a1X(z)z-1+a2X(z)z-2–b1Y(z)z-1–b2Y(z)z-2Y(z)=[(a0+a1z-1+a2z-2)/(b1z-1+b2z-2)]X(z)58零极点子系统交换位置(传输函数不变,但差分方程不同)59标准型二阶节60二阶节的C54实现STM#d+5,AR3;AR3:d(n),d(n-1),d(n-2)STM#table,AR4;AR4:coeffofIIRfilterB2,B1,A2,A1,A0……….*FeedbackpathMAC*AR4+,*AR3-,A;input+d(n-2)*B2MAC*AR4+,*AR3-,A;input+d(n-2)*B2+d(n-1)*B1STHA,*AR3;d(n)=input+d(n-2)*B2+d(n-1)*B1*ForwardpathMPY*AR4+,*AR3-,A;d(n-2)*A2MAC*AR4+,*AR3,A;d(n-2)*A2+d(n-1)*A1DELAY*AR3-;d(n-2)=d(n-1)MAC*AR4+,*AR3,A;d(n-2)*A2+d(n-1)*A1+d(n)*A0DELAY*AR3-;d(n-1)=d(n)……….61级连62多级二阶节级连成多级IIR63并联64IIR滤波器的设计(1)设计一个符合要求的模拟滤波器(2)从S平面映射到Z平面,得到相应的数字滤波器65冲激响应不变法h(nts)=ha[k]66Z平面的单位圆映射为S平面的±fs/2的区间67双线性变换sszzzs111168有限冲击响应(FIR)滤波器10][][Npppkxaky10)(NpppzazH=a0+a1z-1+…+aNz-(N-1)69FIR滤波器的结构70频率响应2/1210210)sin(][)cos(][)(NpNpTpphTpphG10101)cos(][)sin(][tan)(NpNpTpphTpph71FIR滤波器的主要特点单位冲击响应只有有限多项可以设计成线性相位系统只在零点处有极点,因此系统总是稳定的便于DSP实现并可用立即数乘加指令编程,(节约存储器)72系统非线性相移造成输出信号失真系统相位特性决定了信号不同频率的时延dd))(()(73输入波形DFT变换忽略相位信息IDFT变换输出波形忽略相位信息的后果74相位特性75要求线性相位的例子通信系统:数据通信、调制解调器希尔伯特变换器:要求输入输出信号正交。高保真音响系统:音乐的相位失真必须减到最小,尽可能逼真地重现原来的声音。理想微分器:……76线性相位的FIR滤波器constant)(ddg系统的群延时77线性相位设计当h[p]=h[N-p]---即h[p]关于中点对称,且:2NTgsgfNNT221则满足线性相位要求,群延时为:78假设在时H()=0,有:s当H()为偶函数有:deHmThnTjss)(2121)(dTnHmThs0cos)(21)(用付氏级数实现FIR滤波器79截取有限项得近似H(z):pNpzphzH10)()(