(4)复值平方运算。 FFT实现主要代码: void mian(void)
{fft.ipcbptr=ipcb;//cal()函数处理数据的起始位置
fft.magptr=ipcb;//mag()函数后放置幅值平方数据的起始位置 fft.init();//复制旋转因子TF for(i=0;i<128;i++) {
ipcb[i]=array[i]; }
FFTR_brev(ipcb,ipcb,N);//位倒序处理
fft.calc(&fft);//调用64点复数FFT计算,输入数据是Q31格式 fft.split(&fft);//劈分64点复数结果,得复数128点FFT计算的真 fft.mag(&fft);//得到幅值平方,输出的数据是Q30格式
3.FFT的C语言实现使用标准C语言实现的时间抽取FFT编写过程如下: (l)首先定义一个复数结构 struct compx(double real,imag); (2)定义一个输入数据序列
struct compx s[129];//定义N+1为数组长度,是为了以后运算从 环参数的变化。45 (3)定义两个复数相乘
struct compx EE(struct compx bl,struct compx b2) {
struct compx b3;
b3.real=b1.real-bl.imag*b2.imag; b3.real=b1.real-bl.imag*b2.imag; return(b3); }
(4)定义位反函数 void displace(viod); {…… nv2=N/2;
for(i=1;i if(i while(k (5)定义FFT变换的函数 void FFT(void) { for(l=1;l<=m;l++) {le=power(2,l);lei=le/2;Pi=3.1415926;v.real=1.0;v.imag=0.0; w.real=cos(Pi/lei);w.imag=-sin(Pi/lei); for(j=l;j<=lei;j++) { - 17 - for(i=j;i<=n;i=i+le) {ip=i+lei;t=EE(xin[ip],v):xin[ip].real=xin[i].real-t.real; xin[ip].image=xin[i].image-t.image;xin[i].real=xin[i].real+t.real; xin[i].image=xin[i].image+t.image;} v=EE(v,w); } } } (6)由主函数完成文件的输入输出及其他函数的调用,上面的C语言程序是对FFT实现。 为验证FFT算法的正确性利用第4章采集到的50Hz左右的正弦信号的数据,并利用集成开发环境CCS进行FFT运算,并验证FFT算法是否正确,进行FFT计算后看是否在相应的点上出现峰值。 图4-3 系统软件仿真采集信号波形图 - 18 - 图4-4 FFT仿真图 4.4 小结 本章阐述了FFT算法的基本原理,给出了FFT算法导出的详细过程,对基-2FFT算法进行了理论研究最后,利用第4章所采集到的50Hz左右的正弦信号,在集成开发环境CCS下进行软件仿真,仿真结果验证了FFT算法的正确性。 - 19 - 结论与展望 本课题经过几个月的努力,取得了阶段性的进展,但是还有不少问题需要继续努力。本论文是基于TMS320F2812的数据采集及FFT设计,主要完成对信号调理电路、模数转换电路、DSP、外扩RAM等系统的设计,以及最后硬件原理图的生产。在设计过程中,还要完成对一些附加电路的设计,比如复位电路、时钟电路、JTAG接口电路等。其中复位电路采用按键复位,操作方便,且具备上电复位的优点;时钟电路采用外部晶体提供时钟频率,稳定性强,性价比高;JTAG电路是个标准的仿真接口,操作方便。 本论文作为一个数据采集系统,采用处理速度比较快的TMS320F2812芯片,更好的实现数据的快速处理,在系统设计中,首先有16路数据采集电路对模拟信号进行采集,然后经过调理电路,调理电路主要负责调节输入的16路数据信号的信号电压,使之符合接下去信号的AD转换模块的电压要求范围,这里采用的放大器芯片是ADOP37,它的诸多优点在正文中已经介绍,然后通过AD转换把信号送入DSP进行处理,这就完成了数据的采集。 本论文采用TI的32位DSP芯片TMS320F2812作为信号采集和处理的核心,通过片上12位A/D转换模块进行数据采集,采集后的数据存储在片内存储器中。本设计的完成可以应用于学校实验室的实验以及简单的生活上的数据采集和处理。 - 20 - 致 谢 在论文即将完毕之时,首先感谢我的导师周鹏老师,在他的悉心指导下,从论文的选题、论文系统设计、到最终定稿都没有离开周老师的无私帮助,在这几个月里,周老师不仅传授我理论方面的知识,更是在生活中给予很大的关心,在此谨向周老师表以崇高的敬意和由衷的感谢。 感谢大学四年中,所有代课老师对我的教育、关心。 感谢我的家人对我无私的帮助、关心。 感谢安徽工程大学机电学院06级的同学们在生活、学习上的关心和帮助。 感谢所有关心、帮助过的我的朋友们、同学们和老师们。 作者: 2010年 6月16日 - 21 -