基于DSP的FFT实现课程设计__第1页
基于DSP的FFT实现课程设计__第2页
基于DSP的FFT实现课程设计__第3页
基于DSP的FFT实现课程设计__第4页
基于DSP的FFT实现课程设计__第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

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

2、T 以及FFT 算法进行研究,从基础深入研究和学习,掌握FFT 算法的关键。通过对DSP 芯片工作原理以及开发环境的学习,掌握CCS 的简单调试和软件仿真,在 DSP 芯片上实现对信号的实时频谱分析。聞創沟燴鐺險爱氇谴净。关键字: DSP; CCS仿真软件;FFT第 1 章 绪论 0残骛楼諍锩瀨濟溆塹籟。1.1 DSP 简介 0酽锕极額閉镇桧猪訣锥。1.2 设计目的 0彈贸摄尔霁毙攬砖卤庑。1.3 设计内容 0謀荞抟箧飆鐸怼类蒋薔。1.4 设计原理 0厦礴恳蹒骈時盡继價骚。1.5 FFT算法的DSP实现过程 1 茕桢广鳓鯡选块网羈泪。第 2 章 硬件实现 3鹅娅尽損鹌惨歷茏鴛賴。2.1 系统的

3、硬件设计 3籟丛妈羥为贍偾蛏练淨。2.2 原理图的设计 4預頌圣鉉儐歲龈讶骅籴。第3 章软件设计 6渗釤呛俨匀谔鱉调硯錦。3.1 FFT运算及存储分配 6铙誅卧泻噦圣骋贶頂廡。3.2 设计流程图 7擁締凤袜备訊顎轮烂蔷。第4 章系统仿真 8贓熱俣阃歲匱阊邺镓騷。4.1 FFT 实现的方法 8坛摶乡囂忏蒌鍥铃氈淚。4.2 程序运行结果 9蜡變黲癟報伥铉锚鈰赘。第5 章总结 11買鲷鴯譖昙膚遙闫撷凄。致谢 1綾镝鯛駕櫬鹕踪韦辚糴。2参考文献1驅踬髏彦浃绥譎饴憂锦。3附录 源程序14猫虿驢绘燈鮒诛髅貺庑。第 1 章 绪论1.1 DSP简介数字信号处理(Digital Signal Processin

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

5、学习用FFT 对连续信号和时域信号进行频谱分析的方法;( 4) 学习DSP中 FFT的设计和编程思想;( 5) 学习使用CCS的波形观察器观察波形和频谱情况;( 6) 简要画出硬件设计电路图。1.3 设计内容用 DSP 汇编语言进行编程,实现FFT 运算,对输入信号进行频谱分析。1.4 设计原理快速傅氏变换( FFT) 是一种高效实现离散傅氏变换的快速算法,是数字信号处理中最为重要的工具之一,它在声学、语音、电信、和信号处理等领域有着广泛的应用。構氽頑黉碩饨荠龈话骛。对于有限长离散数字信号xn , 0 n N-1 , 其离散谱 xk 可以由离散付氏变换( DFT) 求得。可以方便的把它改写为如

6、下形式:輒峄陽檉簖疖網儂號泶。N1X kx nWNnkk 0,1,., N 1n0不难看出,WN 是周期性的,且周期为N ,即N 1j (2 )nkX kx ne Nk0,1,.,N 1n0N 的周期性是DFT 的关键性质之一。为了强调起见,常用表达式WN 取WN(n mN)(k lN) WNnkm,l 0, 1, 2.代 W 以便明确其周期是N 。FFT 算法可以分为按时间抽取FFT 和按频率抽取FFT 两大类, 输入也有和复数之分,一般情况下,都假定输入序列为复数。FFT 算法利用旋转因子的对称性和周期性,加快了运算速度。用定点DSP 芯片实现FFT 程序时,一个比较重要的问题是防止中间结

7、果的溢出,防止中间结果的溢出的方法是对中间数值归一化。为了避免对每级都进行归一化会降低运算速度,最好的方法是只对可能溢出的进行归一化,而不可能溢出的则不进行归一化。尧侧閆繭絳闕绚勵蜆贅。由 DFT 的定义可以看出,在xn 为复数序列的情况下,完全直接运算N点 DFT 需要 ( N-1 ) 2 次复数乘法和N( N-1 ) 次加法。因此,对于一些相当大的 N 值 ( 如 1024) 来说,直接计算它的DFT 所作的计算量是很大的。FFT的基本思想在于,将原有的N 点序列序列分成两个较短的序列,这些序列的DFT可以很简单的组合起来得到原序列的DFT。例如,若N 为偶数,将原有的N点 序 列 分 成

8、 两 个 ( N/2) 点 序 列 , 那 么 计 算 N 点 DFT 将 只 需 要 约(N/2)2 · 2=N2/2 次复数乘法。即比直接计算少作一半乘法。因子( N/2) 2表示直接计算( N/2) 点 DFT 所需要的乘法次数,而乘数2 代表必须完成两个DFT。上述处理方法可以反复使用,即( N/2) 点的 DFT 计算也可以化成两个( N/4) 点的DFT(假定N/2 为偶数) ,从而又少作一半的乘法。这样一级一级的划分下去一直到最后就划分成两点的FFT 运算的情况。识饒鎂錕缢灩筧嚌俨淒。1.5 FFT算法的 DSP实现过程DSP 芯片的出现使FFT 的实现方法变得更为方便

9、。由于大多数DSP 芯片都具有在单指令周期内完成乘法累加操作,并且提供了专门的FFT 指令,使得 FFT 算法在 DSP 芯片实现的速度更快。FFT 算法可以分为按时间抽取FFT和按频率抽取FFT 两大类,输入也有实数和复数之分,一般情况下,都假定输入序列为复数。凍鈹鋨劳臘锴痫婦胫籴。1.5.1 FFT运算序列的存储分配FFT 运算时间是衡量DSP 芯片性能的一个重要指标,因此提高FFT 的运算速度是非常重要的。在用 DSP 芯片实现FFT 算法时, 应允许利用DSP 芯片所提供的各种软、硬件资源。如何利用DSP 芯片的有限资源,合理地安排好所使用的存储空间是十分重要的。恥諤銪灭萦欢煬鞏鹜錦。

10、1.5.2 FFT运算的实现用 TMS320C54x 的汇编程序实现FFT 算法主要分为四步:(1)实现输入数据的比特反转输入数据的比特反转实际上就是将输入数据进行码位倒置,以便在整个运算后的输出序列是一个自然序列。在用汇编指令进行码位倒置时,使用码位倒置可以大大提高程序执行速度和使用存储器的效率。在这种寻址方式下,AR0 存放的整数 N 是 FFT 点的一半,一个辅助寄存器指向一个数据存放的单元。当使用位码倒置寻址将AR0 加到辅助寄存器时,地址将以位码倒置的方式产生。鯊腎鑰诎褳鉀沩懼統庫。(2)实现N 点复数 FFTN 点复数 FFT 算法的实现可分为三个功能块,即第一级蝶形运算、第二级蝶

11、形运算、第三级至级蝶形运算。对于任何一个2 的整数幂,总可以通过M 次分解最后成为2 点的 DFT 计算。 通过这样的M 次分解, 可构成M (即)级迭代计算,每级由N/2 个蝶形运算组成。硕癘鄴颃诌攆檸攜驤蔹。(3)功率谱的计算用 FFT 计算想 x(n)的频谱,即计算X( k) =X(k) 一般是由实部(k)和虚部(k)组成的复数,即X( k) = (k)+j (k)因此,计算功率谱时只需将FFT 变换好的数据,按照实部实部(k)和虚部(k)求它们的平方和,然后对平方和进行开平方运算。但是考虑到编程的难度,对于求FFT 变换后数据的最大值,不开平方也可以找到最大值,并对功率谱的结果没有影响

12、,所以在实际的DSP 编程中省去了开方运算。阌擻輳嬪諫迁择楨秘 騖。第 2 章 硬件实现2.1 系统的硬件设计基于 DSP 的系统设计过程中,最小系统的设计是整个系统设计的第一步,系统设计总是从最小系统开始,逐步向系统应用范围扩展,最终以DSP 为核心的大系统的设计。因此最小系统设计DSP 设计的关键。DSP 最小系统的设计包括 DSP 电源和地线的设计,JTAG 仿真口的设计、复位和时钟电路的设计、上拉和下拉引脚的设计等。氬嚕躑竄贸恳彈瀘颔澩。釷鹆資贏車贖孙滅獅赘。图 2.1.1 最小系统的设计芯片介绍( 1) 该模块上的资源有32 千字 FLASH ;( 2) 千字 SARAM , 544

13、 字 DARAM ,外扩 64千字的程序ROM, 64千字的数据RAM ;( 3) 两个事件管理器EVA 和 EVB;( 4) 可扩展外部存储器总共192K 字空间: 64K 程序存储器,64K 字数据存储器空间,64K 字 I/O 寻址空间;怂阐譜鯪迳導嘯畫長凉。( 5) 看门狗定时模块;( 6) 19 位 A/D 转换器;( 7) 控制局域网络CAN 模块,串行通信接口SCI 模块;( 8) 16 位串行外设SPI 接口模块;( 9) 基于锁相环的时钟发生器;( 10) 高达 40 个可单独编程或复用的通用输入/输出引脚GPIO;( 11) 5 个外部中断;( 12) 电源管理包括3 种低

14、功耗模式,能独立地将外设器件转入低功耗工作模式;2.2 原理图的设计DSP 最小系统的设计包括DSP 电源设计,JTAG 仿真口的设计、复位和时钟电路的设计、上拉和下拉引脚的设计等谚辞調担鈧谄动禪泻類。2.2.1 电源电路的设计电源电路的选择是系统设计的一个重要的部分,设计好坏对系统的影响最大。 首先需要注意的是,为了减少电源噪声和互相干扰,数字电路和模拟电路一般要独立供电,数字地和模拟地也要分开,并最终通过一个磁珠在一点连在一起,用 TPS7333Q进行3.3V 电压的转换对最小系统供电嘰觐詿缧铴嗫偽純铪锩。2.2.2 复位电路设计TMS320C54X 内部带有复位电路,因此可以直接RS 复

15、位引脚外面接一个上拉电阻即可,这对于简化外围电路,减少电路板尺寸很有用处,但是为了调试方便经常采用手动复位电路。熒绐譏钲鏌觶鷹緇機库。2.2.3 锁相环电路设计2.2.3 锁相环电路2.2.4 JTAG 口JTAG 是 Joint Test Action Group 的简称,又称JTAG 口,它是一符合IEEE Std 1149.1 边界扫描逻辑标准的标准接口。它主要用于在硬件上对DSP进行实时在线仿真测试和DSP 程序的下载,它提供对所连接设备的边界扫描,同时也可以用来测试引脚到引脚的连续性,以及进一步进行DSP 芯片的外围器件的操作测试。鶼渍螻偉阅劍鲰腎邏蘞。第 3 章 软件设计3.1 F

16、FT运算及存储分配( 1) DSP芯片的出现使FFT 的实现方法变得更为方便,由于大多数DSP芯片都具有在单指令周期内完成乘法累加的操作,并提供了专门的 FFT 指令,使得FFT 算法在DSP 的实现速度更快。一般,FFT 的算法可分为按时间抽取 FFT 和按频率抽取FFT,输入也有实数和复数之分,一般情况下都假定输入是复数序列。纣忧蔣氳頑莶驅藥悯骛。( 2) FFT 运算序列的存储分配FFT 运算时间是衡量DSP 芯片性能的一个重要指标,因此提高FFT 的运算速度是非常重要的。在用 DSP 芯片实现FFT 算法时, 应允许利用DSP 芯片所提供的各种软、硬件资源。如何合理的利用DSP 芯片的

17、有限资源,合理的安排 DSP 芯片所提供的存储空间相当关键。本设计采用如下所示的存储分配:颖刍莖蛺饽亿顿裊赔泷。28.bssstacksinecosined_inputfft_datafft_out0000007F存储映射寄存器206020612062暂存单元206321FF堆栈220023FF正弦系数表240025FF余弦系数表2800287F输入数据28802C7FFFT结果 (实部、虚部)2C80307FFFT结果 (功率谱)3.1 数据空间分配图3.2设计流程图设置信号源类型、频率幅值、和采样点数AD 采样3.2 程序流程图第 4 章 系统仿真4.1 FFT实现的方法( 1) 根据 N

18、 值,修改 rfft_task.asm中的两个常数,如N=64.K_FFT_SIZE .set 64K_LOGN.set 6( 2) 准备输入数据文件in.dat。 输入数据按实部、虚部, 实部、 虚部, 顺序存放。( 3) 编、链接、仿真执行,得到输出数据文件out.dat。( 4)根据out.dat作图,就可以得到输入信号的功率谱图。当 N 超过 1024 时,除了修改K_FFT_SIZE 和 K_LOGN 两个常数外,还要增加系数并且修改rfft_task.cmd 命令文件。濫驂膽閉驟羥闈詔寢賻。通过 data.pjt完成一个 64 点 FFT 程序,输入信号为一正弦波。 操作步骤如下:

19、( 1)进入 CCS 环境 。( 2)打开CCS 选择File New Source File。( 3)编写源程序代码。( 4)创建工程文件。( 5)点击Project选择 Build Options。( 6)在弹出的对话框在设置相应的编译参数,一般情况下,按默认值就可( 7)在弹出的对话框中选择连接的参数设置,设置传输文件、堆栈的大小( 8)点击Project Build all ,对工程进行编译。( 9)点击File load program,弹出的对话框中载入debug 文件夹下.out可执行文件。銚銻縵哜鳗鸿锓謎諏涼。( 10)点击debug Go M ain 回到 C 程序的入口。(

20、 11)运行程序,观察结果。4.2 程序运行结果验证输入数据波形,设置参数:Start Address=0x2800, Page=Data,Acquisition Buffer Size=64 , Display Data Size=64 , DSP DataType=32-bit signed integer挤貼綬电麥结鈺贖哓类。点击OK,就可以看到输入数据波形:4.2.1 输入数据波形全速运行程序,看输出结果,设置波形对话框参数:Start Address=0x2c80,Page=Data, Acquisition Buffer Size=64, Display Data Size=64,

21、 DSP Data Type=16-bit signed integer赔荊紳谘侖驟辽輩袜錈。点击OK,就可以看到FFT 输出结果:4.2.2 FFT 输出结果第 5 章总结在本次课程设计中,我、XXX 、 XXX 三人一组。XXX 负责硬件设计部分,XXX 负责软件设计部分,我负责系统仿真及论文的编写。在系统仿真时我们需要在实验箱上设置信号源,信号源的幅度应该设在1000 左右,信号的频率设在300 左右,电压偏移设为1,通道设为0。在论文编写的过程中,我首先对本次课程设计进行了总体设计,然后根据XXX 、 XXX 和我各自负责的内容进行汇总编排。 塤礙籟馐决穩賽釙冊庫。通过本次课程设计我发

22、现DSP 应用型很强,许多的原理,程序看似简单,真正去做才知道知识并没有自己想象的那样扎实。从而懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来, 从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。裊樣祕廬廂颤谚鍘羋蔺。本次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。 仓嫗盤

23、紲嘱珑詁鍬齊驁。致谢在此次设计中,XX 老师作为我的指导老师,至始至终都给予我了不少帮助,从下任务书开始,就帮我制定规划,提醒我应注意的问题,借给我资料和实验器材, 和我一起调程序,并提出了很多的修改意见以及完善方案。此外还认真批阅了我的论文,指出其中很多瑕疵和不清晰的地方,更重要的是在我遇到困难时对我的鼓励,让我不懈怠、不退缩、也让我更有信心,可以说我的每一点进展都与黄老师的付出是分不开的。绽萬璉轆娛閬蛏鬮绾瀧。当然还在此,我向身边关心我的老师、同学致以诚挚的谢意!有其他老师和同学都帮了我不少忙,在此不再赘述。谨祝老师们工作顺利,万事如意,桃李满天下;同学们学业有成,前程似锦!骁顾燁鶚巯瀆蕪

24、領鲡赙。参考文献1 戴明桢等编著TMS320C54X DSP 结构原理及应用北京:航空航天大学出版社,第2版,2007; 瑣钋濺暧惲锟缟馭篩凉。2 彭启琮编著DSP 技术的发展与应用北京:高等教育出版社,2002;3 胡广书编著数字信号处理理论、算法与实现北京:清华大学出版社,2005;4 黄席椿、高顺良编著滤波器综合法设计原理北京:人民邮电出版社,1978;5 沈永欢 梁在中等编著实用数学手册北京:科学出版社,2001;6 程佩青编著数字滤波与快速傅里叶变换北京:清华大学出版社,1990; 鎦诗涇艳损楼紲鯗餳類。7 北京合众达电子技术有限公司编著SEED-DTK 系列实验手册北京合众达电子技

25、术有限公司出版,2007。 栉缏歐锄棗鈕种鵑瑶锬。附录 源程序#include "stdio.h"#include "math.h"main()int i;float f256;FILE *fp;if(fp=fopen("d:tms320c54fftsindata", "wt")=NULL) 辔烨棟剛殓攬瑤丽阄应。printf("can't open file!n");exit(0);for(i=0;i<=255;i+)fi=sin(2*3.1415926*i/256.0);fpr

26、intf(fp, ".word %ldn",(log)(fi*16384);fclose(fp);将生成的数据文件复制到目标系统存储器的语句为d_input .copy sindata汇编语言程序:.title "fft.asm".mmregs.include "coeff.inc".include"in.inc".defstartsine:.usect"sine",512cosine:.usect"cosine",512fft_data:.usect"fft_da

27、ta",1024fft_out:.usect"fft_out",512STACK.usect"STACK",10K_DATA_IDX_1.set 2K_DATA_IDX_2.set 4K_DATA_IDX_3.set 8K_TWID_TBL_SIZE .set 512K_TWID_IDX_3.set 128K_FLY_COUNT_3 .set 4K_FFT_SIZE.set64K_LOGN.set 6PA0.set 0.bssd_twid_idx,1.bssd_data_idx,1.bssd_grps_cnt,1.sect"fft_p

28、rg".asgAR2,REORDERED.asgAR3,ORIGINAL_INPUT.asgAR7,DATA_PROC_BUFstart:SSBXFRCTSTM#STACK+10,SPSTM#sine,AR1RPT#511MVPD #sine1,*AR1+STM#cosine,AR1RPT#511MVPDcosine1,*AR1+STM#d_input,ORIGINAL_INPUTSTM#fft_data,DATA_PROC_BUFMVMMDATA_PROC_BUF,REORDEREDSTM#K_FFT_SIZE-1,BRC·RPTBDbit_rev_end-1STM#K_

29、FFT_SIZE,AR0MVDD *ORIGINAL_INPUT+,*REORDERED+MVDD *ORIGINAL_INPUT-,*REORDERED+MAR*ORIGINAL_INPUT+0Bbit_rev_end:.asgAR1,GROUP_COUNTER.asgAR2,PX.asgAR3,QX.asgAR4,WR.asgAR5,WI.asgAR6,BUTTERFLY_COUNTER.asgAR7,STAGE_COUNTERSTM#0,BKLD#-1,ASMSTM#fft_data,PXSTM #fft_data+K_DATA_IDX_1,QXSTMK_FFT_SIZE/2-1,BRC

30、LD*PX,16,ARPTBD stage1end-1STM#K_DATA_IDX_1+1,AR0SUB*QX,16,A,BADD*QX,16,ASTHA,ASM,*PX+STB,*QX+|LD*PX,ASUB*QX,16,A,BADD*QX,16,ASTHA,ASM,*PX+0%ST B,*QX+0%|LD*PX,Astage1end:STM #fft_data,PXSTM#fft_data+K_DATA_IDX_2,QXSTM#K_FFT_SIZE/4-1,BRCLD*PX,16,ARPTBDstage2end-1STM#K_DATA_IDX_2+1,AR0SUB*QX,16,A,BADD

31、*QX,16,ASTHA,ASM,*PX+STB,*QX+|LD*PX,ASUB*QX,16,A,BADD*QX,16,ASTHA,ASM,*PX+STHB,ASM,*QX+MAR*QX+ADD*PX,*QX,ASUB*PX,*QX-,BSTHA,ASM,*PX+SUB*PX,*QX,ASTB,*QX|LD*QX+,BSTA,*PX|ADD*PX+0%,ASTA,*QX+0%|LD*PX,Astage2end:STM #K_TWID_TBL_SIZE,BKST#K_TWID_IDX_3,d_twid_idxSTM#K_TWID_IDX_3,AR0STM#cosine,WRSTM#sine,WI

32、STM#K_LOGN-2-1,STAGE_COUNTERST#K_FFT_SIZE/8-1,d_grps_cntSTM#K_FLY_COUNT_3-1,BUTTERFLY_COUNTERST #K_DATA_IDX_3,d_data_idx stage:STM#fft_data,PXLDd_data_idx,AADD*(PX),ASTLMA,QXMVDK d_grps_cnt,GROUP_COUNTER group:MVMD BUTTERFLY_COUNTER,BRC RPTBDbutterflyend-1LD*WR,TMPY*QX+,AMAC*WI+0%,*QX-,AADDPX,16,A,B;B:=(QR*WR+QI*WI)+PR 峴扬斕滾澗辐滠兴渙藺。 STB,*PX;PR':=(QR*WR+QI*WI)+PR)/2 詩叁撻訥烬忧毀厉鋨骜。 |SUB *PX+,B

温馨提示

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

评论

0/150

提交评论