基于DSP的FFT实现_第1页
基于DSP的FFT实现_第2页
基于DSP的FFT实现_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-课程设计(论文)题 目名称基于DSP的FFT的实现课 程 名 称专业课程设计学生*系 、专 业信息工程系通信工程指导教师2021 年4月27 日摘 要随着计算机和微电子技术的飞速开展,基于数字信号处理的频谱分析已经应用到各个领域并且发挥着重要作用。信号处理方法是当前机械设备故障诊断中重要的技术根底之一,分析结果的准确程度是诊断成功与否的关键因素。研究频谱分析是当前主要的开展方向之一。数字信号处理根本上从两个方面来解决信号的处理问题:一个是时域方法,即数字滤波;另一个是频域方法,即频谱分析.本文主要介绍了离散傅里叶变换以及快速傅里叶变换,通过对DFT以及FFT算法进展研究,从根底深入研究和学习

2、,掌握FFT算法的关键。通过对DSP芯片工作原理以及开发环境的学习,掌握CCS的简单调试和软件仿真,在DSP芯片上实现对信号的实时频谱分析。关键字:DSP;CCS仿真软件;FFT目 录第1章 绪论11.1 DSP简介11.2设计目的11.3设计容11.4设计原理11.5FFT算法的DSP实现过程2第2章 硬件实现42.1系统的硬件设计42.2原理图的设计5第3章 软件设计73.1 FFT运算及存储分配73.2设计流程图8第4章 系统仿真94.1 FFT实现的方法94.2程序运行结果9第5章 总结12致 13参考文献14附录 源程序15. z-第1章 绪论1.1 DSP简介数字信号处理(Digi

3、tal Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进展分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进展有效的传输与应用。数字信号处理是以众多学科为理论根底,它所涉及的围极其广泛。如数学领域中的微积分、概率统计、随机过程、数字分析等都是数字信号处理的根底工具。它与网络理论、信号与系统、控制理论、通信理论、故障诊断等密切相关。1.2设计目的1加深对DFT算法原理和根本性质的理解;2熟悉FFT的算法原理和FFT子程序的算法流程和应用;3学习用FFT对连

4、续信号和时域信号进展频谱分析的方法;4学习DSP中FFT的设计和编程思想;5学习使用CCS的波形观察器观察波形和频谱情况;6简要画出硬件设计电路图。1.3设计容用DSP汇编语言进展编程,实现FFT运算,对输入信号进展频谱分析。1.4设计原理快速傅氏变换FFT是一种高效实现离散傅氏变换的快速算法,是数字信号处理中最为重要的工具之一,它在声学、语音、电信、和信号处理等领域有着广泛的应用。对于有限长离散数字信号*n,0 n N-1,其离散谱*k可以由离散付氏变换DFT求得。可以方便的把它改写为如下形式:不难看出,WN是周期性的,且周期为N,即N的周期性是DFT的关键性质之一。为了强调起见,常用表达式

5、WN取代W以便明确其周期是N。FFT算法可以分为按时间抽取FFT和按频率抽取FFT两大类,输入也有和复数之分,一般情况下,都假定输入序列为复数。FFT算法利用旋转因子的对称性和周期性,加快了运算速度。用定点DSP芯片实现FFT程序时,一个比较重要的问题是防止中间结果的溢出,防止中间结果的溢出的方法是对中间数值归一化。为了防止对每级都进展归一化会降低运算速度,最好的方法是只对可能溢出的进展归一化,而不可能溢出的则不进展归一化。由DFT的定义可以看出,在*n为复数序列的情况下,完全直接运算N点DFT需要N-12次复数乘法和NN-1次加法。因此,对于一些相当大的N值如1024来说,直接计算它的DFT

6、所作的计算量是很大的。FFT的根本思想在于,将原有的N点序列序列分成两个较短的序列,这些序列的DFT可以很简单的组合起来得到原序列的DFT。例如,假设N为偶数,将原有的N点序列分成两个N/2点序列,则计算N点DFT将只需要约(N/2)2 ·2=N2/2次复数乘法。即比直接计算少作一半乘法。因子N/22表示直接计算N/2点DFT所需要的乘法次数,而乘数2代表必须完成两个DFT。上述处理方法可以反复使用,即N/2点的DFT计算也可以化成两个N/4点的DFT假定N/2为偶数,从而又少作一半的乘法。这样一级一级的划分下去一直到最后就划分成两点的FFT运算的情况。1.5 FFT算法的DSP实现

7、过程DSP芯片的出现使FFT的实现方法变得更为方便。由于大多数DSP芯片都具有在单指令周期完成乘法累加操作,并且提供了专门的FFT指令,使得FFT算法在DSP芯片实现的速度更快。FFT算法可以分为按时间抽取FFT和按频率抽取FFT两大类,输入也有实数和复数之分,一般情况下,都假定输入序列为复数。运算序列的存储分配FFT运算时间是衡量DSP芯片性能的一个重要指标,因此提高FFT的运算速度是非常重要的。在用DSP芯片实现FFT算法时,应允许利用DSP芯片所提供的各种软、硬件资源。如何利用DSP芯片的有限资源,合理地安排好所使用的存储空间是十分重要的。1.5.2 FFT运算的实现用TMS320C54

8、*的汇编程序实现FFT算法主要分为四步:(1)实现输入数据的比特反转输入数据的比特反转实际上就是将输入数据进展码位倒置,以便在整个运算后的输出序列是一个自然序列。在用汇编指令进展码位倒置时,使用码位倒置可以大大提高程序执行速度和使用存储器的效率。在这种寻址方式下,AR0存放的整数N是FFT点的一半,一个辅助存放器指向一个数据存放的单元。当使用位码倒置寻址将AR0加到辅助存放器时,地址将以位码倒置的方式产生。(2)实现N点复数FFTN点复数FFT算法的实现可分为三个功能块,即第一级蝶形运算、第二级蝶形运算、第三级至级蝶形运算。对于任何一个2的整数幂,总可以通过M次分解最后成为2点的DFT计算。通

9、过这样的M次分解,可构成M即级迭代计算,每级由N/2个蝶形运算组成。(3)功率谱的计算用FFT计算想*(n)的频谱,即计算*k=*(k)一般是由实部(k)和虚部(k)组成的复数,即*k=(k)+j(k)因此,计算功率谱时只需将FFT变换好的数据,按照实部实部(k)和虚部(k)求它们的平方和,然后对平方和进展开平方运算。但是考虑到编程的难度,对于求FFT变换后数据的最大值,不开平方也可以找到最大值,并对功率谱的结果没有影响,所以在实际的DSP编程中省去了开方运算。第2章 硬件实现2.1系统的硬件设计基于DSP的系统设计过程中,最小系统的设计是整个系统设计的第一步,系统设计总是从最小系统开场,逐步

10、向系统应用围扩展,最终以DSP为核心的大系统的设计。因此最小系统设计DSP设计的关键。DSP最小系统的设计包括DSP电源和地线的设计,JTAG仿真口的设计、复位和时钟电路的设计、上拉和下拉引脚的设计等。TMS320C54*锁相环电路、指示灯、 滤波电路时钟复位电路TPS7333Q电源模块RAM存储模块JTAG仿真电路图2.1.1 最小系统的设计芯片介绍1该模块上的资源有32千字FLASH;2千字SARAM,544字DARAM,外扩64千字的程序ROM,64千字的数据RAM;3两个事件管理器EVA和EVB;4可扩展外部存储器总共192K字空间:64K程序存储器,64K字数据存储器空间,64K字I

11、/O寻址空间;5看门狗定时模块;619位A/D转换器;7控制局域网络CAN模块,串行通信接口SCI模块;816位串行外设SPI接口模块;9基于锁相环的时钟发生器;10高达40个可单独编程或复用的通用输入/输出引脚GPIO;115个外部中断;12电源管理包括3种低功耗模式,能独立地将外设器件转入低功耗工作模式;2.2原理图的设计DSP最小系统的设计包括DSP电源设计,JTAG仿真口的设计、复位和时钟电路的设计、上拉和下拉引脚的设计等电源电路的设计电源电路的选择是系统设计的一个重要的局部,设计好坏对系统的影响最大。首先需要注意的是,为了减少电源噪声和互相干扰,数字电路和模拟电路一般要独立供电,数字

12、地和模拟地也要分开,并最终通过一个磁珠在一点连在一起,用TPS7333Q进展3.3V电压的转换对最小系统供电图2.2.1 电源电路复位电路设计TMS320C54*部带有复位电路,因此可以直接RS复位引脚外面接一个上拉电阻即可,这对于简化外围电路,减少电路板尺寸很有用处,但是为了调试方便经常采用手动复位电路。锁相环电路设计图2.2.3 锁相环电路JTAG口JTAG是Joint Test Action Group的简称,又称JTAG口,它是一符合IEEE Std 1149.1边界扫描逻辑标准的标准接口。它主要用于在硬件上对DSP进展实时在线仿真测试和DSP程序的下载,它提供对所连接设备的边界扫描,

13、同时也可以用来测试引脚到引脚的连续性,以及进一步进展DSP芯片的外围器件的操作测试。第3章 软件设计3.1 FFT运算及存储分配1DSP芯片的出现使FFT的实现方法变得更为方便,由于大多数DSP芯片都具有在单指令周期完成乘法累加的操作,并提供了专门的FFT指令,使得FFT算法在DSP的实现速度更快。一般,FFT的算法可分为按时间抽取FFT和按频率抽取FFT,输入也有实数和复数之分,一般情况下都假定输入是复数序列。2FFT运算序列的存储分配FFT运算时间是衡量DSP芯片性能的一个重要指标,因此提高FFT的运算速度是非常重要的。在用DSP芯片实现FFT算法时,应允许利用DSP芯片所提供的各种软、硬

14、件资源。如何合理的利用DSP芯片的有限资源,合理的安排DSP芯片所提供的存储空间相当关键。本设计采用如下所示的存储分配:图3.1数据空间分配图3.2设计流程图DSP初始化串口设置AD设置设置信号源类型、频率幅值、和采样点数串口接收,AD采样位码倒置FFT运算功率谱计算串口发送转换结果观看转换结果,保存数据图3.2 程序流程图第4章 系统仿真4.1 FFT实现的方法1根据N值,修改rfft_task.asm中的两个常数,如N=64.K_FFT_SIZE.set 64K_LOGN .set 62准备输入数据文件in.dat。输入数据按实部、虚部,实部、虚部,顺序存放。3汇编、仿真执行,得到输出数据

15、文件out.dat。4根据out.dat作图,就可以得到输入信号的功率谱图。当N超过1024时,除了修改K_FFT_SIZE和K_LOGN两个常数外,还要增加系数并且修改rfft_task d命令文件。通过data.pjt完成一个64点FFT程序,输入信号为一正弦波。操作步骤如下:1进入CCS环境。2翻开CCS选择FileNewSource File。3编写源程序代码。4创立工程文件。5点击Project选择Build Options。6在弹出的对话框在设置相应的编译参数,一般情况下,按默认值就可以。7在弹出的对话框中选择连接的参数设置,设置传输文件、堆栈的大小以及初始化的方式。8点击Proj

16、ectBuild all,对工程进展编译。9点击Fileload program,弹出的对话框中载入debug文件夹下的.out可执行文件。10点击debugGo M ain回到C程序的入口。11运行程序,观察结果。4.2程序运行结果验证输入数据波形,设置参数:Start Address=0*2800,Page=Data,Acquisition Buffer Size=64,Display Data Size=64,DSP Data Type=32-bit signed integer 点击OK,就可以看到输入数据波形:图4.2.1输入数据波形全速运行程序,看输出结果,设置波形对话框参数:St

17、art Address=0*2c80,Page=Data,Acquisition Buffer Size=64,Display Data Size=64,DSP Data Type=16-bit signed integer点击OK,就可以看到FFT输出结果:图4.2.2 FFT输出结果第5章 总结在本次课程设计中,我、*、*三人一组。*负责硬件设计局部,*负责软件设计局部,我负责系统仿真及论文的编写。在系统仿真时我们需要在实验箱上设置信号源,信号源的幅度应该设在1000左右,信号的频率设在300左右,电压偏移设为1,通道设为0。在论文编写的过程中,我首先对本次课程设计进展了总体设计,然后根据

18、*、*和我各自负责的容进展汇总编排。通过本次课程设计我发现DSP应用型很强,许多的原理,程序看似简单,真正去做才知道知识并没有自己想象的那样扎实。从而懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手能力和独立思考的能力。树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的困难和成功时的喜悦。本次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄

19、不懂的知识,收获颇丰。致 在此次设计中,*教师作为我的指导教师,至始至终都给予我了不少帮助,从下任务书开场,就帮我制定规划,提醒我应注意的问题,借给我资料和实验器材,和我一起调程序,并提出了很多的修改意见以及完善方案。此外还认真批阅了我的论文,指出其中很多瑕疵和不清晰的地方,更重要的是在我遇到困难时对我的鼓励,让我不懈怠、不退缩、也让我更有信心,可以说我的每一点进展都与黄教师的付出是分不开的。当然还在此,我向身边关心我的教师、同学致以诚挚的意!有其他教师和同学都帮了我不少忙,在此不再赘述。谨祝教师们工作顺利,万事如意,桃满天下;同学们学业有成,前程似锦!参考文献1 戴明桢等编著TMS320C5

20、4* DSP 构造原理及应用:航空航天大学,第2版,2007;2 启琮编著DSP技术的开展与应用:高等教育,2002;3 胡广书编著数字信号处理理论、算法与实现:清华大学,2005;4黄席椿、高顺良编著滤波器综合法设计原理:人民邮电,1978;5永欢 梁在中等编著实用数学手册:科学,2001;6程佩青编著数字滤波与快速傅里叶变换:清华大学,1990;7 合众达电子技术编著SEED-DTK系列实验手册合众达电子技术出版,2007。附录 源程序*include "stdio.h"*include "math.h"main() int i; float f25

21、6; FILE *fp;if(fp=fopen("d:tms320c54fftsindata", "wt")=NULL) printf("can't open file!n"); e*it(0);for(i=0;i<=255;i+) fi=sin(2*3.1415926*i/256.0); fprintf(fp, ".word %ldn",(log)(fi*16384);fclose(fp);将生成的数据文件复制到目标系统存储器的语句为 d_input .copy sindata汇编语言程序: .ti

22、tle "fft.asm" .mmregs .include "coeff.inc" .include "in.inc" .def startsine: .usect "sine",512cosine: .usect "cosine",512fft_data: .usect "fft_data",1024fft_out: .usect "fft_out",512 STACK .usect "STACK",10K_DATA_ID*_1 .

23、set 2K_DATA_ID*_2 .set 4K_DATA_ID*_3 .set 8K_TWID_TBL_SIZE .set 512K_TWID_ID*_3 .set 128K_FLY_COUNT_3 .set 4K_FFT_SIZE .set 64 K_LOGN .set 6 PA0 .set 0 .bss d_twid_id*,1 .bss d_data_id*,1 .bss d_grps_t,1 .sect "fft_prg" .asg AR2,REORDERED .asg AR3,ORIGINAL_INPUT .asg AR7,DATA_PROC_BUF star

24、t: SSB* FRCT STM *STACK+10,SP STM *sine,AR1 RPT *511 MVPD *sine1,*AR1+ STM *cosine,AR1 RPT *511 MVPD cosine1,*AR1+ STM *d_input,ORIGINAL_INPUT STM *fft_data,DATA_PROC_BUF MVMM DATA_PROC_BUF,REORDERED STM *K_FFT_SIZE-1,BRC · RPTBD bit_rev_end-1 STM *K_FFT_SIZE,AR0 MVDD *ORIGINAL_INPUT+,*REORDERE

25、D+ MVDD *ORIGINAL_INPUT-,*REORDERED+ MAR *ORIGINAL_INPUT+0B bit_rev_end: .asg AR1,GROUP_COUNTER .asg AR2,P* .asg AR3,Q* .asg AR4,WR .asg AR5,WI .asg AR6,BUTTERFLY_COUNTER .asg AR7,STAGE_COUNTER STM *0,BK LD *-1,ASM STM *fft_data,P* STM *fft_data+K_DATA_ID*_1,Q* STM K_FFT_SIZE/2-1,BRC LD *P*,16,A RPT

26、BD stage1end-1 STM *K_DATA_ID*_1+1,AR0 SUB *Q*,16,A,B ADD *Q*,16,A STH A,ASM,*P*+ ST B,*Q*+ |LD *P*,A SUB *Q*,16,A,B ADD *Q*,16,A STH A,ASM,*P*+0% ST B,*Q*+0% |LD *P*,A stage1end: STM *fft_data,P* STM *fft_data+K_DATA_ID*_2,Q* STM *K_FFT_SIZE/4-1,BRC LD *P*,16,A RPTBD stage2end-1 STM *K_DATA_ID*_2+1

27、,AR0 SUB *Q*,16,A,B ADD *Q*,16,A STH A,ASM,*P*+ ST B,*Q*+ |LD *P*,A SUB *Q*,16,A,B ADD *Q*,16,A STH A,ASM,*P*+ STH B,ASM,*Q*+ MAR *Q*+ ADD *P*,*Q*,A SUB *P*,*Q*-,B STH A,ASM,*P*+ SUB *P*,*Q*,A ST B,*Q* |LD *Q*+,B ST A,*P* |ADD *P*+0%,A ST A,*Q*+0% |LD *P*,A stage2end: STM *K_TWID_TBL_SIZE,BK ST *K_T

28、WID_ID*_3,d_twid_id* STM *K_TWID_ID*_3,AR0 STM *cosine,WR STM *sine,WI STM *K_LOGN-2-1,STAGE_COUNTER ST *K_FFT_SIZE/8-1,d_grps_t STM *K_FLY_COUNT_3-1,BUTTERFLY_COUNTER ST *K_DATA_ID*_3,d_data_id* stage: STM *fft_data,P* LD d_data_id*,A ADD *(P*),A STLM A,Q* MVDK d_grps_t,GROUP_COUNTER group: MVMD BU

29、TTERFLY_COUNTER,BRC RPTBD butterflyend-1 LD *WR,T MPY *Q*+,A MAC *WI+0%,*Q*-,A ADD P*,16,A,B ;B:=(QR*WR+QI*WI)+PR ST B,*P* ;PR':=(QR*WR+QI*WI)+PR)/2 |SUB *P*+,B ST B,*Q* |MPY *Q*+,A MAS *Q*,*WR+0%,A ADD *P*,16,A,B ST B,*Q*+ |SUB *P*,B LD *WR,T ST B,*P*+ |MPY *Q*+,A butterflyend:PSHM AR0 MVDK d_data_id*,AR0MAR *P*+0 MAR *Q*+0 BANZD group,*GROUP_COUNTER- POPM AR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论