DSP课程设计报告(256点FFT的实现)

合集下载

DSP技术及应用实习报告

DSP技术及应用实习报告

目录1绪论 (2)1.1实习题目 (2)1.2课题研究的目的 (2)1.3 DSP简介 (2)2开发运行环境CCS (3)3实验原理 (4)4软件设计 (8)4.1程序流程图 (8)4.2源程序 (8)4.3设计步骤 (8)5实习心得 (19)6参考文献 (19)附录 (20)1. 绪论1.1实习题目傅立叶变换是一种将信号从时域变换到频域的变换形式,是声学,语音,电信和信号处理等领域中一种重要的分析工具。

快速傅立叶变换(FFT)是快速计算DFT的一种高效方法,FFT的出现使DFT的运算大大简化,运算时间缩短一至两个数量级之多,DSP芯片的出现使FFT的实现变得更加方便。

1.2课题研究的目的随着电子技术和集成电路技术的飞速发展,数字信号处理已经广泛地应用于通信、信号处理、生物医学以及自动控制等领域中。

离散傅立叶变换(DFT)及其快速算法FFT作为数字信号处理的基本变换,有着广泛的应用。

特别是近年来,基于FFT的ODFM技术的兴起,进一步推动了对高速FFT处理器的研究。

FFT算法从出现到现在已有四十多年代历史,算法理论已经趋于成熟,但是其具体实现方法却值得研究。

面向高速、大容量数据流的FFT实时处理,可以通过数据并行处理或者采用多级流水线结构来实现。

特别是流水线结构使得FFT处理器在进行不同点数的FFT计算时可以通过对模板级数的控制很容易的实现。

分析和比较了各种FFT算法后,选择基2和基4混合频域抽取算法作为FFT处理器的而实现算法,一种高速、处理点数可变的流水线结构FFT处理器的实现方法。

1.3 DSP简介数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。

DSP有两种含义:Digital Signal Processing(数字信号处理)、Digital Signal Processor (数字信号处理器)。

我们常说的DSP指的是数字信号处理器。

DSP的FFT实现设计报告

DSP的FFT实现设计报告

湖南科技大学信息与电气工程学院《课程设计报告》题目:基于DSP芯片的函数信号的FFT专业:通信工程班级: 01班姓名:学号:指导教师:2015年 12 月 24 日信息与电气工程学院课程设计任务书20 —20 学年第学期专业:通信工程学号:姓名:课程设计名称: DSP原理及应用设计题目:基于DSP芯片的函数信号的FFT完成期限:自 2015 年 12 月 21 日至 2015 年 12 月 24 日共 1 周设计依据、要求及主要内容(可另加附页):《DSP原理及应用课程设计》是配合DSP原理及应用理论教学,为通信工程和电子信息工程专业开设的专业技术技能设计,课程设计对通信工程和电子信息工程专业的学生是一个非常重要的实践教学环节。

通过课程设计,使学生综合运用DSP技术课程和其他有关先修课程的理论和生产实际知识去分析和解决具体问题的能力得到提高,并使其所学知识得到进一步巩固、深化和发展。

通过课程设计初步培养学生对工程设计的独立工作能力,学习设计的一般方法。

通过课程设计树立正确的设计思想,提高学生分析问题、解决问题的能力。

通过课程设计训练学生的设计基本技能,如计算、绘图、查阅设计资料和手册,熟悉标准与规范等。

要求:(1)按时参加课程设计指导,定期汇报课程设计进展情况。

(2)广泛收集相关技术资料。

(3)独立思考,刻苦钻研,严禁抄袭。

(4)按时完成课程设计任务,认真、正确地书写课程设计报告。

(5)培养实事求是、严谨的工作态度和认真的工作作风。

主要内容:(1)熟悉DSP处理器及其结构性能,掌握DSP芯片配套开发工具的使用方法。

(2)按要求设计出硬件电路。

(3)画出硬件连接原理图,并对硬件工作原理进行说明。

(4)给出软件流程图及编写程序,每一条指令的后面附上相应的注释。

(5)进行软、硬件调试,检查是否达到相关的功能。

