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

下载本文档

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

文档简介

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

2、以及快速傅里叶变换,通过对 DFT 以及 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 茕桢广鳓鯡选块网羈泪

3、。第 2 章 硬件实现 3鹅娅尽損鹌惨歷茏鴛賴。2.1 系统的硬件设计 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猫虿驢绘燈鮒诛髅貺庑

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

5、加深对 DFT 算法原理和基本性质的理解;(2)熟悉 FFT的算法原理和 FFT 子程序的算法流程和应用;( 3)学习用 FFT 对连续信号和时域信号进行频谱分析的方法;(4)学习 DSP中 FFT 的设计和编程思想;( 5)学习使用 CCS 的波形观察器观察波形和频谱情况;( 6)简要画出硬件设计电路图。1.3 设计内容用 DSP 汇编语言进行编程,实现 FFT 运算,对输入信号进行频谱分析。1.4 设计原理快速傅氏变换 (FFT)是一种高效实现离散傅氏变换的快速算法,是数字 信号处理中最为重要的工具之一,它在声学、语音、电信、和信号处理等领域有 着广泛的应用。 構氽頑黉碩饨荠龈话骛。对于有

6、限长离散数字信号 xn ,0 n N-1,其离散谱 xk 可以由 离散付氏变换 (DFT )求得。可以方便的把它改写为如下形式: 輒峄陽檉簖疖網儂號 泶。N1X kx nWNnkk 0,1,., N 1n0不难看出, WN 是周期性的,且周期为 N ,即N 1j ( 2 )nkX kxne N k 0,1,., N 1n0N 的周期性是 DFT 的关键性质之一。为了强调起见,常用表达式 WN 取WN(n mN)(k lN ) WNnkm,l 0, 1, 2.代W 以便明确其周期是 N。FFT 算法可以分为按时间抽取 FFT 和按频率抽取 FFT 两大类, 输入也有 和复数之分,一般情况下,都假

7、定输入序列为复数。 FFT 算法利用旋转因子的 对称性和周期性,加快了运算速度。用定点 DSP 芯片实现 FFT 程序时,一个 比较重要的问题是防止中间结果的溢出, 防止中间结果的溢出的方法是对中间数 值归一化。 为了避免对每级都进行归一化会降低运算速度, 最好的方法是只对可 能溢出的进行归一化,而不可能溢出的则不进行归一化。 尧侧閆繭絳闕绚勵蜆贅。由 DFT 的定义可以看出,在 xn 为复数序列的情况下,完全直接运算 N 点 DFT 需要(N-1)2 次复数乘法和 N(N-1)次加法。因此,对于一些相当 大的 N 值(如 1024)来说,直接计算它的 DFT 所作的计算量是很大的。 FFT

8、的基本思想在于,将原有的 N 点序列序列分成两个较短的序列, 这些序列的 DFT 可以很简单的组合起来得到原序列的 DFT 。例如,若 N 为偶数,将原有的 N 点 序 列 分 成 两 个 ( 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 为偶数),从而又少作一半的乘

9、法。这样一级一 级的划分下去一直到最后就划分成两点的 FFT 运算的情况。 识饒鎂錕缢灩筧嚌俨淒。1.5 FFT算法的 DSP实现过程DSP芯片的出现使 FFT的实现方法变得更为方便。 由于大多数 DSP芯片 都具有在单指令周期内完成乘法累加操作,并且提供了专门的 FFT 指令,使 得FFT算法在 DSP芯片实现的速度更快。 FFT 算法可以分为按时间抽取 FFT 和按频率抽取 FFT 两大类,输入也有实数和复数之分,一般情况下,都假定输1入序列为复数凍鈹鋨劳臘锴痫婦胫籴。1.5.1FFT 运算序列的存储分配FFT 运算时间是衡量 DSP芯片性能的一个重要指标, 因此提高 FFT 的运 算速度

10、是非常重要的。 在用 DSP芯片实现 FFT 算法时,应允许利用 DSP芯片 所提供的各种软、硬件资源。如何利用 DSP 芯片的有限资源,合理地安排好所 使用的存储空间是十分重要的。 恥諤銪灭萦欢煬鞏鹜錦。1.5.2 FFT运算的实现用 TMS320C54x 的汇编程序实现 FFT 算法主要分为四步:(1) 实现输入数据的比特反转 输入数据的比特反转实际上就是将输入数据进行码位倒置, 以便在整个运算 后的输出序列是一个自然序列。 在用汇编指令进行码位倒置时, 使用码位倒置可 以大大提高程序执行速度和使用存储器的效率。在这种寻址方式下, AR0 存放 的整数 N 是 FFT 点的一半,一个辅助寄

