![[数学]快速傅里叶变换程序设计.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/10/ac6e09b0-1494-490e-abf4-a852fd3e9f3e/ac6e09b0-1494-490e-abf4-a852fd3e9f3e1.gif)
![[数学]快速傅里叶变换程序设计.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/10/ac6e09b0-1494-490e-abf4-a852fd3e9f3e/ac6e09b0-1494-490e-abf4-a852fd3e9f3e2.gif)
![[数学]快速傅里叶变换程序设计.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/10/ac6e09b0-1494-490e-abf4-a852fd3e9f3e/ac6e09b0-1494-490e-abf4-a852fd3e9f3e3.gif)
![[数学]快速傅里叶变换程序设计.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-1/10/ac6e09b0-1494-490e-abf4-a852fd3e9f3e/ac6e09b0-1494-490e-abf4-a852fd3e9f3e4.gif)
![[数学]快速傅里叶变换程序设计.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-1/10/ac6e09b0-1494-490e-abf4-a852fd3e9f3e/ac6e09b0-1494-490e-abf4-a852fd3e9f3e5.gif)
已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈 阳 工 程 学 院课 程 设 计设计题目: 快速傅里叶变换程序设计 系 别 自动控制工程系 班级 测控本091班 学生姓名 庄国庆 学号 2009308126 指导教师 吕勇军 职称 教授 起止日期:2011年 7 月 1 日起至 2010 年 7 月5 日止沈阳工程学院课程设计任务书课程设计题目: 快速傅里叶变换程序设计 系 别 自动控制工程系 班级 测控本091班 学生姓名 庄国庆 学号 2009308126 指导教师 吕勇军 职称 教授 课程设计进行地点: 实训F430 任 务 下 达 时 间: 10年 7月1日起止日期: 10年7月1日起至10年7月5日止教研室主任 年 月 日批准1.设计主要内容及要求;编写正弦信号发生器程序。要求:1)研究FFT原理以及利用DSP实现的方法。 2)编写FFT程序。 3)调试程序,观察结果。2.对设计论文撰写内容、格式、字数的要求;(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。(2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计论文的结构及各部分内容要求可参照沈阳工程学院毕业设计(论文)撰写规范执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。(3).论文要求打印,打印时按沈阳工程学院毕业设计(论文)撰写规范的要求进行打印。(4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。3.时间进度安排;顺序阶段日期计 划 完 成 内 容备注17月4日教师讲解题目,学生查阅相关资料27月5日进行方案论证,确定程序流程,计算参数37月6日编写程序47月7日调试程序57月8日撰写论文,程序验收DSP技术课程设计成绩评定表系(部): 自控系 班级: 测控本091班 学生姓名: 庄国庆 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以12) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名: 年 月 日课 程 设 计 总 评 成 绩分中文摘要DSP(digital singnal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,源源超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色DSP既是Digital Signal Processing的缩写(数字信号处理的理论和方法)或者是Digital Signal Processor(用于数字信号处理的可编程微处理器)的缩写。我们所说的DSP技术,则一般指将通用的或专用的DSP处理器用于完成数字信号处理的方法和技术。傅里叶变换是将信号从时域变换到频域的一种变换形式,是信号处理领域中一种重要的分析工具。离散傅里叶变换(DFT)是连续傅里叶变换在离散系统中的表现形式。采用高级C语言实现FFT算法。利用DSP芯片特有的哈佛结构和专门的FFT指令。在DSP上能够更快的实现FFT。从而促进DSP芯片的发展,同时加快基于DSP数字信号处理的速度通过对FFT的算法进行研究,从基础深入研究和学习,掌握FFT算法的关键。研究DSP芯片如何加快蝶形计算以及如何有效地码位倒置的输出颠倒过来。熟悉旋转因子的生成。通过学习DSP芯片的工作原理,分析DSP控制的算法,在DSP芯片上实现快速傅立叶变换算法的设计。通过对DSP开发环境的学习,掌握CCS的简单调试和软件仿真。在CCS开发环境中观察正弦波输入波形、输出波形、PC机FFT计算处理后的仿真波形图。比较仿真图,验证设计和程序的正确性。表明利用DSP控制器特有的反序间接寻址使FFT的实现更加方便关键词 数字信号处理(DSP),快速傅里叶变换(FFT),旋转因子IV快速傅里叶变换程序设计目 录课程设计任务书.I课程设计成绩评定表.中文摘要IV1 设计任务描述11.1 设计题目11.2 设计目的11.3 基本要求12 设计思路22.1 FFT算法简介22.2 FFT原理22.3 快速傅里叶变换算法33 软件流程图74 各部分程序设计及参数计算84.1 程序编写84.2 CCS开发环境的使用及软件仿真84.2.1 CCS开发环境的使用84.2.2CCS软件仿真95 程序的调试116 工作过程分析126.1 程序的初始化126.2 位倒序子程序126.3 FFT计算126.4 功率谱的计算12小结13致谢14参考文献15附录A1 程序清单16快速傅里叶变换程序设计1 设计任务描述1.1 设计题目 快速傅里叶变换程序设计1.2. 设计目的1)理解FFT的算法以及利用DSP实现的方法。2)能熟练的调试程序并能观察其结果。3)熟悉TMS320C54x系列DSP芯片的软件设计方法。1.3 基本要求1)研究FFT原理以及利用DSP实现的方法。2)编写FFT程序。3)调试程序,观察结果。2 设计思路2.1 FFT算法简介 快速傅里叶变换(FFT)是一种高效实现离散傅里叶变换(DFT)的快速算法,是数字信号处理中最重要的工具之一,它在声学,语音,信号处理等领域有着广泛的应用。是将信号从时域变换到频域的一种变换形式,是信号处理领域中一种重要的分析工具。离散傅里叶变换(DFT)是连续傅里叶变换在离散系统中的表现形式。傅里叶变换分为连续傅里叶变换和离散傅里叶变换。离散傅里叶变换简称DFT(Discrete Fourier Transform),是对离散信号进行傅里叶变换的方法,其运算量大、复杂度与变换点数的二次方成正比,因而不适用于进行实时信号处理。20世纪60年代由Cooley和Tukey提出了快速傅里叶变换(FFT)算法,它是快速计算DFT的一种高效方法,可以明显地降低运算量,大大地提高DFT的运算速度,从而使DFT在实际中得到了广泛的应用,已成为数字信号处理最为重要的工具之一。DSP芯片的出现使FFT的实现变得更加方便。由于多数的DSP芯片都能在单指令周期内完成乘法累加运算,而且还提供了专门的FFT指令(如实现FFT算法所必需的比特反转等),使得FFT算法在DSP芯片上实现的速度更快。本节首先简要介绍FFT算法的基本原理,然后介绍FFT算法的DSP实现。2.2 FFT原理快速傅氏变换(FFT)是离散傅氏变换的快速算法,根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅里叶变换算法进行改进获得的2。对傅氏变换的理论并没有新的发现,但是对在计算机系统或者数字系统中应用离散傅里叶变换,可以说进了一大步。设为N项的复数序列,由DFT变换,任一X(M)的计算需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),则求出N项复数序列的X(M),即N点DFT变换大约需要次运算。当N=1024点甚至更多的时候,需要次运算,在FFT中,利用的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个项的子序列,每个点DFT变换需要次运算,再N次运算把两个点的DFT变换组合成一个N点DFT变换。这样变换以后,总运算次数变成。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。如果将这种“一分为二”思想不断进行下去,直到分成两两一组DFT运算单元,则N点DFT变换只需要次运算,N在1024时,运算量仅有10240次,是先前直接算法的1%,点数越多,运算量节约就越大,这就是FFT的优越性。2.3 快速傅里叶变换算法FFT的基本思想:将大点数的DFT分解为若干个小点数DFT的组合,从而减少运算量。根据对序列分解与选取方法的不同而产生了FFT的多种算法3。算法分类如图2-1所示:FFT算法基-2FFT算法基-4FFT算法混合基算法分裂基算法线性调频Z变换算法按时间抽取按频率抽取图2-1 FFT的几种算法在这次设计中,采用最基础的按时间抽取的基-2FFT算法来实现快速傅里叶变换。为了将大点数的DFT分解为小点数的DFT运算,要求序列的长度N为复合数,最常用的是的情况(M为正整数)。该情况下的变换称为基-2FFT算法。下面讨论基-2FFT情况的算法。先将序列x(n)按奇偶项分解为两组: (2-1)将DFT运算也相应分为两组: (2-3)至此,一个点DFT被分解为两个点的DFT。由式(2-3)能否将全部的点的解求出来?分析: (2-4)和只有个点,则由式(2-4)只能求出X(k)的前个点的DFT。要求出全部点的,需要找出、和的关系,其中k=0,1,2.(N/2)-1。由式子(2-4)可得化简得 (2-5)这样N点DFT可全部由下式确定出来: (2-6)上式可用一个专用的蝶形符号表示,如图2-2所示,对应一次复乘和两次复加运算。-1图2-2 蝶形运算符号通过这样的分解以后,每一个点的DFT只需要次复数乘法,两个点的DFT需要次复乘,再加上将两个点DFT合并成N点的DFT时,有次与因子相乘,一共需要次复乘。可见,通过这样的分解,运算量节省了近一半。因为,仍然是偶数,因此可以对两个点的DFT分别作进一步的分解,将两个的DFT分解成两个点的DFT。例如对,可以再按其偶数部分及奇数部分进行分解: (2-7)则运算可相应分为两组:将系数统一为以N为周期,即,可得 (2-8)同样,对也可以进行类似的分解。一直分解下去,最后是2点的DFT,2点的DTF的运算也可以用蝶形符号来表示。这样,对于一个的DFT运算,最终结如图2-3图2-3这种方法,由于每一步分解都是按输入序列在时域上的次序是属于偶数还是奇数来抽取的,故称为“时间抽取法”。分析上面的流图,一共要进行M次分解,构成了从到的M级运算过程。每一级运算都是由个蝶形运算构成,因此每一级运算都需要次复乘和M次复加,则按时间抽取的M级运算后总用需要:复数乘法次数: 复数加法次数: 根据上面的过程,分析FFT算法的两个特点,它们对FFT的软硬件构成产生很大的影响。(1) 原位运算:也成为同址运算,当数据输入到存储器中以后,每一级运算的结果仍然存储在原来的存储器中,直到最后输出,中间无需其它的存储器。根据运算流图分析原位运算是如何进行的。原位运算的结构可以节省存储单元,降低设备成本。(2) 变址:分析运算流图中的输入输出序列的顺序,输出按顺序,输入是“码位倒置”的顺序,见表2-1所示。表2-1 码位倒置顺序自然顺序 二进制表示 码位倒置 码位倒置顺序 0 000 000 0 1 001 100 4 2 010 010 2 3 011 110 6 4 100 001 1 5 101 101 5 6 110 011 3 7 111 111 7 实际运算中,直接将输入数据按码位倒置的顺序排好输入很方便,一般总是先按自然顺序输入存储单元,然后通过变址运算将自然顺序的存储换成码位倒置顺序的存储,这样就可以进行FFT的原位运算。用软件实现是通用采用雷德(Rader)算法,算出的倒序以后立即将输入数据和对换。尽管变址运算所占运算量的比例很小,但对某些高要求的应用(尤其在实时信号处理中),也可设法用适当的电路结构直接实现变址。例如单片数字信号处理器TMS320C25就有专用于FFT的二进制码变址模式。2 DSP简介 DSP微处理器DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。 DSP微处理器(芯片)一般具有如下主要特点: (1)在一个指令周期内可完成一次乘法和一次加法; (2)程序和数据空间分开,可以同时访问指令和数据; (3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问; (4)具有低开销或无开销循环及跳转的硬件支持; (5)快速的中断处理和硬件I/O支持; (6)具有在单周期内操作的多个硬件地址产生器; (7)可以并行执行多个操作; (8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。 当然,与通用微处理器相比,DSP微处理器(芯片)的其他通用功能相对较弱些。DSP优点对元件值的容限不敏感,受温度、环境等外部因素影响小; 容易实现集成;VLSI 可以分时复用,共享处理器; 方便调整处理器的系数实现自适应滤波; 可实现模拟处理不能实现的功能:线性相位、多抽样率处理、级联、易于存储等; 可用于频率非常低的信号。 DSP缺点需要模数转换; 受采样频率的限制,处理频率范围有限; 数字系统由耗电的有源器件构成,没有无源设备可靠。 但是其优点远远超过缺点。DSP的开发工具数字信号处理器(DSP)作为一种可编程专用芯片,是数字信号处理理论实用化过程的重要技术工具,在语音处理、图像处理等技术领域得到了广泛的应用。但对于算法设计人员来讲,利用汇编语言或C 语言进行DSP 功能开发,具有周期长、效率低的缺点,不利于算法验证和产品的快速开发。 由MathWorks 公司和TI 公司联合开发的DSPMATLAB Link for CCS Development Tools(简称CCSLink)是MATLAB6.5 版本(Release13)中增加的一个全新的工具箱,它提供了MATLAB、CCS 和DSP 目标板的接口,利用此工具可以像操作MATLAB变量一样来操作DSP 器件的存储器和寄存器,使开发人员在MATLAB 环境下完成对DSP 的操作,从而极大地提高DSP 应用系统的开发进程。 MATLAB 具有强大的分析、计算和可视化功能,利用MATLAB 提供的数十个专业工具箱,可以方便、灵活地实现对自动控制、信号处理、通信系统等的算法分析和仿真,是算法设计人员和工程技术人员必不可少的软件工具。DSP算法及芯片分类DSP运算的基本类型是乘法和累加(MAC)运算,对于卷积、相关、滤波和FFT基本上都是这一类运算。这样的运算可以用通用机来完成,但受到其成本和结构的限制不可能有很高的实时处理能力。 DSP运算的特点是寻址操作。数据寻址范围大,结构复杂但很有规律。例如FFT运算,它的蝶形运算相关节点从相邻两点直至跨越N/2间隔的地址范围,每次变更都很有规律,级间按一定规律排列,虽然要运算log2N遍,但每级的地址都可以预测,也就是寻址操作很有规律而且可以预测。这就不同于一般的通用机,在通用机中对数据库的操作,具有很大的随机性,这种随机寻址方式不是信号处理器的强项。 无论是专用的DSP芯片或通用DSP芯片在结构考虑上都能适应DSP运算的这些特点。而专用芯片在结构上考虑的更加专业化,更为合理,因而有更高的运算速度。 DSP芯片按用途或构成分类可以分为下列几种类型: 为不同算法而专门设计的专用芯片:例如用于做卷积/相关并具有横向滤波器结构,INMOS公司的A100、A110;HARRIS公司的HPS43168;PLESSYGEC公司的PDSP16256等。用于做FFT,Austek公司的A41102,PLESSYGEC公司的PDSP16150等。这些都是为做FIR、IIR、FFT运算而设计的,因而运算速度高,但是具有有限的可编程能力,灵活性差。DSP技术的应用信号处理:数字滤波、自适应滤波、FFT、Hilbert变换、相关运算、频谱分析、卷积、模式匹配、窗函数、波形产生等。 语音处理:语音编码、语音合成、语音识别、语音增强、语音邮件、语音储存等。 图像/图形:二维和三维图形处理、图像压缩与传输、图像识别、动画、机器人视觉、多媒体、电子地图、图像增强等。 军事:保密通信、雷达处理、声呐处理、导航、全球定位、跳频电台、搜索和反搜索等。 仪器仪表:频谱分析、函数发生、数据采集、地震处理等。 自动控制:控制、深空作业、自动驾驶、机器人控制、磁盘控制等。 医疗:助听、超声设备、诊断工具、病人监护、心电图等。 家用电器:数字音响、数字电视、可视电话、音乐合成、音调控制、玩具与游戏等。 生物医学信号处理举例:3 程序语言及CCS开发环境3.1 程序编写DSP软件设计多用于算法比较复杂、乘加运算量比较大的场合,如通信、雷达、音视频处理等。为了追求代码的高效性,以前大都用汇编语言来编DSP的应用软件。随着DSP的应用范围不断延伸,单纯的汇编语言程序的难读性、难移植性、难修改性等缺点日益突出。C语言以其独特的可读性、可修改性和可重用性,使DSP的运算速度大幅提高。用C语言进行DSP软件设计,其效率一般低于汇编语言编制,这是因为汇编语言是低级语言,形成目标代码的速度比C语言快,因此,用C语言进行软件设计时,优化设计显得尤为重要。鉴于DSP应用复杂性,用C语言进行软件开发时,一般先在PC上对算法进行仿真,然后将程序移植到DSP平台中。由于DSP程序需要首先使用高级语言来模拟算法性能,对于本次设计题目基于DSP的快速傅里叶变换算法,采用C语言编程。程序参考教材注:整体程序见附录3.2 CCS开发环境的配置、使用及软件仿真CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。CCS提供了基本的代码生成工具,它具有一系列的调试、分析能力。CCS支持如下所使的开发周期的所有阶段:3.2.1 CCS开发环境的配置Code Composer Studio IDE是强大的DSP集成开发工具,利用CCS开发环境可以实现对设计的软件仿真。针对所选择DSP芯片TMS320C5416芯片选择CCS的型号,本次设计采用CCStudio v3.3开发环境。在进入CCS开发环境前,必须选择一个合适的配置环境。进入配置设定软件Setup CCStudio v3.3。使用标准配置文件产生一个系统配置: (1)双击桌面上的Setup Code Composer Sutdio图标,出现系统配置配置对话框。(2)从available factory board中选择与系统匹配的标准设置。确定可用配置中是否存在与系统匹配的配置,本次设计采用F2812 Device Simulator如图4-1所示 图4-1(3)单击选择的配置,然后单击ADD按钮将选择的配置添加到system configuration中。这样选择的配置就出现在系统配置方框中My System图标下面。如果你的配置包含多于一个的目标板,重复以上步骤直到你为每一个目标板选择了一个配置。(4)单击Save & Quit按钮保存配置。(5)单击Yes按钮,启动配置好的CCS集成开发环境。现在可以打开一个工程。进入CCS开发环境后,可以建立一个新的工程也可以直接打开一个已有的工程。按照以下步骤创建一个新工程并运行程序:(1) 建一个文本文档,在里面写下程序,修改文本文档的扩展名为.c(2) 打开CCStudio_v3.3, 选择Project-New(3) 在Project Name框里输入工程名:(例如:1)(4) 在Location框里输入或者浏览创建的文件夹。(5) 在第三步的创建的文件夹里添加命令脚本2812.cmd和编辑好的.c文件(6) 在ccs里打开编好的.c文件,依次点击编译、连接、运行,执行File-Load Program加载程序。加载过程是将上述构建成功,生成的可执行文件加载到目标板,目标板可以是软件仿真环境,也可以是硬件目标板。默认情况下,CCS集成开发环境将会在你的工程路径下创建一个Debug子目录,把生成的.out文件放在里面。点击Open加载。3.2.2 CCS窗口介绍及文件简介CCS窗口介绍:使用CCS常遇见的文件简介:1. program,c:C程序源文件2. program.asm:汇编程序源文件3. filename.h:C程序的头文件,包含DSP/BIOSAPI模块的头文件4. filename.lib:库文件5. project.cmd:连接命令文件6. program.obj:由源文件编译或汇编而得的目标文件7. program.out:经完整的编译、汇编以及连接都生成可执行文件8. program.map:经完整的编译、汇编以及连接后生成空间分配文件9. project.pjt:存储环境设置信息的工作区文件保存配置文件时将产生下列文件:1. programcfg.cmd:连接器命令文件2. programcfg.h54:汇编头文件3. programcfg.s54:汇编源文件3.2.3 CCS软件仿真CCS IDE可以通过各种方法把程序处理到的数据画出来,包括时间/频率,星座图,眼图和图像。选择View- Graph,可以得到这些图,然后选择需要的图。这时候可以在图属性(graph property)的对话框中指定图的属性选项。(如上图)面的例子展示了一个单时刻(时间/频率)图表属性对话框点击,一旦属性被设定了,选择OK按钮,开启图窗口,就会画出指定的数据点根据芯片和所编写的程序,我做了两个个仿真图:方波输入波形、PC机FFT计算处理后的仿真波形图。Display type分别是single time和FFT magnitude。其中输入在single time下完成。两个个仿真的start address都是INPUT。都采用16-bit signed integer。最后得出的软件仿真图依次如图4-2、图4-3所示:图4-2 输入的方波图4-3 FFT处理后的波形4 软件流程图结束程序初始化开始送入数据调入系数表输入数据位码倒置FFT的蝶形运算是否发生溢出?归一化输入数据结束?各图形输出5 各部分程序设计及参数计算6 程序的调试及结果我们根据老师给定的FFT程序在CCS环境下进行调节,经过很多次调试,终于出现了理想的波形输出。并在原来程序的基础上加入了指示灯的信号程序:当程序进入到FFT变换时,黄色指示灯亮;执行完或执行之前,红色指示灯亮。经过几次调试以后,指示灯显示程序正常。正弦波形:FFT变换之后波形: 方波: FFT变换之后的波形: 三角波: FFT变换之后的波形: 7 工作过程分析6.1 程序的初始化128点实数FFT的程序主要由4部分组成,分别是位反转子程序,FFT核心计算子程序,奇偶分离及结果产生子程序,还有功率谱计算子程序。首先在程序的开始应对程序进行初始化,程序的初始化包括为输入数据和旋转因子表定义变量,还有是在此段程序中设置复数数据的个数以及FFT运算的级数,还设置了正弦表和余弦表。6.2 位倒序子程序在编写位倒序子程序时,使用提供的位倒序寻址方式,可以方便的实现位倒序操作。在该寻址方式下,用AR0存放数据,用另外的辅助寄存器ARx存放原始数据的首地址,位倒序操作把AR0中的数加到ARx中,且以向右进位的方式进行,则所得地址将以位倒序的方式产生。6.3 FFT计算当2=256时,128点复数FFT运算过程分成七级、3个阶段实现,这三个阶段是:第一级蝶形运算,第二级蝶形运算,第三级第级蝶形运算,以下分别分析这三个阶段蝶形运算的工作过程。第一级和第二级蝶形运算仅含加减运算,容易实现,因此在编程时单独处理。在第三级到最后一级蝶形运算中,组内蝶形运算次数逐渐增多,而且多是乘法运算,单独处理是不可取的,因此这段运算采用相同的程序块来实现。蝶形运算主要思想是输入数据乘以旋转因子得到下一级输出,所以在运算之前要计算出这一级的旋转因子。而旋转因子又是一复数运算,因此在程序中设置了正弦表和余弦表,通过查这两个表来计算旋转因子。最后来确定FFT的输出值。正弦系数表和余弦系数表由文件给出,主程序通过.copy 汇编命令将正弦系数和余弦系数与程序代码汇编在一起。数据文件twiddle1.inc和twiddle2.inc分别给出FFT的正弦系数、余弦系数各512个。利用此系数表可以完成81024点的FFT运算。6.4 功率谱的计算对信号进行傅里叶变换取sin部分为实部,cos部分为虚部,直接算实部和虚部的平方和,得到的就是功率谱分布。功率信号的功率谱反应了信号功率随频率分布的特点,功率谱是信号先自相关再作FFT变换小结 单片机、DSP、智能仪器、ARM是我们专业的几门主要课程,都涉及到编程的知识,虽然我们以前也做过单片机的不少实验和课设,但是以前都是用汇编编的,但这次的DSP课设却用C语言编程,而且DSP中有很多指令单片机中都没有,这些都给我带来了不少的麻烦。还有,FFT在我们上学期的数字信号处理中学过,可当时本就没怎么听懂,再加上这么上时间没接触,都已经忘的差不多了,我不得又查了好多的资料对快速傅里叶变换重新学习了一遍,在学习离散傅里叶变换的基础上,研究快速傅里叶变换的原理,掌握了快速傅里叶变换的几种算法,并深入学习了以基-2FFT算法为主结合混合基的算法,为下面的程序编写和研究奠定了基础。通过这次的课设,我更加熟悉了CCS开发的环境,它提供了环境配置、源文件编辑、程序调试、跟踪和分析等工具,帮助用户在一个软件环境下完成编辑、编译链接、调试和数据分析等工作。这样大大加快软件开发进程,提高工作效率。在设计部分,成功的在CCS环境下检测程序,做出软件仿真波形图:正弦波输入波形、PC机FFT计算处理后的仿真波形图。基本完成课题设计,做出成果。比较仿真图,可以对设计进行更深入的学习,验证了程序设计的正确性。这次课设除了学到了更多,也和老师有了更多的沟通,在课设期间,老师组织了一次简单的探讨,一个班叫了6个学生,让我们对自的专业提出自己的一些看法和意见,老师能在这么繁忙的工作中还不能然我们给提意见,这让我很是感动,老师为自己的事业倾尽心血,对待我们不想是师生,倒像是朋友,经常能看到吕老师在同学面前大笑,笑的是那么的真诚、那么的亲切。原本我对老师有种惧怕或者说抵触,可是吕老师让我的这种感觉不见了,甚至很想和吕老师多多交流、沟通。每次吕老师看到自己在调试程序,都会拍着我的肩膀笑笑,似乎对我很有信心似得,这让我产生很大的动力,让我相信自己一定可以成功的调试出程序。一周的课设结束了,这次的课设意义又非比寻常,课设一结束,我们大三的生活也即将结束,我们也将进入找工作的阶段,我们原本迷茫、原本惆怅,可一想到吕老师那充满鼓舞的微笑,我们也充满了动力,一切困难我们都会努力的解决致谢春蚕到死丝方尽,蜡炬成灰泪始干,我用这两句来说我们的吕老师实在是在恰当不过了,在这一周的课设中,吕老师每天都要到实验室来看看同学们的设计过程,如果哪位同学有什么不能解决的问题,吕老师都会不厌其烦的引导,给出思路。他每天都很忙,很多时候他都在办公室忙着搞科研,同学们有问题了就会到他的办公室去找他,每次去办公室找老师时心里都会有些害怕,担心会因为打扰他他会批评我们,但是每次找吕老师时,他的脸上总是面带着微笑,然后给同学们认真的讲解。而这次,吕老师不但要带着我们搞课设,还要指导那些参加飞思卡尔比赛的同学,吕老师这一周过的真的很累,老师,您辛苦了在这里我也同样要感谢雷老师在最后一天对我们的答辩,因为吕老师临时有事,故雷老师给我答辩,这本不是雷老师的事,雷老师本可对我们宽松些,这样自己也会轻松许多,然而雷老师却非常的认真,总是问的详详细细的,好多同学都被问的无言以对,而且因为大家都急着答辩,害的雷老师很晚才去吃午饭,炎热的夏天,闷热的教室,豆大的汗珠顺着雷老师的脸颊流下来,在次,我怎么忘记对雷老师的感谢同时,也感谢和自己做相同课设题目的黄玉亮、石菊等人,我每当越到不懂的地方都是先和大家一切探讨,所以,这次课设的成功同样离不开我的同学们,谢谢你们在此,也感谢图书馆为我们提供便利的条件查询资料,谢谢参考文献1 俞一彪,孙兵. 数字信号处理理论与应用.南京:东南大学出版社,20052 李行一. 数字信号处理.重庆:重庆大学出版社,20023 刘和平.数字信号处理器、结构及应用基础TMS320F28xM.北京:机械工业出版社,2007.4姜沫岐,许涵,俞鹏,段国强 . DSP原理与应用从入门到提高. 北京: 机械工业出版社, 20075 俞卞章. 数字信号处理. 西安: 西北工业大学出版社, 20026 百度.附录A1 程序清单#includemath.h /数字函数头文件#define PI 3.1415926#define N 128/采样次数Nvoid InitForFFT();/FFT初始化函数void MakeWave();/波形发生函数void finv(int N1,float *xr,float *xi);/倒序运算函数f(N1,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训行业品牌推广策略计划
- 2024年西安市临潼区人民医院招聘笔试真题
- 金融行业保安工作的综合分析与建议计划
- 深度剖析前后端分离架构试题及答案
- 数据分析在仓库中的应用计划
- 2024年湖南省数据局遴选公务员笔试真题
- 2025年软件设计师进阶试题及答案工具
- 个人能力评估与提升的月度方案计划
- 2025年软考设计师重点试题及答案
- 2025软件设计师考试核心试题及答案
- 学院“十五五”大学文化建设规划
- GB/T 45545-2025厨房家具配合尺寸
- 安全生产管理和培训制度
- 2025山东济南先行投资集团有限责任公司及权属公司社会招聘169人笔试参考题库附带答案详解
- 八年级心理健康微课件
- 建设工程消防验收课件
- 《大众敏捷制造》课件
- 采矿机器人技术发展-全面剖析
- 地质勘查合同补充协议
- 某桥梁工程专项施工方案
- 信息技术服务质量承诺及保障措施
评论
0/150
提交评论