您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页基于DSP的FFT算法实现(1)

基于DSP的FFT算法实现(1)

来源:筏尚旅游网
垒!I兰竺皇翌!竺基于DSP的FFT算法实现RealizationofFFTalgorithmbasedonDSP艾红,常青青,邓大伟AIHong,CHANGQing—qing。DENGDa.wej(北京信息科技大学自动化学院,北京100192)摘要:快速傅立叶变换(FFT)是将信号从时域变换到频域的一种方法,广泛运用于各种信号分析领域。文中介绍了FFT算法的原理,构建了基于TMS320F2812的硬件平台,阐述了FFT算法的硬件与软件实现。利用TMS320F2812内部的ADC模块与事件管理器的定时器实现信号的实时采集,不需要使用专门的A/D转换芯片。软件上以128点FFT运算为例,在COS环境下利用C语言编程实现了FFT算法,程序充分利用蝶式权的周期性及FFT运算中第一级蝶式权值固定为1的特点。使得运算量与复杂度大大减小。运行结果表明TMS320F2812能够快速高效地完成FFT运算。关键词:数字信号处理l快速傅立叶变换;信号采集中圈分类号:TP273文献标识码:B文章编号:1009-0134(toi2)Ol(I--)-0017-03Doi:10.3969/J.Issn.1009-0134.2012.01(上).070引言结果进行相应的数据显示和数据存储。快速傅立叶变换(R叮)在雷达、通信、电子对抗和电力系统等领域有广泛应用,特别是在电力系统的谐波检测中,H可几乎是唯一可行的检测方法。通常提高FFI"运算速度有两种途径:改进FFT算法本身和改进运算工具。现阶段提高FFT算法本身非常困难,一般方法致力于改进运算工具。数字信号处理器DSP是一种可编程的高性能处理器。文中充分利用1MS320F2812DSP强大的数据处理能力,实现了FFT运算,并提高了运算速度。1系统硬件结构图1系统的硬件整体结构图系统设计以TMS320F2812处理器为核心,辅2FFT算法原理以外围电路构成。DSP负责模拟输入信号数据采集FFT是离散傅立叶变换(D兀’)的快速运算,以及FFT算法实现。外围电路包括电源转换电路,是数字信号处理的基础。因为有些信号在时域很时钟电路,复位电路以及外部RAM等。系统的硬难看出特性,使用FFr将其变换到频域,就会很容件整体结构如图l所示¨】。对信号进行FFT变换,易看出其特性。DFT算法的基本公式为pJ:首先要对模拟信号采样将其转换为数字信号。输.r(七)=>’J(n)≯f锣,七=0,.,.1..,JⅣ一1.N..一-I入的连续模拟信号经信号调理电路后输出到DSP的n=OADC模拟输入通道,经过ADC数据采集,模数转式中x(n)表示时域信号,x(k)表示频域信号,换的结果存放于ADC结果寄存器中。信号调理电咐为运算蝶式权。路主要是为了信号的抗混叠滤波以及电路阻抗的H叩算法是不断地把长序列的DFT分解成几个匹配。信号调理电路对输入信号进行调理处理,短序列的DFT,并利用时的周期性和对称性减少包括信号的滤波、跟随输出以及信号的稳定。DSPDFT的运算次数。设序列x(n)的长度为N(N=2M,M对采集的数字信号进行FFT运算处理,同时对运算为任意正整数),按n的奇偶把x(n)分解成两个N/2啦1日III:2011-08-12薹金焉目:北京市教育委员会科技计划面上项目(KM200910772008)作者简介:艾红(1962一),女,四川重庆人,副教授,硕士,研究方向为检测技术与自动化装置。第34卷第1期2012—01(1-)1171万方数据点的子序列:Xl(,)=可2厂),,=0,1,.,N12-1*x2(r)=x(2r+I),,.=O,l,…,N/2—1xRr)=DFT[工l(r)】os,.s生一l2则:x2(r)=DFT[x2(r)]x(r)=xl(,.)+Xl(,.)瞄Ⅳx(,.+第:zl(,)一xl(,.)略㈣s号一1由此可见,若将任何一偶数点序列按下标的奇偶性分成两个子序列,则原序列的DFT可由两子序列的DFT线性组合得到。运算流图如图2所示。AB图2运算流图《0X(0)《4X(1)“2X(2)】西6X(3)《lX(4)虹5X(5)《3X(6)《7X(7)图3螺式运算流图其中,A和B的距离称为翅尖距。这种方法和直接进行DFT计算相比较,运算量减少一半。按照这种分解运算的思想,将X。(k)和X:(k)继续向下分解,直到最后变为一点序列,此时的运算量大大减小。以8点序列X(n)的FFT运算为例:第一次分解:曼{;::j篙器搿端x2‘nJ={强lJ,ⅪjJ,强)J,砥,Jjx3(n)={玛(0),殉(2)}={鳆O),鳆4)}第二次分解:’‘m={玛‘1’'再‘3’}={铽2’'缸6’}璃(n)={X2(o),x2(2)}={《1)。西5)}砭(n)={X2(1),x2(3)}={《3),《7)}蝶式运算流图如图3所示。比较FFT和DFT的运算量。假设序列点数为N,且有N-_2L,当使用FFT进行运算时,计算过程中只有蝶式运算,它的复数乘法运算量为4=Nxk2N,复数加法运算量为Mc=(N12)x崦2N;直接进行DFT运算时,复数乘1181第34卷第1期2012-01(I-)万方数据法和复数加法的运算量均为N2。由此可见,FFT运算确实大大减小了DFT的运算量。由图3可以看出,若想得到顺序正确的频域序列X(k),必须对时域序列进行重新排序。这里先说明比特逆序的概念:设存储地址m,其二进制数(设m=2L)为m=(mlm2m3),若有fn=(m3in2m1),则称Iil为m的L位比特逆序列。若将图4中的输入时域序列下标转换成二进制,依次是:000,100,010,110,001,101,01l,11l:而原时域序列下标转换成二进制依次是:000,001,010,01l,100,101,110,lll,将两者对比可发现,输入时域序列下标就是原时域序列下标的比特逆序。所以FFT蝶式运算的第一步就是对时域序列进行比特排序。3系统软件实现以及结果分析3.1FFT程序实现FFT算法主要包括比特逆序、蝶式权值的计算、各级的蝶式运算以及FFT序列的输出。程序中涉及到复数的运算,由于计算机无法处理复数,故而将复数拆为实部和虚部,只需计算出实部和虚部的数值即可。程序设计将蝶式权w【i】拆分为实部pr[i]和虚部pi[i],将参与各级蝶式运算的序列拆分为实部fr和虚部fi。复数进行加法运算时需将两复数的实部与实部、虚部与虚部对应相加即可,例如w【i】+w【i+l】,所得的和的实部为pr[i]+pr[i+1],虚部为pi[i]+pi[i+l】:而复数的乘法,相对来说有些复杂,不再是简单的虚部和实部各自相乘,例如w[i】×W,所得的乘积的实部为pr[i】Xpr+pi[i】Xpi,虚部为:(pr[il+pi【i】)×(pr+pi)一(pr[i]×pr+pi[i】×pi)。该程序执行的是128个点的FI丌运算,共有7级蝶式运算,每个蝶式权W号R都可看作是W%R的n次方,所以在一个循环内即可计算出所有的蝶式权。每级蝶式运算计算出新的序列值代替该级的输入序列值,这样避免了开辟新的存储空间,有效地节省了存储空间。FFT算法程序设计如下所示:Uintl6ConversionCount;Uintl6px[128];Uintl6pz[128];voidkfft(pr,pi,n,k,fr,fi,l,n){Uintl6n,k,l,il;doublepr[】'pi口,仃口,五【】;intit,m,is,ij,nv,10;务l遭止勺砂似doubleP…qsvr,vi,poddr,poddi;算的翅问距qfpi[m*j]+fi[it+j+nv/2];s--prim*j]+pi【m巧】;for(it=O;it<=n·l;it++){m--it;is--O;s---s+(fr[it+j+nv/2]+fi[i州+n吡】);for(i=O:i<=k-1;i++)poddr=p-q;poddi=s-p-q;{j--rll,2;is=2+is+(m-2*j);m-j;}fi'[it]---pr[is];坷it]=pi【is】;//g循环为比特逆序的实现,pr、pi是原序列的实部与虚部}lift、6是捧完序后的序列pf【0】-1.o;pi【o】:0.0;p=6.283185306/(1.0+n);pr[1]fcos(p);pi【l】一sin(p);降‰的虚部if(It=O)pi[1]=-pi【l】;for0=-2;i<--n-l;i++)fp=pr[i—l】+pr【l】;q--pili—l】4pi【1】;s=(prp·l】+pi[i·11)’(州1】+pi【l】);pr[i]--p-q;pi[i]=s-p-q;}//此循环为权值运算实现for(it=0;it<--n-2;it=it+2)//it是序列下标,在第一级蝶式运算中,,相邻的两个运算螺下标相差2{vr=fr[it];vi=fi[it];fr[iq=vr+fr[it+1];//第一级蝶式运算中相邻两个数值进行加减运算丘【it]=vi+n【it+l】;fr[it+1]=vr-fr[it+1];fi[it+1]=vi-fl[it+1];},,此循环为第一级蝶式运算,该级中的蝶式权均为1m=n/2;nvffi2;for(10=k-2;10>=耵;10--)嘛去第一级,还有六级蝶式运算{m--m/2;nv=2*nv;,,同一级相邻的两个蝶式运算中数值的下标相差为nvfor(it--0;it<=(m-1)*rlv;it=it+nv)//it仍为数值的下标£娟=03<《nv/2)·1j++){pqn-[m*j]+fr[it+j+nv/2];//nv/2为燥式运万方数据fr[it+j+nv/2]ffr[it+j]-poddr;filit+j+nv/2]--ti[it+j]-poddi;r【it+j]=fr[it+j]+poddr;6【it+j]=fi[it+j]+poddi;,,计算出的新序列值代替输入序列值,节省了存储空间】)l,,行、6分刖为计算出的FFr序列的实部和虚部3.2运行结果用FFT的计算公式对单一频率的正余弦信号进行变换,可以得出单一频率的信号在频域表现为在其正负频率点上的两个脉冲。根据单频信号的这一特性可验证上述程序是否正确。将单一频率的正弦波信号接人硬件系统,打开图形观察窗口,将观察点数设置为128点,即可观察到如图4所示的波形。甄幻弋7弋=.丌丁V弋丌7颞丌7V图4时域正弦波的FFT运行结果[卜图5改善后的FFl鼋行结果第34卷第1期2012--01(上)11锄图4中上半部分波形为输入的时域正弦波,下半部分波形为经过变换后的频域波形。在图4中,由于产生的模拟信号伴有噪音,导致信号频率不单一,故而在信号的频域中,除了信号对应的频重要的分析工具,文中阐述了硬件结构图和信号调理电路。详细介绍了FFT算法原理,采用C语言编写程序实现了FFT算法。程序运行结果表明TMS320F2812DSP实现FFT运算速度快,精度高Ⅲ。率点有脉冲外,其它频率点处也有较弱的脉冲。对输入信号的频率进行调整,使信号的组成频率尽可能单一,可以得到更好的波形,如图5所参考文献:【l】贾玮,杨录,张艳花.基于TMS320VC5416的FFT算法的实现【J】.山西电子技术。2009,2:11-13.【2】RrightHert.Rapidalgorithmsofdigitalsignalprocessing示。可以看到在信号对应的频率点有脉冲,其它频率点的振幅为0,与理论推导结果一致,由此可验证程序设计的正确性。【M】.Beijing,ElectronicIndustrialPress,2002.【3】胡广书.数字信号处t里[MI.北京:清华大学出版社,2003.【4】苏奎峰,吕强,耿庆锋,陈圣俭.TMS320F2812原理与开发IM].北京:电子工业出版社,2005.4结论FFT是声学、图像和信号处理等领域中一种●蠡●●矗‘●蠡‘|童‘●蠡●●■●●■●血●■●●‘-●■●●矗●●蠡‘●■‘.ok.●■●●蠡●●■●'■-●●●●●●●■‘●■‘ok.【上接第2页】2.3反射光谱的测试出垂直排列和不规则排列的ZnO纳米线阵列,并在此基础上制备n—ZnO纳米线/p-Si光伏器件。试验测得性能最好的器件的开路电压VOC为0.78V,短路JSC电流为6.22mA/cm2。效率为2.6%。同时,一维结构的ZnO纳米阵列具有非常优异的减反射性能,利用这些ZnO纳米线阵列设计和制作了新型异质结纳米阵列太阳电池,其在200—900nm波长范围内,反射率约为5%。远低于原始Si片25%的反射率。参考文献:【1】Law.M.;Greene,L.E.;Johnsond.C.;Saykally,R.;Yang。P.D.Nat.Mater.4,455(2005).【2】Bai3(.D.;Wang,E.G.;Gao,P.X.;Wang,Z.L.Nano(2003).Lett3.1147[31Wang,X.D.;Zhou,J.;Lao,C.S.;Songd.H.;Xu,N.S.;Wang,Z.图4ZnO纳米线阵列与原始硅片的反射光谱对比L.Ad.Mater.19,1627(2007).【4】Yang。P.D.;Yan,H.Q.;Mao,S.;Russo,R.;JohnsonJ.;Say蛐ly,R.;Morris。N.;Pham,J.;He,R.R.;Choi,HJ.Ad.Funct.Mater.12,323(2002).图4是Si两种不同形貌ZnO纳米结构与原始硅片反射光谱的对比,在200—900nm波长范围内,样品C平均反射率约为5%,样品B平均反射率约为8%,均大大优于普通抛光硅片大于25%的平均反射率。样品B减反射性能略低于样品C的原因可能在于测试时入射光是垂直硅片表面人射的,相对于垂直阵列。不规则纳米结构顶部区域会使得更多的光被反射出去。【5】Huang.M.H.;Mao,S.;Feick,H.;Yah,H.Q.;Wu,Y.Y.;Kind,H.;Weber,E.;Russo,R.;Yang,P.D.Science.292,1897(2001).【6】“mJ.H.;Kang.C.K.;Kim,K.K.;Park,I.K.;Hwang,D.k:P溅S.J.Ad.Mater.18,2720(2006).[71WangZ.L.;Son93.H.Science312.242(2006).[81Wang,X.;Songd.;LiuJ.;Wang,Z.L,Science.316,102(2007).[91B.Tian,T.J.Kempa,andC.M.Lieber,Chem.Soc.Rev.38,16(2009).3结论采用化学气相沉积的方法在P型硅片表面制备1201第34卷第1期2012—01(上)[10]Hu,L.;Chen,G.NanoLett.7,3249—3252(2007).万方数据基于DSP的FFT算法实现

作者:作者单位:刊名:英文刊名:年,卷(期):

艾红, 常青青, 邓大伟, AI Hong, CHANG Qing-qing, DENG Da-wei北京信息科技大学自动化学院,北京,100192制造业自动化

Manufacturing Automation2012,34(1)

1.胡广书 数字信号处理 2003

2.苏奎峰;吕强;耿庆锋;陈圣俭 TMS320F2812原理与开发 2005

3.Rright Hert Rapid algorithms of digital signal processing 20024.贾玮;杨录;张艳花 基于TMS320VC16的FFT算法的实现 2009

本文链接:http://d.g.wanfangdata.com.cn/Periodical_zzyzdh201201007.aspx

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务