调用DSP库函数实现FFT的运算
通信与信息工程学院
2014 /2015 学年 第 一 学期
软件设计 实验报告
模 块 名 称 调用DSP库函数实现FFT的运算 专 业 通信工程 学 生 班 级 学 生 学 号 学 生 姓 名 指 导 教 师
设计题目
调用 DSP 库函数实现 FFT 运算
任务要求
利用 CCS 库函数 CFFT 对 sin(40*PI*t)进行 64 点的 FFT 运 算,要求回显结果图形并对其进行分析。
实验设备及 软件
硬件:计算机 软件: WINDOWS 操作系统、CCS 软件和 MATLAB(含 SIMULINK 工具包)软件。
同组人员学 号及姓名
李荣 张宸
参考文献
[1] ICETEK–VC5509-A-USB-EDU 教学实验系统软件实验指 导(电子版) [2] Code Composer StudioProject Management and Editing Tools(电子版) [3] TMS320C55xAssembly Language Tools User’s Guide (电子版) [4] TMS320C55x Optimizing C/C++ CompilerUser’s Guide (电子版) [5] 彭启琮等. TMS320VC55x 系列 DSP 的 CPU 与外设. 北京: 清华大学出版社,2005 [6] 尹勇、欧光军.DSP 集成开发环境 CCS 开发指南.北京: 北京航空航天大学出版社,2004 [7] TMS320C55x DSP Programmer’s Guide(电子版) [8] TMS320C55x DSP Algebraic Instruction Set Reference Guide(电子版)
报告内容
一、实验目的
(1)了解FFT 的原理;
(2)了解在DSP 中FFT 的设计及编程方法; (3)了解在DSP 中CFFT 的设计及编程方法; (4)熟悉对FFT 的调试方法;
(5)了解用窗函数法设计FFT 快速傅里叶的原理和方法; (6)熟悉FFT 快速傅里叶特性;
(7)了解各种窗函数对快速傅里叶特性的影响。
二、实验原理
km
,m 0,1, ,N 1 X[m] x[k]WN
k 0N 1
1
x[k]
N
N 1
X[m]WN km,k 0,1, ,N 1
m 0
如果利用上式直接计算DFT,对于每一个固定的m,需要计算N次复数乘法,N-1次加法,对于N个不同的m,共需计算N的2次方复数乘法,N*(N-1)次复数加法.显然,随着N的增加,运算量将急剧增加, 快速傅里叶算法有效提高计算速度,利用FFT算法只需(N/2)logN次运算。
FFT 并不是一种新的变换,它是离散傅立叶变换(DFT)的一种快速算法。由于我们在计算DFT 时一次复数乘法需用四次实数乘法和二次实数加法;一次复数加法则需二次实数加法。每运算一个X(k)需要4N 次复数乘法及2N+2(N-1)=2(2N-1)次实数加法。所以整个DFT运算总共需要4N^2 次实数乘法和N*2(2N-1)=2N(2N-1)次实数加法。如此一来,计算时乘法次数和加法次数都是和
N^2 成正比的,当N 很大时,运算量是可观的,因而需要改进对DFT 的算法减少运算速度。根据傅立叶变换的对称性和周期性,我们可以将DFT 运算中有些项合并。
我们先设序列长度为N=2^L,L 为整数。将N=2^L 的序列x(n)(n=0,1, ,N-1),按N 的奇偶分成两组,也就是说我们将一个N 点的DFT 分解成两个N/2 点的DFT,一般来说,输入被假定为连续的。当输入为纯粹的实数的时候,我们就可以利用左右对称的特性更好的计算DFT。我们称这样的RFFT 优化算法是包装算法:首先2N 点实数的连续输入称为“进包”。其次N点的FFT 被连续运行。最后作为结果产生的N 点的合成输出是“打开”成为最初的与DFT 相符合的2N 点输入。使用这战略,我们可以划分FFT 的大小,它有一半花费在包装输入O(N)的操作和打开输出上。这样的RFFT 算法和一般的FFT 算法同样迅速,计算速度几乎都达到了两次DFT 的连续输入。
TMS320c5402 有专门的FFT 指令,使得FFT 算法在DSP 芯片上实现的速度更快,更简单。查库函数,使用rfft 或cfft 可快速实现FFT 运算。rfft 函数原型为void rfft (DATA x, nx, short scale)其中DATA x 为数据存放数组,nx 为数组长度,运算完毕后DATA x 中原先数据被冲掉,存进运算完FFT 的数据。cfft 与rfft 不同之处在于cfft 可对复数进行FFT 运算。rifft 和cifft 分别为rfft 和cfft 进行逆运算。在这个实验中我们需要调用cfft库函数对其进行FFT运算。
三、CCS实现 1、各个函数的说明
(1)void cbrev(DATA *x,DATA*r,unshort n)
功能:
为了FFT/IFFT得到一个正确顺序的变换结果,对他们的输入数据进行倒序。 入口参数:
x[2*n] x是一个2*n项的一维数组,数组中数据定义为短整型(16位有符
号整型)。
数组x是作为输入数据,函数对他的数据进行倒序。
r[2*n] r是一个2*n项的一维数组,数组中数据定义为短整型(16位有符
号整形)。
数组r是作为输出数据,函数对x倒序后的结果存到r中。
n 定义为数组中复数的个数(两个实数表示一个复数),即为数组大小的1/2。 函数的使用:
函数是对复数进行倒序的,即把数组x中的数据认为是复数。有两个相邻的实数表示一个复数,偶地址为复数的实部,奇地址为复数的虚部。如下式,函数对
X[0]+j*X[1],X[2]+j*X[3], X[2n]+j*X[2n+1] X[2*N-2]+j*X[2*N-1] 这些数据进行倒序。倒序后的结果也是按复数的实部、虚部依次存到r数组中的。
注意:
数组中的元素个数必须为偶数。
倒序时采用间接寻址,所以数组的首地址的末log(n)+1必须为0。
(2)void cfft(x,n,scale) 原理及源程序说明:
功能:
对复数进行FFT变换。 各项参数:
x[2*n] x是一个2*n项的一维数组,数组中数据定义为短整形(16位有符号整形)。数组x既作为输入数据,又存放变换后的输出数据。 n 定义为数组中复数的个数(两个实数表示一个复数),即为数组大小的1/2。
Scale 变换系数,如果为0,变换后结果乘以1/nx;否则结果乘以1。 函数的使用:
函数cfft(x,n,scale)是经过以下俩个宏定义而来的:
#define dummy(x,n,scale) cfft##n(x,scale) #define cfft(x,n,scale) dummy(x,n,scale)
原始函数为cfft##n(x,scale),n可取值为16,32,64,128,256,512,1024。 函数Cfft()要求输入数据为倒序,即经过cbrev()处理之后的数据。
同cbrev()一样,cfft()也是对X[0]+j*X[1],X[2]+j*X[3], X[2n]+j*X[2n+1] X[2*N-2]+j*X[2*N-1] 进行的FFT变换,结果按实部/虚部存放。
注意:
数组中的元素个数必须为偶数。
数组的首地址的末log(n)+1必须为0。 (3)cifft(x,n,scale) 功能:
对复数进行IFFT变换。
各项参数:
x[2*n] x是一个2*n项的一维数组,数组中数据定义为短整型(16位有符号整形)。数组x既作为输入数据,又存放变换后的输出数据。 n 定义为数组中复数的个数(两个实数表示一个复数),,即为数组大小的1/2。
Scale 变换系数,如果为0,变换后结果乘以1/nx;否则结果乘以1。
函数的使用:
函数cifft(x,n,scale) 与函数 rifft(x,2*n,scale)其实是一个函数,实现同样的功能,使用同cfft()一样。
如果要进行实数fft变换(变换结果实数),则还需调用一个unpacki(x,n)函数。
(4)unpacki(x,n)函数 功能:
对rfft变换后的结果进行变换,为了r …… 此处隐藏:3275字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [初中教育]婚姻家庭法学教学教案
- [初中教育]浅谈小学语文教学中的创新教育
- [初中教育]中华人民共和国侵权责任法2009
- [初中教育]2016-2022年中国薄膜太阳能电池行业发
- [初中教育]多级轻型井点降水的应用
- [初中教育]外语教学法流派介绍和简评
- [初中教育]实验一、典型环节及其阶跃响应
- [初中教育]内蒙古2012-2013学年度国家奖学金获奖
- [初中教育]移动通信营销渠道管理探讨
- [初中教育]初三化学第一学期第一第二章基础知识点
- [初中教育]一天的食物教学设计
- [初中教育]光导照明系统的基本结构及工作原理
- [初中教育]长春市十一高、东北师范大学附属中学、
- [初中教育]“十三五”规划重点-配重式装卸车项目
- [初中教育]领导方法和领导艺术
- [初中教育]第三章 植物病虫草鼠害诊断与防治基
- [初中教育]2019届九年级语文上册 第二单元 6纪念
- [初中教育]甲级单位编制水豆腐项目可行性报告(立
- [初中教育]Ch8-1补充 09101数据库系统原理及应用-
- [初中教育]2017-2023年中国吊装设备行业市场分析
- 制作毕业纪念册需要哪些材料
- 2015-2016学年高二化学苏教版选修4课件
- 哈佛管理导师-创建商业案例
- 职场交际中的谈吐礼仪知识与职场会议接
- 中国糕点及面包行业发展现状与竞争战略
- 沂河“12·7”洪水茶山拦河坝
- 管道水流量计算公式
- 4-2发电机火灾事故处置方案
- 数字信号处理实验五
- 2009年经济师(中级)金融专业知识全真试
- 历史街区保护规划--04历史文化遗产保护
- 宁夏回族自治区中小学职称评价标准
- 评先评优测评表
- 圆的切线证明及线段长求解在在中考中的
- 【解析版】2015年江苏省南京外国语学校
- 人教版八年级上册科学第一章习题精华
- 责任心与执行力
- SA8000社会责任管理体系标准培训
- IgA肾病的饮食应注意
- 杭州市建设工程文件归档整理方案(试行)




