DSP快速傅里叶变换程序设计概述.docx
《DSP快速傅里叶变换程序设计概述.docx》由会员分享,可在线阅读,更多相关《DSP快速傅里叶变换程序设计概述.docx(35页珍藏版)》请在冰豆网上搜索。
![DSP快速傅里叶变换程序设计概述.docx](https://file1.bdocx.com/fileroot1/2022-10/26/3cf37b09-943b-4aaa-ae4c-3d06f7abbfa7/3cf37b09-943b-4aaa-ae4c-3d06f7abbfa71.gif)
DSP快速傅里叶变换程序设计概述
沈阳工程学院
课程设计
设计题目:
快速傅里叶变换程序设计
系别自动控制工程系班级测控本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.时间进度安排;
顺序
阶段日期
计划完成内容
备注
1
7月4日
教师讲解题目,学生查阅相关资料
2
7月5日
进行方案论证,确定程序流程,计算参数
3
7月6日
编写程序
4
7月7日
调试程序
5
7月8日
撰写论文,程序验收
DSP技术课程设计成绩评定表
系(部):
自控系班级:
测控本091班学生姓名:
庄国庆
指导教师评审意见
评价
内容
具体要求
权重
评分
加权分
调研
论证
能独立查阅文献,收集资料;能制定课程设计方案和日程安排。
0.1
5
4
3
2
工作能力
态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
0.2
5
4
3
2
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
0.2
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.5
5
4
3
2
指导教师评审成绩
(加权分合计乘以12)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
评价
内容
具体要求
权重
评分
加权分
查阅
文献
查阅文献有一定广泛性;有综合归纳资料的能力
0.2
5
4
3
2
工作量
工作量饱满,难度适中。
0.5
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.3
5
4
3
2
评阅教师评审成绩
(加权分合计乘以8)
分
加权分合计
评阅教师签名:
年月日
课程设计总评成绩
分
中文摘要
DSP(digitalsingnalprocessor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。
其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。
它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,源源超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。
它的强大数据处理能力和高运行速度,是最值得称道的两大特色
DSP既是DigitalSignalProcessing的缩写(数字信号处理的理论和方法)或者是DigitalSignalProcessor(用于数字信号处理的可编程微处理器)的缩写。
我们所说的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),旋转因子
课程设计任务书..I
课程设计成绩评定表..................................................................................................................Ⅲ
1设计任务描述
1.1设计题目
快速傅里叶变换程序设计
1.2.设计目的
1)理解FFT的算法以及利用DSP实现的方法。
2)能熟练的调试程序并能观察其结果。
3)熟悉TMS320C54x系列DSP芯片的软件设计方法。
1.3基本要求
1)研究FFT原理以及利用DSP实现的方法。
2)编写FFT程序。
3)调试程序,观察结果。
2设计思路
2.1FFT算法简介
快速傅里叶变换(FFT)是一种高效实现离散傅里叶变换(DFT)的快速算法,是数字信号处理中最重要的工具之一,它在声学,语音,信号处理等领域有着广泛的应用。
是将信号从时域变换到频域的一种变换形式,是信号处理领域中一种重要的分析工具。
离散傅里叶变换(DFT)是连续傅里叶变换在离散系统中的表现形式。
傅里叶变换分为连续傅里叶变换和离散傅里叶变换。
离散傅里叶变换简称DFT(DiscreteFourierTransform),是对离散信号进行傅里叶变换的方法,其运算量大、复杂度与变换点数的二次方成正比,因而不适用于进行实时信号处理。
20世纪60年代由Cooley和Tukey提出了快速傅里叶变换(FFT)算法,它是快速计算DFT的一种高效方法,可以明显地降低运算量,大大地提高DFT的运算速度,从而使DFT在实际中得到了广泛的应用,已成为数字信号处理最为重要的工具之一。
DSP芯片的出现使FFT的实现变得更加方便。
由于多数的DSP芯片都能在单指令周期内完成乘法—累加运算,而且还提供了专门的FFT指令(如实现FFT算法所必需的比特反转等),使得FFT算法在DSP芯片上实现的速度更快。
本节首先简要介绍FFT算法的基本原理,然后介绍FFT算法的DSP实现。
2.2FFT原理
快速傅氏变换(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所示:
图2-1FFT的几种算法
在这次设计中,采用最基础的按时间抽取的基-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所示,对应一次复乘和两次复加运算。
图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)原位运算:
也成为同址运算,当数据输入到存储器中以后,每一级运算的结果仍然存储在原来的存储器中,直到最后