(6)写出调试方法。

(7)设计报告结尾附上心得体会。

指导教师(签字):批准日期:年月日目录摘要 (4)一、实验目的 (4)二、实验设备 (4)三、实验内容 (4)四、实验原理 (4)五、FFT算法的DSP实现过程 (5)六、设计步骤 (7)七、编译程序 (9)八、实验过程 (10)九、实验结果 (13)十、问题与思考 (13)十一、心得体会 (14)十二、参考文献 (14)摘要随着计算机和微电子技术的飞速发展,基于数字信号处理的频谱分析已经应用到各个领域并且发挥着重要作用。

快速傅里叶变换(FFT)的DSP实现

快速傅里叶变换(FFT)的DSP实现

目录一、前言二、设计题目三、设计要求3.1 设计目的3.2 设计要求四、设计内容五、设计原理5.2 离散傅里叶变换DFT5.3 快速傅里叶变换FFT六、总体方案设计6.1 设计有关程序流程图6.2 在CCS环境下加载、调试源程序七、主要参数八、实验结果分析九、设计总结一、前言随着数字电子技术的发展,数字信号处理的理论和技术广泛的应用于通讯、语音处理、计算机和多媒体等领域。

快速傅里叶变换(FFT)使离散傅里叶变换的时间缩短了几个数量级。

在数字信号处理领域被广泛的应用。

FFT已经成为现代化信号处理的重要手段之一。

本次课程设计主要运用CCS这一工具。

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

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

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

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

二、设计题目快速傅里叶变换(FFT)的DSP实现三、设计要求3.1设计目的⑴加深对DFT算法原理和基本性质的理解;⑵熟悉FFT的算法原理和FFT子程序的算法流程和应用;⑶学习用FFT对连续信号和时域信号进行频谱分析的方法;⑷学习DSP中FFT的设计和编程思想;⑸学习使用CCS 的波形观察器观察波形和频谱情况;3.2 基本要求⑴研究FFT 原理以及利用DSP 实现的方法;⑵编写FFT 程序;⑶调试程序,观察结果。

四、 设计内容⑴用DSP 汇编语言及C 语言进行编程;⑵实现FFT 运算、对输入信号进行频谱分析。

五、 设计原理快速傅里叶变换FFT快速傅里叶变换(FFT )是一种高效实现离散傅里叶变换(DFT )的快速算法,是数字信号处理中最为重要的工具之一,它在声学,语音,电信和信号处理等领域有着广泛的应用。

(完整word版)基于DSP的快速傅立叶变换(FFT)的实现(汇编语言)

(完整word版)基于DSP的快速傅立叶变换(FFT)的实现(汇编语言)

快速傅立叶变换(FFT )的实现一、实验目的1.了解FFT 的原理及算法;2.了解DSP 中FFT 的设计及编程方法;3.熟悉FFT 的调试方法;二、实验原理FFT 是一种高效实现离散付立叶变换的算法,把信号从时域变换到频域,在频域分析处理信息。

对于长度为N 的有限长序列x (n ),它的离散傅里叶变换为:(2/)j N nk N W e π-=,称为旋转因子,或蝶形因子。

在x (n )为复数序列的情况下,计算X (k ):对某个k 值,需要N 次复数乘法、(N -1)次复数加法;对所有N 个k 值,需要2N 次复数乘法和N (N -1)次复数加法。

对于N 相当大时(如1024)来说,直接计算它的DFT 所作的计算量是很大的,FFT 的基本思想在于: 利用2()j nk N N W e π-=的周期性即:k N k N N W W +=对称性:/2k k N N N W W +=-将原有的N 点序列分成两个较短的序列,这些序列的DFT 可以很简单的组合起来得到原序列的DFT 。

按时间抽取的FFT ——DIT FFT 信号流图如图5.1所示:图5.1 时间抽取的FFT —DIT FFT 信号流图FFT 算法主要分为以下四步。

