基于DSP的FFT实现.doc

上传人:b****1 文档编号:235921 上传时间:2022-10-07 格式:DOC 页数:25 大小:412.50KB
下载 相关 举报
基于DSP的FFT实现.doc_第1页
第1页 / 共25页
基于DSP的FFT实现.doc_第2页
第2页 / 共25页
基于DSP的FFT实现.doc_第3页
第3页 / 共25页
基于DSP的FFT实现.doc_第4页
第4页 / 共25页
基于DSP的FFT实现.doc_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

基于DSP的FFT实现.doc

《基于DSP的FFT实现.doc》由会员分享,可在线阅读,更多相关《基于DSP的FFT实现.doc(25页珍藏版)》请在冰豆网上搜索。

基于DSP的FFT实现.doc

课程设计(论文)

题目名称基于DSP的FFT的实现

课程名称专业课程设计Ⅱ

学生姓名

学号

系、专业信息工程系通信工程

指导教师

2014年4月27日

摘要

随着计算机和微电子技术的飞速发展,基于数字信号处理的频谱分析已经应用到各个领域并且发挥着重要作用。

信号处理方法是当前机械设备故障诊断中重要的技术基础之一,分析结果的精确程度是诊断成功与否的关键因素。

研究频谱分析是当前主要的发展方向之一。

数字信号处理基本上从两个方面来解决信号的处理问题:

一个是时域方法,即数字滤波;另一个是频域方法,即频谱分析. 

本文主要介绍了离散傅里叶变换以及快速傅里叶变换,通过对DFT以及FFT算法进行研究,从基础深入研究和学习,掌握FFT算法的关键。

通过对DSP芯片工作原理以及开发环境的学习,掌握CCS的简单调试和软件仿真,在DSP芯片上实现对信号的实时频谱分析。

关键字:

DSP;CCS仿真软件;FFT

目录

第1章绪论 1

1.1DSP简介 1

1.2设计目的 1

1.3设计内容 1

1.4设计原理 1

1.5FFT算法的DSP实现过程 2

第2章硬件实现 4

2.1系统的硬件设计 4

2.2原理图的设计 5

第3章软件设计 7

3.1FFT运算及存储分配 7

3.2设计流程图 8

第4章系统仿真 9

4.1FFT实现的方法 9

4.2程序运行结果 9

第5章总结 12

致谢 13

参考文献 14

附录源程序 15

第1章绪论

1.1DSP简介

数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。

数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。

数字信号处理是以众多学科为理论基础,它所涉及的范围极其广泛。

如数学领域中的微积分、概率统计、随机过程、数字分析等都是数字信号处理的基础工具。

它与网络理论、信号与系统、控制理论、通信理论、故障诊断等密切相关。

1.2设计目的

(1)加深对DFT算法原理和基本性质的理解;

(2)熟悉FFT的算法原理和FFT子程序的算法流程和应用;

(3)学习用FFT对连续信号和时域信号进行频谱分析的方法;

(4)学习DSP中FFT的设计和编程思想;

(5)学习使用CCS的波形观察器观察波形和频谱情况;

(6)简要画出硬件设计电路图。

1.3设计内容

用DSP汇编语言进行编程,实现FFT运算,对输入信号进行频谱分析。

1.4设计原理

快速傅氏变换(FFT)是一种高效实现离散傅氏变换的快速算法,是数字信号处理中最为重要的工具之一,它在声学、语音、电信、和信号处理等领域有着广泛的应用。

对于有限长离散数字信号{x[n]},0nN-1,其离散谱{x[k]}可以由离散付氏变换(DFT)求得。

可以方便的把它改写为如下形式:

不难看出,WN是周期性的,且周期为N,即

N的周期性是DFT的关键性质之一。

为了强调起见,常用表达式WN取代W以便明确其周期是N。

FFT算法可以分为按时间抽取FFT和按频率抽取FFT两大类,输入也有和复数之分,一般情况下,都假定输入序列为复数。

FFT算法利用旋转因子的对称性和周期性,加快了运算速度。

用定点DSP芯片实现FFT程序时,一个比较重要的问题是防止中间结果的溢出,防止中间结果的溢出的方法是对中间数值归一化。

为了避免对每级都进行归一化会降低运算速度,最好的方法是只对可能溢出的进行归一化,而不可能溢出的则不进行归一化。

由DFT的定义可以看出,在x[n]为复数序列的情况下,完全直接运算N点DFT需要(N-1)2次复数乘法和N(N-1)次加法。

因此,对于一些相当大的N值(如1024)来说,直接计算它的DFT所作的计算量是很大的。

FFT的基本思想在于,将原有的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为偶数),从而又少作一半的乘法。

这样一级一级的划分下去一直到最后就划分成两点的FFT运算的情况。

1.5FFT算法的DSP实现过程

DSP芯片的出现使FFT的实现方法变得更为方便。

由于大多数DSP芯片都具有在单指令周期内完成乘法—累加操作,并且提供了专门的FFT指令,使得FFT算法在DSP芯片实现的速度更快。

FFT算法可以分为按时间抽取FFT和按频率抽取FFT两大类,输入也有实数和复数之分,一般情况下,都假定输入序列为复数。

1.5.1FFT运算序列的存储分配

