快速傅里叶变换程序设计
- 格式:doc
- 大小:695.00 KB
- 文档页数:34
沈阳工程学院课程设计设计题目:快速傅里叶变换程序设计沈阳工程学院课程设计任务书课程设计题目:快速傅里叶变换程序设计教研室主任年月日批准1.设计主要内容及要求;编写正弦信号发生器程序。
要求:1)研究FFT原理以及利用DSP实现的方法。
2)编写FFT程序。
3)调试程序,观察结果。
2.对设计论文撰写内容、格式、字数的要求;(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。
(2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。
课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
(3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。
(4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。
3.时间进度安排;DSP技术课程设计成绩评定表快速傅里叶变换程序设计中文摘要数字信号处理 (Digital Signal Processing,DSP)是一门涉及许多科学而又广泛应用于众多领域的新兴学科。
步入21世纪以后,社会进入数字化时代,而DSP正是这场数字化的核心。
简单的说,数字信号处理器就是把信号用数字符号表示成序列,通过计算机或专用信号处理设备,用数字的数值计算方法进行处理(如滤波、变换、压缩、增强、估计、识别等),以达到提取有用信息便于应用的目的。
本次课程设计用的是TMS320C54x系列芯片,TMS320C54x系列芯片是TMS320C5000平台下的定点DSP芯片。
54x系列芯提供了低成本、低功耗、高性能的处理能力,在各个领域应用日益广泛。
本文就是利用它来实现快速傅里叶变换这种运算的。
本次我课程设计的题目是快速傅里叶变换的DSP实现方法,作为数字信号处理的一种算法,快速傅里叶变换日益广泛的应用于实时控制和信号处理等各个领域。
快速傅里叶变换(Fast Fourier Transform)是实现离散傅里叶变换(DFT)的一种快速高效的运算方法,是数字信号处理中最为重要的工具之一。
它使DFT的运算效率提高1~2个数量级,为数字信号处理技术应用于各种高速信号的实时处理创造了良好的条件,从而大大推动了数字信号处理技术的发展。
本次课程设计完成的是长度为256点的FFT运算,它的运算可以用一个流程图来描述,因为流程图的外形像一只蝴蝶,所以称之为蝶形图,一个蝶形图包含一次复乘,两次复加。
通过计算蝶距和旋转因子就可画出每级的蝶形图。
本次程序通过编写蝶距和旋转因子的子程序,每次都调用这两个子程序,就能计算出输入的数据所对应的输出。
关键词数字信号处理(DSP),快速傅里叶变换(FFT)沈阳工程学院设计(论文)目录中文摘要 (I)1 设计任务描述 (1)1.1 设计题目 (1)1.2设计要求 (1)1.2.1 设计目的 (1)1.3基本要求 (1)2 设计思路 (2)2.1 FFT算法的由来 (2)2.2 FFT算法原理 (2)2.3 基2FFT的蝶形运算流图 (3)2.4 时间抽取算法FFT的运算特点 (4)2.4.1 原位运算 (4)2.4.2 输入、输出序列的倒位序规律 (5)2.4.3 蝶距的计算 (5)2.4.4 旋转因子的计算 (6)2.5 FFT算法的DSP的实现方法 (6)2.6 FFT运算中应注意的问题 (6)3 软件流程图 (7)4 各部分程序设计及参数计算 (8)4.1 程序的初始化 (8)4.2 位反转子程序 (8)4.3 旋转因子的软件实现 (9)4.4 实现N点复数FFT运算 (9)4.4.1 第一级蝶形运算 (10)4.4.2 第二级蝶形运算 (10)log N级蝶形运算 (11)4.4.3 第三级~第24.4.4功率谱计算的实现 (13)4.5 参数计算 (14)5 程序的调试 (15)6 工作过程分析 (16)6.1 程序的初始化 (16)6.2 位倒序子程序 (16)6.3 FFT计算 (16)6.4 功率谱的计算 (17)小结.................................................................................................................................... 错误!未定义书签。
致谢.................................................................................................................................... 错误!未定义书签。
参考文献 (17)附录A1 程序清单 (18)附录A2 程序图形 (27)快速傅里叶变换程序设计1 设计任务描述1.1 设计题目快速傅里叶变换程序设计1.2设计要求1.2.1 设计目的1)理解FFT的算法以及利用DSP实现的方法。
2)能熟练的调试程序并能观察其结果。
3)熟悉TMS320C54x系列DSP芯片的软件设计方法。
1.3基本要求1)研究FFT原理以及利用DSP实现的方法。
2)编写FFT程序。
3)调试程序,观察结果。
沈阳工程学院设计(论文)2 设计思路2.1 FFT 算法的由来傅里叶变换是数字信号处理领域中的一种分析工具,它可以将信号从时域变换到频域,称之为傅里叶正变换,也可以把信号从频域变换到时域,称之为傅里叶逆变换。
傅里叶变换分为连续傅里叶变换和离散傅里叶变换。
离散傅里叶变换简称DFT (Discrete Fourier Transform ),是对离散信号进行傅里叶变换的方法,其运算量大、复杂度与变换点数的二次方成正比,因而不适用于进行实时信号处理。
为了提高DFT 的运算速度,在20世纪60年代由Cooley 和Turkey 提出了快速傅里叶变换的思想,简称FFT (Fast Fourier Transform ),它是一种高效实现DFT 的算法,能够明显降低DFT 运算的复杂度,使DFT 得到了广泛的应用。
2.2 FFT 算法原理若给定由N 个信号样本{x (0),x (1),…,x (N -1)}组成的信号序列x (n ),DFT 可用式2-1给出:1()()N nk Nn X k x n W-==∑ k =0,1,…,N -1 (2-1)式2-1中,nk N W 称为旋转因子或蝶形因子,nkN W =2/j nk Neπ-。
从中可以看出:当信号样本为复数时,计算单个()X k 需经过N 次复数乘法和N -1次复数加法运算,相当于4N 次实数乘法和2(2N -1)次实数加法。
完成全部N 点DFT 共需2N 次复数乘法和N (N -1)复数加法运算。
可见,随着N 不断增加,整个DFT 运算量是相当庞大的,而FFT 算法通过对计算过程的深入分析,利用旋转因子nk N W 具有的周期性与对称性,实现了降低运算复杂度的目的。
当序列长度N 为偶数时,信号序列x (n )可被分解为奇、偶两个子序列,相应的N 点DFT 被分解为两个N /2点的DFT :()()()kNX k G k W H k =+k =0,1, …,N /2-1 (2-2)(/2)()(kN X N k G k W H k +=- k =0,1, …,N /2-1 (2-3) 式(2-2)和(2-3)中,G(k)和()H k 分别表示x (n )分解后得到的N /2点偶序列点奇序快速傅里叶变换程序设计列的DFT 。
式(2-2)和式(2-3)表明,只要求出G(k)和()H k ,x (n )前N /2点和后N /2点的DFT 就得到了,整个序列的DFT 也就得到了。
这样做的好处是计算N 点DFT 只需要约2N /2次复数乘法,总运算量约为直接DFT 运算量的一半同理,当N /2为偶数时,每个N /2点的DFT 又可被分解成两个N /4点的DFT ,进一步减少了DFT 运算的复杂度。
依次类推,直到不能继续分解为止。
分解结束时,最小DFT 的点数称为称为基数,当N =2L (L 为正整数)时,经过L -1次分解,N 点DFT 最终可被分解为N /2个两点的DFT ,即得到基数为2的FFT 运算,使得DFT 所需复数乘法次数降至2(/2)log NN 。
2.3 基2FFT 的蝶形运算流图基2FFT 的蝶形运算过程可用图2-1所示,此时N =8,L =2log N=3。
图2-1 8点基2FFT 运算过程观察图2-1,根据DFT 的基2FFT 算法,可以总结出以下几条规律:(1)N 点FFT 运算从输入端开始,逐级进行,共需经过L 级运算;在第m (m =1,2,…,M )级中存在2L m -个相似的蝶形运算组(除输入数据不同外);每个组内蝶形运算的个数为12m -,参与每个蝶形运算的两个输入数据相距12m -个点。
(2)中间数据的存储,可采用原位存储法。
即每次蝶形运算的结果存储在与原数据沈阳工程学院设计(论文)相同的内存单元内。
(3)为了保证输出数据按自然数序排列,在进行FFT 之前输入数据需要按照特定的顺序存放,通过位倒序寻址可以满足这种要求。
2.4 时间抽取算法FFT 的运算特点快速傅立叶变换(FFT)算法基本上分为两大类:按时间抽取的FFT 运算和按频率抽取的FFT 运算。
两者在算法的时间和空间复杂度上是一致的,只是序列在计算前后的排列有所不同。
在本论文里,采用的是按时间抽取的FFT(DIT —FFT)算法。
2.4.1 原位运算当数据输入到存储器中以后,每一级运算的结果仍然存储在同一组存储器中,直到最后输出,中间无需其它存储器,这叫原位运算。
DIT —FFT 的运算就是原位计算,从图2-2可以看出这种运算是很有规律的,每级(每列)计算都是由N /2个蝶形运算构成的,每一个蝶形结构完成下述基本迭代运算1111()()()()()()rm m m Nrm m m NA i A i A j W A j A i A j W ----⎧=+⎪⎨=-⎪⎩ (2-4) 式中:m 表示第m 列迭代;,i j 则分别为该蝶形单元两个输入数据所在行数。
式(2-4)的蝶形运算如图2-2 所示。
图2-2 按时间抽取算法基本蝶形运算单元由前面介绍过的完整的DIT-FFT 运算流程图2-2可以看出,第m 级蝶形运算的输出数据仅与该级蝶形运算的输入数据有关,与前1m -级蝶形的输入数据无关,且第1m -级蝶形运算的输出数据为第m 级蝶形运算的输入数据。
某任何一个蝶形运算的两个输入节点i 和j 的节点变量进行蝶形运算后,得到的结果为该蝶形运算两个输出节点,,i j 两节点的节点变量,而和其他节点变量无关,因而可以采用原位运算。