DSP课程设计FFT.docx

上传人:b****8 文档编号:10489814 上传时间:2023-02-13 格式:DOCX 页数:15 大小:327.42KB
下载 相关 举报
DSP课程设计FFT.docx_第1页
第1页 / 共15页
DSP课程设计FFT.docx_第2页
第2页 / 共15页
DSP课程设计FFT.docx_第3页
第3页 / 共15页
DSP课程设计FFT.docx_第4页
第4页 / 共15页
DSP课程设计FFT.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

DSP课程设计FFT.docx

《DSP课程设计FFT.docx》由会员分享,可在线阅读,更多相关《DSP课程设计FFT.docx(15页珍藏版)》请在冰豆网上搜索。

DSP课程设计FFT.docx

DSP课程设计FFT

 

课程设计(论文)

 

题目名称基于DSP的FFT实现

课程名称专业课程设计Ⅱ

学生姓名郭晗

学号1141303066

系、专业信息工程系、通信工程

指导教师刘伟春

 

2014年4月27日

 

摘要

本次课程设计主要运用CCS这一工具实现快速傅里叶变换(FFT)。

CCS(CodeComposerStudio)是一种针对TM320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具,可以帮助用户在一个软件环境下完成编辑、编译、链接、调试和数据分析等工作。

CCS有两种工作模式,即软件仿真器和硬件在线编程。

软件仿真器工作模式可以脱离DSP芯片,在PC上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。

硬件在线编程可以实时运行在DSP芯片上,与硬件开发板相结合进行在线编程和调试应用程序。

关键词:

CCS;快速傅里叶变换(FFT)

 

目录

摘要I

第1章绪论1

1.1课题研究的背景1

1.2国内外研究现状1

1.3课题研究的内容2

第2章系统方案设计及论证3

2.1总体方案论证3

2.2设计程序流程图4

2.3系统电路设计总框图4

第3章软件设计5

3.1N的参数设置5

3.2源文件代码5

第4章实验仿真及结果分析10

4.1实验结果10

4.2实验结果分析12

第5章总结13

参考文献14

致谢15

第1章绪论

1.1课题研究的背景

随着数字技术与计算机技术的发展,数字信号处理(DSP)技术已深入到各个学科领域。

近些年来,数字信号处理技术同数字计算器、大规模集成电路等,有了突飞猛进的发展。

在数字信号处理中,离散傅里叶变换(Discrete.Time Fourier Transform,DFT)是常用的变换方法,它在数字信号处理系统中扮演着重要角色。

由离散傅里叶变换发现频率离散化,可以直接用来分析信号的频谱、计数滤波器的频率响应,以及实现信号通过线系统的卷积运算等,因而在信号的频谱分析方面有很大的作用。

由于DFT的运算量太大,即使是采用计算机也很难对问题进行实时处理,所以经过很多学者的不懈努力,便出现了通用的快速傅里叶变换(FFT)。

快速傅里叶变换(Fast Fourier Transform,FFT)并不是与离散傅里叶变换不同的另一种变换,而是为了减少DFT计算次数的一种快速有效的算法。

对FFT算法及其实现方式的研究是很有意义的。

目前,FFT己广泛应用在频谱分析、匹配滤波、数字通信、图像处理、语音识别、雷达处理、遥感遥测、地质勘探和无线保密通讯等众多领域。

在不同应用场合,需要不同性能要求的FFT处理器。

在很多应用领域都要求FFT处理器具有高速度、高精度、大容量和实时处理的性能。

因此,如何更快速、更灵活地实现FFT变得越来越重要。

1.2国内外研究现状

FFT在生产实践和科学研究中获得日益广泛的应用。

例如,对汽车、飞机、轮船、汽轮机等各类旋转机械、电机、机床等机器的主体或部件进行实际运行状态下的谱分析,可以提供设计数据和检验设计效果,或者寻找振源和诊断故障,保证设备的安全运行等;在声纳系统中,为了寻找海洋水面船只或潜艇,需要对噪声信号进行谱分析,以提供有用信息,判断舰艇运动速度、方向、位置、大小等。

