欢迎来到天天文库
浏览记录
ID:33493511
大小:459.30 KB
页数:3页
时间:2019-02-26
《基于硬件dsp的fft变换_张正甫》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、■技术创新·日用电器基于硬件DSP的FFT变换12张正甫潘嘉强(1.珠海格力电器股份有限公司珠海5190702.珠海启创电子科技有限公司珠海519070)摘要:快速傅立叶变换(FFT)是将离散的数字信号信号从时域变换到频域的一种常用方法,广泛运用于各种数字信号系统。本文介绍了FFT算法的原理,并结合Microchip公司的dsPIC33系列芯片,阐述了基于硬件DSP模块的FFT算法的实现。关键词:数字信号处理;快速傅立叶变换;DSPAbstract:FastFourierTransformAlgorithm(FFT)isacommonmethodfortransfor
2、mingdiscretedigitalsignalsfromtimedomaintofrequencydomain,whichiswidelyusedinallkindsofdigitalsignalsystem.ThispaperintroducestheprincipleofFFTAlgorithmandcombinedwiththechipofdsPIC33seriesfromMicrochipCompany,itelaboratestherealizationofFFTAlgorithmbasedonhardwareDSP.Keywords:digitalsi
3、gnalprocessing;FFT;DSPnk引言度是难以实现的。但在DFT中WN具有一定的周期性和对称性,快速傅立叶变换(FFT)广泛用于数字信号处理系统当中,我们利用这种周期性和对称性,则可以大大的减少了运算量。特别是电力仪器仪表行业,FFT是早期最为广泛使用的一种算如将DFT运算分解成奇偶数两部分则可以表达为:NN--1122法。过去使用软件计算的方式占用了大量的CPU资源,不利于rkkrkXk()=xrWW()22N++Nxr(1)WrN=1,....../2N2-122r==0r0系统处理其它的数据。随着单片机技术的发展,出现了一种使以4个点为例,可以
4、画出蝶形运算流图,如图1所示。用基于硬件乘法器的FFT数字信号处理模块,有效减低了CPU从图1可以看出,FFT计算有效节约了复数的乘法运算,资源的消耗,提高了系统的数据处理能力。4个点的离散序列,DFT需要进行16次复数乘法,而是用FFT简化的算法,则需要计算4次复数乘法运算。1FFT算法原理FFT是离散傅立叶变换(DFT)的快速运算,是数字信号处理的基础。DFT算法的基本公式为:N-1Xk()xnW()nkk12,......N1==N-n=0nk式中x(n)表示时域信号,X(k)表示频域信号,WN为计算2系数。因为DFT算法需要进行N次复数乘法FFT算法以及N(
5、N-1)次复数加法,要对信号进行实时处理,所需要的运算速图1蝶式运算流图ElectricalAppliancesJuly.201241技术创新·TechnologyandInnovation图2硬件框图2硬件结构序的。BitReverseComplex是将输出的各个分量进行排序,因为本文使用dsPIC33FJ256GP710的单片机作为主计算芯片,时域输入的离散序列是顺序,经过FFTComplexIP计算后,得到结合电流传感器和运算放大器,使单片机内的DMA数据处理和的各个分量都会成了倒读顺序,因此要经过此函数将顺序变更。12位片内AD精确采样,实现高效的FFT计算。
6、其硬件的主要经过BitReverseComplex计算后,直流分量存入FFTData[0],基结构如图2所示。波分量放入FFTData[1],二次谐波放入FFTData[2],如此类推。电流信号经过电流互感器后转化成为小电压信号,经过运FFT的软件流程图如图3所示。算放大器将信号放大后,进入单片机内进行处理。单片机内置数据经过DSP的模块计算后得到数据的波形在频域上各次采样保持器和多路选择开关,可以同时处理多路信号。AD转换分量的实部和虚部,可以通过均方根就求出各个分量数值。运完成后,通过DMA通道直接将转换完成后的数字量放入内存,行的代码如下:等待FFT模块处理。定
7、时器设置采样频率,本文采用了每个电uintFFT_Complex(int*DataPointer)力周波(20Ms)采样16个点,即1.25Ms为一个采样周期。整{uinti,FFT_ReturValue;//返回值个过程都是各个功能模块自行处理,无需CPU进行干预,不但节约了CPU的资源,而且提高了系统运行的可靠性。3基于DSP的FFT算法软件实现dsPIC33单片机内置的DSP模块提供两个接口函数:(1)FFTComplexIP(FFT_LOG2,&FFTData[0],(fractcomplex*)_builtin_Psvoffset(&twi
此文档下载收益归作者所有