第一步 输入数据的组合和位倒序∑=-=10)()(N n nk N W n x k X把输入序列作位倒序是为了在整个运算最后的输出中得到的序列是自然顺序。

第二步 实现N 点复数FFT第一级蝶形运算;第二级蝶形运算;第三级至log2N 级蝶形运算;FFT 运算中的旋转因子N W 是一个复数,可表示:为了实现旋转因子N W 的运算,在存储空间分别建立正弦表和余弦表,每个表对应从0度到180度,采用循环寻址来对正弦表和余弦表进行寻址。

第三步 功率谱的计算X (k )是由实部()R X k 和虚部()I X k 组成的复数:()()()R I X k X k jX k =+;计算功率谱时只需将FFT 变换好的数据,按照实部()R X k 和虚部()I X k 求它们的平方和,然后对平方和进行开平方运算。

DSP课程设计(课题二fft的频谱分析仪)报告

DSP课程设计(课题二fft的频谱分析仪)报告

DSP课程设计报告课题:基于FFT的频谱分析仪设计班级:电子信息工程0901班小组成员:陈湛国200930410103谢海200930410124 指导老师:徐梅宣华南农业大学珠江学院信息工程系一、设计原理(1)实现输入数据的比特反转输入数据的比特反转实际上就是将输入数据进行位码倒置,以便在整个运算后的输出序列是一个自然序列。

在用汇编指令进行位码倒置时,使用位马导致寻址可以大大提高程序执行速度和使用存储器的效率。

在这种寻址方式下,AR0存放的整数N是FFT点的一半,一个辅助寄存器指向一个数据存放的单元。

当使用位码倒置寻址将AR0加到辅助寄存器时,地址将以位码倒置的方式产生。

(2)实现N点复数FFTN点复数FFT算法的实现可分为三个功能块,及第一级蝶形运算、第二级蝶形运算、第三级至log2N级蝶形运算。

在运算过程中,为了避免运算结果的溢出,可对每个蝶形的运算结果右移一位。

(3)功率谱的计算计算功率谱时只需将FFT变换好的数据,按照实部X R(k)和虚部X I(k)求它们的平方和,然后对平方和进行开平方运算。

(4)输出FFT结果二、操作步骤1、运行软件打开Setup CCStudio v3.3,在Family中选择C54XX,Platform中选择simulator,此时在My System中出现C54xx Rev.x CPU Cycle Accurate Simulator,点击,然后再点击“Save&Quit”,此时有窗口“Code Composer Studio Setup”出现,点击“Yes”,然后进入CCStudio:Parallel Debug Manager,在“Open”选项中选择“C54xx Rev.x CPU Cycle Accurate Simulator”,则进入设计的操作界面。

2、载入程序代码,编译并执行首先,点击“Project”,建立新文件;然后点击“File”,建立源文件,后缀名分别为“.C”、“.cmd”;其次,把编好的FFT程序放入“.C”文件中,命令文件也编入“.cmd”中;再次,加载文件“.C”及“.cmd”文件;接着点击“Project”中的“Rebuild Aall”,无错误出现,则继续操作;点击“File”中的“Load Program”,把后缀为“.out”的文件加载进来;然后点击“Run”,最后,点击“View”,“Graph”,进入“time/Frequency”,修改设置后,点击“ok”,则出现图像。

DSPFFT实验报告.pptx

DSPFFT实验报告.pptx
main() {
int i; InitForFFT(); MakeWave() ; for(i=0;i<SAMPLENUMBER;i++ ) {
fWaveR[i]=INPUT[i];
7
fWaveI[i]=0.0f; w[i]=0.0f; } FFT(fWaveR,fWaveI); for(i=0;i<SAMPLENUMBER;i++) { DATA[i]=w[i]; } while(1); } void FFT(float dataR[SAMPLENUMBER],float dataI[SAMPLENUMBER]) { int x0,x1,x2,x3,x4,x5,x6,xx; int i,j,k,b,p,L; float TR,TI,temp; for( i=0;i<SAMPLENUMBER;i++ ) { x0=x1=x2=x3=x4=x5=x6=0; x0=i&0x01; x1=(i/2)&0x01 ; x2=(i/4)&0x01 ; x3=(i/8)&0x01;
DSP 技术课程设计
(FFT)
作者姓名:钟 欣 专业名称:电子科学与技术 指导教师:张 双
1
目录
一、实验结果............................................................................................3 1.1 正弦信号输入的结果 ...............................................................3 1.2 余弦信号输入的结果 ...............................................................4

dsp课程设计实验报告

dsp课程设计实验报告

DSP课程设计实验语音信号的频谱分析:要求首先画出语音信号的时域波形, 然后对语音信号进行频谱分析。

在MATLAB中, 可以利用函数fft对信号进行快速傅立叶变换, 得到信号的频谱特性, 从而加深对频谱特性的理解。

其程序为:>> [y,fs,bits]=wavread('I:\xp.wav',[1024 5120]);>> sound(y,fs,bits);>> Y=fft(y,4096);>> subplot(221);plot(y);title('原始信号波形');>> subplot(212);plot(abs(Y));title('原始信号频谱');程序运行结果为:设计数字滤波器和画出频率响应:根据语音信号的特点给出有关滤波器的性能指标:低通滤波器性能指标, =1000Hz, =1200Hz, =100dB, =1dB;高通滤波器性能指标, =4800Hz, =5000Hz, =100dB, =1dB;带通滤波器性能指标, =1200Hz, =3000Hz, =1000Hz, =3200Hz, =100dB, =1dB;要求学生首先用窗函数法设计上面要求的三种滤波器, 在MATLAB中, 可以利用函数firl 设计FIR滤波器;然后再用双线性变换法设计上面要求的三种滤波器, 在MA TLAB中, 可以利用函数butte、cheby1和ellip设计IIR滤波器;最后, 利用MATLAB中的函数freqz画出各种滤波器的频率响应, 这里以低通滤波器为例来说明设计过程。

低通:用窗函数法设计的低通滤波器的程序如下:>> fp=1000;fc=1200;As=100;Ap=1;fs=22050;>> wc=2*fc/fs;wp=2*fp/fs;>> N=ceil((As-7.95)/(14.36*(wc-wp)/2))+1;>> beta=0.1102*(As-8.7);>> Win=Kaiser(N+1,beta);>>b=firl(N,wc,Win);>>freqz(b,1,512,fs);程序运行结果:这里选用凯泽窗设计, 滤波器的幅度和相位响应满足设计指标, 但滤波器长度(N=708)太长, 实现起来很困难, 主要原因是滤波器指标太苛刻, 因此, 一般不用窗函数法设计这种类型的滤波器。

西南交大DSP实验报告

西南交大DSP实验报告

FFT实验报告1.首先启动CCS,打开实验工程文件,对其中主程序文件按要求进行补充、编译并装载程序。

FFT点数为256点,时域信号为60Hz和180Hz情况下,按要求作图,三个图的参数设置分别为:图形结果为A、时域信号波形为:B、对应谱:C、FFT输出结果2. 修改代码为时域信号为60Hz和160Hz两个信号相乘,重复上面作图步骤。

结果为:A、时域信号波形为:B、对应谱:C、FFT输出结果:分析:在修改代码后,频谱的两个峰值发生了变化,其中第一个峰值仍保持在60Hz处,而第二个峰值则由180Hz转移到了160Hz处。

由此可见,频谱是刚好对应了时域相乘的两个信号的频率。

3. 在实验代码基础上修改代码为1024点FFT,进行程序的编译、运行和对应结果的查看代码主要有如下所示几处修改:(1)#define Sample_Numb 1024 // FFT点数 #define Sample_Numb 1024(2)void fft(float datar[Sample_Numb],float datai[Sample_Numb]){int x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,xx;int i,j,k,b,p,L;float TR,TI,temp;for(i=0;i<Sample_Numb;i++){ x0=x1=x2=x3=x4=x5=x6=x7=x8=x9=0;x0=i&0x01;x1=(i/2)&0x01;x2=(i/4)&0x01;x3=(i/8)&0x01;x4=(i/16)&0x01;x5=(i/32)&0x01;x6=(i/64)&0x01;x7=(i/128)&0x01;x8=(i/256)&0x01;x9=(i/512)&0x01;xx=x0*512+x1*256+x2*128+x3*64+x4*32+x5*16+x6*8+x7*4+x8*2+x9;datai[xx]=datar[i];}(3)for(L=1;L<=10;L++){b=1;i=L-1;while(i>0){ b=b*2;i--;}for(j=0;j<=b-1;j++){ p=1;i=10-L;while(i>0) { p=p*2;i--;}p=p*j;for(k=j;k<1024;k=k+2*b){TR=datar[k];TI=datai[k];temp=datar[k+b];datar[k]=datar[k]+datar[k+b]*cos_tab[p]+datai[k+b]*sin_tab[p];datai[k]=datai[k]-datar[k+b]*sin_tab[p]+datai[k+b]*cos_tab[p];datar[k+b]=TR-datar[k+b]*cos_tab[p]-datai[k+b]*sin_tab[p];datai[k+b]=TI+temp*sin_tab[p]-datai[k+b]*cos_tab[p];}}//}图形结果为:A、时域信号波形为:B、对应谱:C、FFT输出结果这一问对输出入信号做FFT变换的点数为1024点,时域信号为60Hz和180Hz的两个波形相加,时域信号采样率为800Hz,因此输入信号对应频谱出现峰值的频率点在60Hz 和180Hz两点,N=1024,Fs=800 Hz,可以分辨到(800/1024)秒,图C所示的FFT输出结果中,第一个峰值点频率约为76.875 Hz ,第二个峰值点约为230.4 Hz,76.875*(800/1024)=60 Hz,230.4 *(800/1024)=180 Hz。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DSP课程设计报告
设计题目256点FFT
院系:计算机科学学院
专业:__________ 自动化
年级:2008级
姓名:__________________________ 学号:__________________________ 指导教师: _______________________
2011年11月28日
256 点FFT 的实现
一、设计目的
1、加深对DFT算法原理和基本性质的理解;
2、熟悉FFT的算法原理和FFT子程序的算法流程和应用;
3、学习用FFT对连续信号和时域信号进行频谱分析的方法;
4、学习DSP中FFT的设计和编程思想;
5、学习使用CCS的波形观察器观察波形和频谱情况;
二、设计内容
给定256 采样点,求频谱,统计运行时间并在PC 上显示。

三、设计原理
快速傅里叶变换(FFT是一种高效实现离散傅里叶变换( DFT的快速算法,是数字信
号处理中最为重要的工具之一,它在声学,语音,电信和信号处理等领域有着广泛的应用。

快速傅里叶变换FFT
旋转因子WN有如下的特性。

对称性:WNk+N/2=-WNk
周期性:WNn(N-k)=WNk(N-n)=WN-nk
利用这些特性,既可以使DFT中有些项合并,减少了乘法积项,又可以将长序列的DFT 分解成几个短序列的DFT。

FFT就是利用了旋转因子的对称性和周期性来减少运算量的。

FFT的算法是将长序列的DFT分解成短序列的DFT>例如:N为偶数时,先将N点的DFT 分解为两个N/2点的DFT,使复数乘法减少一半:再将每个N/2点的DFT分解成N/4点的DFT,使复数乘又减少一半,继续进行分解可以大大减少计算量。

最小变换的点数称为基数,对于基数为2的FFT 算法,它的最小变换是2点DFT。

一般而言,FFT算法分为按时间抽取的FFT( DIT FFT)和按频率抽取的FFT ( DIF FFT) 两大类。

D IF FFT算法是在时域内将每一级输入序列依次按奇/偶分成2个短序列进行计算。

而DIF FFT算法是在
频域内将每一级输入序列依次奇/偶分成2个短序列进行计算。

两者的区别是旋转因子出现的位置不同,得算法是一样的。

在DIF FFT算法中,旋转因子出现
在输入端,而在DIF FFT 算法中它出现在输入端。

假定序列x(n)的点数N是2的幕,按照DIF FFT算法可将其分为偶序列和奇序列。

偶序列:x(2r)=x1(r)。

相关文档
最新文档