11、存器指向一个数据存放的单元。 当使用 位码倒置寻址将 AR0 加到辅助寄存器时,地址将以位码倒置的方式产生。 鯊腎鑰 诎褳鉀沩懼統庫。(2)实现 N 点复数 FFTN 点复数 FFT 算法的实现可分为三个功能块, 即第一级蝶形运算、 第二级 蝶形运算、第三级至 级蝶形运算。对于任何一个 2 的整数幂,总可以通过 M 次分解最后成为 2点的 DFT 计算。通过这样的 M 次分解,可构成 M (即 )级迭代计算,每级由 N/2 个蝶形运算组成。 硕癘鄴颃诌攆檸攜驤蔹。(3)功率谱的计算用 FFT 计算想 x(n) 的频谱,即计算X(k)=X(k) 一般是由实部 (k)和虚部 (k)组成的复数,即X

12、 (k)= (k)+j (k)因此,计算功率谱时只需将 FFT 变换好的数据,按照实部实部(k)和虚部 (k) 求它们的平方和,然后对平方和进行开平方运算。但是考虑到编程的难 度,对于求 FFT 变换后数据的最大值,不开平方也可以找到最大值,并对功率 谱的结果没有影响,所以在实际的 DSP 编程中省去了开方运算。 阌擻輳嬪諫迁择楨秘第 2 章 硬件实现2.1 系统的硬件设计基于 DSP 的系统设计过程中,最小系统的设计是整个系统设计的第一步, 系统设计总是从最小系统开始,逐步向系统应用范围扩展,最终以 DSP 为核心 的大系统的设计。因此最小系统设计 DSP 设计的关键。 DSP 最小系统的设

13、计 包括 DSP电源和地线的设计, JTAG 仿真口的设计、复位和时钟电路的设计、 上拉和下拉引脚的设计等。 氬嚕躑竄贸恳彈瀘颔澩。锁相环电路、指示灯、 滤波电路时钟复 位电路TPS7333Q 电源模块TMS320C54XJTAG 仿真电路RAM 存储模块釷鹆資贏車贖孙滅獅赘。图 2.1.1 最小系统的设计芯片介绍(1)该模块上的资源有 32千字 FLASH ;(2)千字 SARAM ,544字 DARAM ,外扩 64千字的程序 ROM,64 千字的数据 RAM ;(3)两个事件管理器 EVA 和 EVB;( 4)可扩展外部存储器总共 192K 字空间: 64K 程序存储器, 64K 字数

14、据存储器空间, 64K 字 I/O 寻址空间; 怂阐譜鯪迳導嘯畫長凉。(5)看门狗定时模块;(6)19位 A/D 转换器;(7)控制局域网络 CAN 模块,串行通信接口 SCI 模块;(8)16 位串行外设 SPI接口模块;( 9)基于锁相环的时钟发生器;( 10)高达 40 个可单独编程或复用的通用输入 /输出引脚 GPIO;(11)5 个外部中断;(12)电源管理包括 3种低功耗模式, 能独立地将外设器件转入低功耗工 作模式;2.2 原理图的设计DSP最小系统的设计包括 DSP 电源设计, JTAG 仿真口的设计、复位和 时钟电路的设计、上拉和下拉引脚的设计等 谚辞調担鈧谄动禪泻類。2.2

15、.1电源电路的设计电源电路的选择是系统设计的一个重要的部分,设计好坏对系统的影响最 大。首先需要注意的是, 为了减少电源噪声和互相干扰, 数字电路和模拟电路一 般要独立供电,数字地和模拟地也要分开, 并最终通过一个磁珠在一点连在一起, 用 TPS7333Q 进行 3.3V 电压的转换对最小系统供电 嘰觐詿缧铴嗫偽純铪锩。2.2.2复位电路设计TMS320C54X 内部带有复位电路,因此可以直接 RS 复位引脚外面接一 个上拉电阻即可, 这对于简化外围电路, 减少电路板尺寸很有用处, 但是为了调 试方便经常采用手动复位电路。 熒绐譏钲鏌觶鷹緇機库。2.2.3锁相环电路设计图 2.2.3 锁相环电

16、路2.2.4 JTAG 口JTAG 是 Joint Test Action Group 的简称,又称 JTAG 口,它是一符合 IEEE Std 1149.1 边界扫描逻辑标准的标准接口。它主要用于在硬件上对 DSP 进行实时在线仿真测试和 DSP 程序的下载,它提供对所连接设备的边界扫描, 同时也可以用来测试引脚到引脚的连续性,以及进一步进行DSP 芯片的外围器件的操作测试。 鶼渍螻偉阅劍鲰腎邏蘞。第 3 章 软件设计3.1 FFT运算及存储分配(1)DSP芯片的出现使 FFT 的实现方法变得更为方便, 由于大多数 DSP 芯片都具有在单指令周期内完成乘法累加的操作,并提供了专门的 FFT