因此对谱分析方法的研究,受到普遍注意和重视,是当前信号处理技术中一个十分活跃的课题。

在我国,1993年,丁康和谢明提出了三点卷积法幅值校正法,提高了频率间隔较大的信号的离散频谱幅值精度,解决了工程实际中的一些问题。

1994年,谢明、丁康等提出和发展了比例频谱校正方法,使内差法系统地发展成为一种通

用的频谱校正方法,解决了频率间隔较大的离散化频谱幅值、相位和频率的精确求解问题,并开始对离散频谱的校正方法和误差分析进行了深入系统的分析和研究。

1996年,余佳兵,史铁林等提出了采用复调制细化谱分析将已产生频谱干涉的密集频率成分分离开,消除干涉,再用比例法进行校正以解决密集频率成分的离散频谱的校正问题。

在国外,1975年John C.Burges等从事电学领域研究工作的学者采用插值法对加矩形窗的离散化频谱进行校正,解决了电学中的离散高次谐波参数的精确测量问题。

1983年Thomas Grandke提出了加Hanning窗的内插法,进一步提高了离散高次谐波参数的分析精度。

1.3课题研究的内容

本文主要介绍基于DSP用FFT变换实现对信号的频谱分析。

研究离散傅里叶变换以及快速傅里叶变换的原理及算法。

快速傅里叶变换和离散傅里叶变换的基本理论是一样的,它根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换进行了改进。

在计算机系统或者数字系统中广泛应用者快速傅里叶变换,这是一个巨大的进步。

本文主要解决的问题就是如何对信号的频谱进行研究,使FFT更广泛的应用于科学研究。

 

第2章系统方案设计及论证

2.1总体方案设计

本系统主要由4部分组成:

DSP、FPGA、正交数字上变频器(QuadratureDigitalUpconverter)、正交数字下变频器(QuadratureDigitalDownconverter)。

系统硬件结构如图2.2所示。

图中,D表示数据总线,A表示地址总线,C表示控制总线,L表示链路口数据线,字母后面的数字表示总线的位数。

50MHz晶振为两片DSP及FPGA提供时钟信号,32.768MHz高稳定度晶振为AD9857和AD6654提供高质量的时钟信号。

复位芯片MAX6708控制DSP、FPGA、AD9857、AD6654和ST16C550的复位。

DSP完成FFT/IFFT变换。

系统所使用的DSP[2]是ADI公司的TigersharcTS101。

该DSP具有以下特性:

最高工作频率为300MHz,3.3ns指令周期;6MB片内SRAM;2个计算模块,每个模块都有1个ALU、1个乘法器、1个移位寄存器和1个寄存器组;2个整型ALU,用来提供寻址和指针操作;14个DMA控制器;1149.1IEEEJTAG口。

该DSP最大的特点是:

进行256点的复数FFT变换,仅需3.67μs。

 

2.2设计程序流程图

2.3系统电路设计总框图

图2.2DSP硬件结构图

第3章软件设计

3.1N的参数设置

进行N点FFT运算,分别实现N=256,N=512得到不同的功率谱图源程序:

3.2源文件代码:

#include

#include"DSP28_Device.h"

#include"comm.h"

#include"fft.h"

#include"ext_inf.h"

#defineFFTN512512

#defineFFTN256256

#defineFFTN128128

#pragmaDATA_SECTION(ipcb,"FFTipcb");

longipcb[FFTN512+2];

RFFT32fft512=RFFT32_512P_DEFAULTS;

RFFT32fft256=RFFT32_256P_DEFAULTS;

RFFT32fft128=RFFT32_128P_DEFAULTS;

unsignedintSampleLong;

#defineSAMPLELONG2

unsignedintAd_data[1536]={0};

unsignedintAd_data1[1536]={0};

