基于DSP的FFT算法实现概要_fft算法参考dsp课本

2020-02-28 其他范文 下载本文

基于DSP的FFT算法实现概要由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“fft算法参考dsp课本”。

基于DSP的FFT算法实现

Realization of FFT algorithm based on DSP 艾红,常青青,邓大伟

AI Hong, CHANG Qing-qing, DENG Da-wei(北京信息科技大学自动化学院,北京 100192 摘 要:快速傅立叶变换(FFT是将信号从时域变换到频域的一种方法,广泛运用于各种信号分析领域。文中介绍了FFT算法的原理,构建了基于TMS320F2812的硬件平台,阐述了FFT算法的硬件与软件实现。利用TMS320F2812内部的ADC模块与事件管理器的定时器实现信号的实时采集,不需要使用专门的A/D转换芯片。软件上以128点FFT运算为例,在CCS环境下利用C 语言编程实现了FFT算法,程序充分利用蝶式权的周期性及FFT运算中第一级蝶式权值固定为1的特点,使得运算量与复杂度大大减小。运行结果表明TMS320F2812能够快速高效地完成FFT运算。

关键词:数字信号处理;快速傅立叶变换;信号采集

中图分类号:TP273

文献标识码:B

文章编号:1009-0134(201201(上-0017-03 Doi: 10.3969/j.in.1009-0134.2012.01(上.07 0 引言

快速傅立叶变换(FFT在雷达、通信、电子对抗和电力系统等领域有广泛应用,特别是在电力系统的谐波检测中,FFT几乎是唯一可行的检测方法。通常提高FFT运算速度有两种途径:改进FFT 算法本身和改进运算工具。现阶段提高FFT算法本身非常困难,一般方法致力于改进运算工具。数字信号处理器DSP 是一种可编程的高性能处理器。文中充分利用TMS320F2812 DSP强大的数据处理能力,实现了FFT运算,并提高了运算速度。系统硬件结构

系统设计以TMS320F2812处理器为核心,辅以外围电路构成。DSP负责模拟输入信号数据采集以及FFT算法实现。外围电路包括电源转换电路,时钟电路,复位电路以及外部RAM等。系统的硬件整体结构如图1所示[1]。对信号进行FFT变换,首先要对模拟信号采样将其转换为数字信号。输入的连续模拟信号经信号调理电路后输出到DSP的ADC模拟输入通道,经过ADC数据采集,模数转换的结果存放于ADC结果寄存器中。信号调理电路主要是为了信号的抗混叠滤波以及电路阻抗的匹配。信号调理电路对输入信号进行调理处理,包括信号的滤波、跟随输出以及信号的稳定。DSP 对采集的数字信号进行FFT运算处理,同时对运算结果进行相应的数据显示和数据存储。

图1 系统的硬件整体结构图 2 FFT算法原理

FFT是离散傅立叶变换(DFT的快速运算,是数字信号处理的基础。因为有些信号在时域很难看出特性,使用FFT将其变换到频域,就会很容易看出其特性。DFT算法的基本公式为[3]:

式中x(n表示时域信号,X(k表示频域信号,为运算蝶式权。

FFT算法是不断地把长序列的DFT分解成几个短序列的DFT,并利用的周期性和对称性减少DFT的运算次数。设序列x(n的长度为N(N=2M,M 为任意正整数,按n的奇偶把x(n分解成两个N/2 收稿日期:2011-08-12 基金项目:北京市教育委员会科技计划面上项目(KM200910772008 作者简介:艾红(1962-,女,四川重庆人,副教授,硕士,研究方向为检测技术与自动化装置。

点的子序列: 若

:

:

由此可见,若将任何一偶数点序列按下标的奇 偶性分成两个子序列,则原序列的DFT可由两子序 列的DFT线性组合得到。运算流图如图2所示。图2 运算流图

图3 蝶式运算流图

其中,A和B的距离称为翅尖距。这种方法和 直接进行DFT计算相比较,运算量减少一半。按 照这种分解运算的思想,将X1(k和X2(k继续向下 分解,直到最后变为一点序列,此时的运算量大 大减小。以8点序列X(n的FFT运算为例: 第一次分解: 第二次分解: 蝶式运算流图如图3所示。比较FFT和DFT的 运算量。假设序列点数为N,且有N=2L,当使用FFT 进行运算时,计算过程中只有蝶式运算,它的复

数乘法运算量为,复数加法运算量为;直接进行DFT运算时,复数乘

法和复数加法的运算量均为N2。由此可见,FFT运 算确实大大减小了DFT的运算量。由图3可以看出,若想得到顺序正确的频域序 列X(k,必须对时域序列进行重新排序。这里先 说明比特逆序的概念:设存储地址m,其二进制数(设m=2L为m=(m1m2m3,若有=(m3m2m1, 则称为m的L位比特逆序列。若将图4中的输入时 域序列下标转换成二进制,依次是: 000,100,010,110,001,101,011,111;而原时域序列下 标转换成二进制依次是:000,001,010,011,100,101, 110,111,将两者对比可发现,输入时域序列下标 就是原时域序列下标的比特逆序。所以FFT蝶式运 算的第一步就是对时域序列进行比特排序。3 系统软件实现以及结果分析 3.1 FFT程序实现

FFT算法主要包括比特逆序、蝶式权值的计 算、各级的蝶式运算以及FFT序列的输出。程序中

涉及到复数的运算,由于计算机无法处理复数, 故而将复数拆为实部和虚部,只需计算出实部和 虚部的数值即可。程序设计将蝶式权w[i]拆分为实 部pr[i]和虚部pi[i],将参与各级蝶式运算的序列拆 分为实部fr和虚部fi。复数进行加法运算时需将两 复数的实部与实部、虚部与虚部对应相加即可, 例如w[i]+w[i+1],所得的和的实部为pr[i]+pr[i+1], 虚部为pi[i]+pi[i+1];而复数的乘法,相对来说有 些复杂,不再是简单的虚部和实部各自相乘,例如 w[i]×w,所得的乘积的实部为pr[i]×pr+pi[i]×pi, 虚部为:(pr[i]+pi[i]×(pr+pi-(pr[i]×pr+pi[i]×pi。该程序执行的是128个点的FFT运算,共有7级蝶式 运算,每个蝶式权都可看作是的n次方, 所以在一个循环内即可计算出所有的蝶式权。每 级蝶式运算计算出新的序列值代替该级的输入序 列值,这样避免了开辟新的存储空间,有效地节 省了存储空间。

FFT算法程序设计如下所示: Uint16 ConversionCount;

Uint16 px[128];Uint16 pz[128];void kfft(pr,pi,n,k,fr,fi ,l,il { Uint16 n,k,l,il;double pr[],pi[],fr[],fi [];int it,m,is,i,j,nv,l0;

double p,q,s,vr,vi,poddr,poddi;for(it=0;it

pr[0]=1.0;pi[0]=0.0;p=6.283185306/(1.0*n;pr[1]=cos(p;pi[1]=-sin(p;// pr是的实部,pi是的虚部 if(l!=0 pi[1]=-pi[1];for(i=2;i

for(it=0;it

fr[it]=vr+fr[it+1];//第一级蝶式运算中相邻两个数值进行加减运算 fi [it]=vi+fi [it+1];fr[it+1]=vr-fr[it+1];fi [it+1]=vi-fi [it+1];} //此循环为第一级蝶式运算,该级中的蝶式权均为1 m=n/2;nv=2;

for(l0=k-2;l0>=0;l0--//除去第一级,还有六级蝶式运算

{ m=m/2;nv=2*nv;// 同一级相邻的两个蝶式运算中数值的下标相差为nv for(it=0;it

用FFT的计算公式对单一频率的正余弦信号进行变换,可以得出单一频率的信号在频域表现为在其正负频率点上的两个脉冲。根据单频信号的这一特性可验证上述程序是否正确。将单一频率的正弦波信号接入硬件系统,打开图形观察窗口,将观察点数设置为128点,即可观察到如图4所示的波形。

图4 时域正弦波的FFT运行结果

图5 改善后的FFT运行结果

图4中上半部分波形为输入的时域正弦波,下半部分波形为经过变换后的频域波形。在图4中,由于产生的模拟信号伴有噪音,导致信号频率不单一,故而在信号的频域中,除了信号对应的频率点有脉冲外,其它频率点处也有较弱的脉冲。

对输入信号的频率进行调整,使信号的组成频率尽可能单一,可以得到更好的波形,如图5所示。可以看到在信号对应的频率点有脉冲,其它频率点的振幅为0,与理论推导结果一致,由此可验证程序设计的正确性。结论

FFT是声学、图像和信号处理等领域中一种重要的分析工具,文中阐述了硬件结构图和信号调理电路。详细介绍了FFT算法原理,采用C语言编写程序实现了FFT算法。程序运行结果表明TMS320F2812 DSP实现FFT运算速度快,精度高[4]。

参考文献: [1] 贾玮,杨录,张艳花.基于TMS320VC5416的FFT算法的实 现[J].山西电子技术,2009,2:11-13.[2] Rright Hert.Rapid algorithms of digital signal proceing [M].Beijing,Electronic Industrial Pre,2002.[3] 胡广书.数字信号处理[M].北京:清华大学出版社,2003.[4] 苏奎峰,吕强,耿庆锋,陈圣俭.TMS320F2812原理与开发 [M].北京:电子工业出版社,2005.2.3

反射光谱的测试

图4 ZnO纳米线阵列与原始硅片的反射光谱对比

图4是Si两种不同形貌ZnO纳米结构与原始硅片反射光谱的对比,在200-900nm波长范围内,样品C平均反射率约为5%,样品B平均反射率约为8%,均大大优于普通抛光硅片大于25%的平均反射率。样品B减反射性能略低于样品C的原因可能在于测试时入射光是垂直硅片表面人射的,相对于垂直阵列,不规则纳米结构顶部区域会使得更多的光被反射出去。结论

采用化学气相沉积的方法在p型硅片表面制备出垂直排列和不规则排列的ZnO纳米线阵列,并在此基础上制备n-ZnO纳米线/p-Si光伏器件。试验测得性能最好的器件的开路电压VOC为0.78V,短路JSC电流为6.22 mA/cm2,效率为2.6%。同时,一维结构的ZnO纳米阵列具有非常优异的减反射性能,利用这些ZnO纳米线阵列设计和制作了新型异质结纳米阵列太阳电池,其在200-900nm波长范围内,反射率约为5%。远低于原始Si片25%的反射率。

参考文献:

[1] Law,M.;Greene,L.E.;Johnson,J.C.;Saykally,R.;Yang,P.D.Nat.Mater.4,455(2005.[2] Bai,X.D.;Wang,E.G.;Gao,P.X.;Wang,Z.L.Nano Lett.3,1147(2003.[3] Wang,X.D.;Zhou,J.;Lao,C.S.;Song,J.H.;Xu,N.S.;Wang,Z.L.Ad.Mater.19,1627(2007.[4] Yang,P.D.;Yan,H.Q.;Mao,S.;Ruo,R.;Johnson,J.;Saykally, R.;Morris,N.;Pham,J.;He,R.R.;Choi,H.J.Ad.Funct.Mater.12,323(2002.[5] Huang,M.H.;Mao,S.;Feick,H.;Yan,H.Q.;Wu,Y.Y.;Kind,H.;Weber,E.;Ruo,R.;Yang,P.D.Science.292,1897(2001.[6] Lim,J.H.;Kang,C.K.;Kim,K.K.;Park,I.K.;Hwang,D.K.;Park, S.J.Ad.Mater.18,2720(2006.[7] Wang,Z.L.;Song,J.H.Science 312,242(2006.[8] Wang,X.;Song,J.;Liu,J.;Wang,Z.L,Science.316,102(2007.[9] B.Tian,T.J.Kempa,and C.M.Lieber,Chem.Soc.Rev.38,16(2009.[10]Hu,L.;Chen,G.Nano Lett.7,3249–3252(2007.【上接第2页】

《基于DSP的FFT算法实现概要.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
基于DSP的FFT算法实现概要
点击下载文档
相关专题 fft算法参考dsp课本 概要 算法 DSP fft算法参考dsp课本 概要 算法 DSP
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文