17、指 令,使得 FFT 算法在 DSP的实现速度更快。一般, FFT 的算法可分为按时间 抽取 FFT 和按频率抽取 FFT,输入也有实数和复数之分,一般情况下都假定输 入是复数序列。 纣忧蔣氳頑莶驅藥悯骛。(2)FFT 运算序列的存储分配FFT 运算时间是衡量 DSP芯片性能的一个重要指标,因此提高 FFT 的运 算速度是非常重要的。 在用 DSP芯片实现 FFT 算法时,应允许利用 DSP芯片 所提供的各种软、硬件资源。如何合理的利用 DSP 芯片的有限资源,合理的安 排 DSP 芯片所提供的存储空间相当关键。本设计采用如下所示的存储分配: 颖 刍莖蛺饽亿顿裊赔泷。0000007F存储映射寄

18、 存器2060.bss2061暂存单元20622063stack21FF堆栈2200sine23FF正弦系数表2400cosine25FF余弦系数表2800d_input287F输入数据fft_data28802C7FFFT结果(实部、虚部)fft_out2C80FFT结果307F(功率谱)图 3.1 数据空间分配图3.2 设计流程图设置信号源类型、 频率幅 值、和采样点数串口接收, AD 采样图 3.2 程序流程图第 4 章 系统仿真4.1 FFT 实现的方法(1)根据 N 值,修改 rfft_task.asm 中的两个常数,如 N=64. K_FFT_SIZE .set 64K_LOGN

19、.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 程序,输入信号为一正弦波。操作步骤如下:(1)进入 CCS 环境。(2)打开 CCS 选择 File New Source File。(3)编写源程序

20、代码。(4)创建工程文件。(5)点击 Project选择 Build Options。(6)在弹出的对话框在设置相应的编译参数,一般情况下,按默认值就可 以。(7)在弹出的对话框中选择连接的参数设置,设置传输文件、堆栈的大小 以及初始化的方式。(8)点击 ProjectBuild all ,对工程进行编译。(9)点击 File load program,弹出的对话框中载入 debug 文件夹下 的.out 可执行文件。 銚銻縵哜鳗鸿锓謎諏涼。(10)点击 debugGo M ain 回到 C 程序的入口。(11)运行程序,观察结果。4.2 程序运行结果验证输入数据波形,设置参数: Start

21、Address=0x2800, Page=Data, Acquisition Buffer Size=64 , Display Data Size=64 , DSP Data Type=32-bit signed integer挤貼綬电麥结鈺贖哓类。9点击 OK,就可以看到输入数据波形:图 4.2.1 输入数据波形全速运行程序,看输出结果,设置波形对话框参数: Start Address=0x2c80, Page=Data,Acquisition Buffer Size=64 ,Display Data Size=64,DSP Data Type=16-bit signed integer赔荊

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

23、似简单, 真正去做才知道知识并没有自己想象的那样扎实。 从而懂得了理论与实际相结合 是很重要的, 只有理论知识是远远不够的, 只有把所学的理论知识与实践相结合 起来,从理论中得出结论, 才能真正为社会服务, 从而提高自己的实际动手能力 和独立思考的能力。 树立了对自己工作能力的信心, 相信会对今后的学习工作生 活有非常重要的影响。 而且大大提高了动手的能力, 使我充分体会到了在创造过 程中探索的艰难和成功时的喜悦。 裊樣祕廬廂颤谚鍘羋蔺。本次设计也让我明白了思路即出路, 有什么不懂不明白的地方要及时请教或 上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇 丰。 仓嫗盤紲嘱珑詁鍬齊驁。致谢在此次设计中, XX 老师作为我的指导老师, 至始至终都给予我了不少帮助,从下任务书开始, 就帮我制定规划, 提醒我应注意的问题, 借给我资料和实验器12 材,和我一起调程序, 并提出了很多的修改意见以及完善方案。 此外还认真批阅 了我的论文, 指出其中很多瑕疵和不清晰的地方, 更重要的是在我遇到困难时对 我的鼓励,让我不懈怠、不退缩、也让我更有信心,可以说我的每一点进展都与 黄老师的付出是分不开的。 绽萬璉轆娛閬蛏鬮绾瀧。当然还在此, 我向身边关心我的老师、 同学

温馨提示

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

评论

0/150

提交评论