unsignedintconvcount=0;

volatileunsignedintadconvover=0;

unsignedintmod[512];

intm=0;

doublen;

doublep,q;

unsignedinti,j;

interruptvoidISRTimer2(void);

interruptvoidad(void);

voidmain(void)

{

/*初始化系统*/

InitSysCtrl();

#ifSAMPLELONG==1

SampleLong=256;

#endif

#ifSAMPLELONG==2

SampleLong=512;

#endif

#ifSAMPLELONG==3

SampleLong=1024;

#endif

/*关中断*/

DINT;

IER=0x0000;

IFR=0x0000;

/*初始化PIE中断*/

InitPieCtrl();

/*初始化PIE中断矢量表*/

InitPieVectTable();

//初始化cputimer

InitCpuTimers();

/*设置中断服务程序入口地址*/

EALLOW;//ThisisneededtowritetoEALLOWprotectedregisters

PieVectTable.TINT2=&ISRTimer2;

PieVectTable.ADCINT=&ad;

EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregisters

/*开中断*/

IER|=M_INT1;//ADC中断

EINT;//EnableGlobalinterruptINTM

ERTM;//EnableGlobalrealtimeinterruptDBGM

adconvover=0;

DINT;

/*设置CPU*/

ConfigCpuTimer(&CpuTimer2,150,22);

StartCpuTimer2();

/*开中断*/

IER|=M_INT14;

EINT;

InitAdc();

for(;;){

if(adconvover==1){

for(i=0;i

Ad_data1[i]=Ad_data[i+SampleLong/2];

}

/*AD采样结束fft转换开始*/

switch(SampleLong/2){

case128:

fft128.ipcbptr=ipcb;

fft128.init(&fft128);

for(i=0;i

ipcb[i]=Ad_data1[i];

}

RFFT32_brev(ipcb,ipcb,FFTN128);

fft128.calc(&fft128);

fft128.split(&fft128);

break;

case256:

fft256.ipcbptr=ipcb;

fft256.init(&fft256);

for(i=0;i

ipcb[i]=Ad_data1[i];

}

RFFT32_brev(ipcb,ipcb,FFTN256);

fft256.calc(&fft256);

fft256.split(&fft256);

break;

case512:

fft512.ipcbptr=ipcb;

fft512.init(&fft512);

for(i=0;i

ipcb[i]=(long)Ad_data1[i];

}

RFFT32_brev(ipcb,ipcb,FFTN512);

fft512.calc(&fft512);

fft512.split(&fft512);

break;

default:

break;

}

/*求模*/

m=0;

for(i=0;i

p=ipcb[i];

q=ipcb[i+1];

n=p*p+q*q;

n=sqrt(n);

mod[m]=n;

m++;

}

adconvover=0;

}

}

}

interruptvoidad(void)

{

IFR=0x0000;

PieCtrl.PIEACK.all=0xffff;

if(adconvover==0){

Ad_data[convcount]=AdcRegs.RESULT0;

convcount++;

}

if(convcount==(SampleLong+SampleLong/2))

{

convcount=0;

adconvover=1;//接满标志

}

}

interruptvoidISRTimer2(void)

{

//AdcRegs.ADCTRL2.bit.RST_SEQ1=1;

AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;

AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;

}

voidsys_reset(void)

{

EALLOW;

SysCtrlRegs.WDCR=0;

EDIS;

for(;;){};

}

 

第4章实验仿真及结果分析

4.1实验结果

输入方波后得到的图:

方波作FFT变化的输出图:

计算mod值得到的方波图:

 

输入正弦波后得到的图:

正弦波作FFT后输出图:

计算mod值输出的正弦波图:

 

4.2实验结果分析

FFT算法特点:

共需r次迭代;

次迭代对偶结点的偶距为

,因此一组结点覆盖的序号个数是

次迭代结点的组数为

可以预先计算好,而且

的变化范围是

因此N越大,运算越多。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1