FFT运算时间是衡量DSP芯片性能的一个重要指标,因此提高FFT的运算速度是非常重要的。

在用DSP芯片实现FFT算法时,应允许利用DSP芯片所提供的各种软、硬件资源。

如何利用DSP芯片的有限资源,合理地安排好所使用的存储空间是十分重要的。

1.5.2FFT运算的实现

用TMS320C54x的汇编程序实现FFT算法主要分为四步:

(1)实现输入数据的比特反转

输入数据的比特反转实际上就是将输入数据进行码位倒置,以便在整个运算后的输出序列是一个自然序列。

在用汇编指令进行码位倒置时,使用码位倒置可以大大提高程序执行速度和使用存储器的效率。

在这种寻址方式下,AR0存放的整数N是FFT点的一半,一个辅助寄存器指向一个数据存放的单元。

当使用位码倒置寻址将AR0加到辅助寄存器时,地址将以位码倒置的方式产生。

(2)实现N点复数FFT

N点复数FFT算法的实现可分为三个功能块,即第一级蝶形运算、第二级蝶形运算、第三级至级蝶形运算。

对于任何一个2的整数幂,总可以通过M次分解最后成为2点的DFT计算。

通过这样的M次分解,可构成M(即)级迭代计算,每级由N/2个蝶形运算组成。

(3)功率谱的计算

用FFT计算想x(n)的频谱,即计算

X(k)=

X(k)一般是由实部(k)和虚部(k)组成的复数,即

X(k)=(k)+j(k)

因此,计算功率谱时只需将FFT变换好的数据,按照实部实部(k)和虚部(k)求它们的平方和,然后对平方和进行开平方运算。

但是考虑到编程的难度,对于求FFT变换后数据的最大值,不开平方也可以找到最大值,并对功率谱的结果没有影响,所以在实际的DSP编程中省去了开方运算。

第2章硬件实现

2.1系统的硬件设计

基于DSP的系统设计过程中,最小系统的设计是整个系统设计的第一步,系统设计总是从最小系统开始,逐步向系统应用范围扩展,最终以DSP为核心的大系统的设计。

因此最小系统设计DSP设计的关键。

DSP最小系统的设计包括DSP电源和地线的设计,JTAG仿真口的设计、复位和时钟电路的设计、上拉和下拉引脚的设计等。

TMS320C54X

锁相环电路、指示灯、滤波电路

时钟复位电路

TPS7333Q电源模块

RAM存储模块

JTAG仿真电路

图2.1.1最小系统的设计

芯片介绍

(1)该模块上的资源有32千字FLASH;

(2)千字SARAM,544字DARAM,外扩64千字的程序ROM,64千字的数据RAM;

(3)两个事件管理器EVA和EVB;

(4)可扩展外部存储器总共192K字空间:

64K程序存储器,64K字数据存储器空间,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.1电源电路的设计

电源电路的选择是系统设计的一个重要的部分,设计好坏对系统的影响最大。

首先需要注意的是,为了减少电源噪声和互相干扰,数字电路和模拟电路一般要独立供电,数字地和模拟地也要分开,并最终通过一个磁珠在一点连在一起,用TPS7333Q进行3.3V电压的转换对最小系统供电

图2.2.1电源电路

2.2.2复位电路设计

TMS320C54X内部带有复位电路,因此可以直接RS复位引脚外面接一个上拉电阻即可,这对于简化外围电路,减少电路板尺寸很有用处,但是为了调试方便经常采用手动复位电路。

2.2.3锁相环电路设计

图2.2.3锁相环电路

2.2.4JTAG口

JTAG是JointTestActionGroup的简称,又称JTAG口,它是一符合IEEEStd1149.1边界扫描逻辑标准的标准接口。

它主要用于在硬件上对DSP进行实时在线仿真测试和DSP程序的下载,它提供对所连接设备的边界扫描,同时也可以用来测试引脚到引脚的连续性,以及进一步进行DSP芯片的外围器件的操作测试。

第3章软件设计

3.1FFT运算及存储分配

(1)DSP芯片的出现使FFT的实现方法变得更为方便,由于大多数DSP芯片都具有在单指令周期内完成乘法——累加的操作,并提供了专门的FFT指令,使得FFT算法在DSP的实现速度更快。

一般,FFT的算法可分为按时间抽取FFT和按频率抽取FFT,输入也有实数和复数之分,一般情况下都假定输入是复数序列。

(2)FFT运算序列的存储分配

FFT运算时间是衡量DSP芯片性能的一个重要指标,因此提高FFT的运算速度是非常重要的。

在用DSP芯片实现FFT算法时,应允许利用DSP芯片所提供的各种软、硬件资源。

如何合理的利用DSP芯片的有限资源,合理的安排DSP芯片所提供的存储空间相当关键。

本设计采用如下所示的存储分配:

图3.1数据空间分配图

3.2设计流程图

DSP初始化

串口设置

AD设置

设置信号源类型、频率幅值、和采样点数

串口接收,AD采样

位码倒置

FFT运算

功率谱计算

串口发送转换结果

观看转换结果,保存数据

图3.2程序流程图

第4章系统仿真

4.1FFT实现的方法

(1)根据N值,修改rfft_task.asm中的两个常数,如N=64.

K_FFT_SIZE.set64

K_LOGN.set6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1