文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
DSP原理及应用课程设计
—FFT基于DSP的实现
班级: 姓名; 学号:
1
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
FFT的DSP实现
一 实验目的
1了解FFT的TMS320C54x实现的编程方法
2掌握8-1024复数点FFT的TMS320C54x程序的使用方法. 3 用FFT的TMS320C54x程序分析方波和正弦波的功率谱. 4 加深对DFT算法原理和基本性质的理解;
5 熟悉FFT的算法原理和FFT子程序的算法流程和应用; 6 学习用FFT对连续信号和时域信号进行频谱分析的方法; 7 学习DSP中FFT的设计和编程思想;
8 学习使用CCS的波形观察器观察波形和频谱情况
二 实验条件
1 8-1024复数点TMS320C54x源程序fft.asm.
2 8-1024复数点TMS320C54x链接命令文件fft.cmd. 3正弦、余弦系数表coeff.inc.
4产生正弦波信号数据文件的高级语言程序,程序名为sin_fft.exe , 5向量文件vectors.asm.
三 设计内容
用DSP汇编语言及C语言进行编程,实现FFT运算、对输入信号进行频谱分析。
四 设计原理
快速傅里叶变换FFT
快速傅里叶变换(FFT)是一种高效实现离散傅里叶变换(DFT)的快速算法,是数字信号处理中最为重要的工具之一,它在声学,语音,电信和信号处理等领域有着广泛的应用。
1. 离散傅里叶变换DFT
对于长度为N的有限长序列x(n),它的离散傅里叶变换(DFT)为
nkX(k)??x(n)WN,n?0n?1k?0,1,?N?1 (1)
?j2?/NW?e式中, N ,称为旋转因子或蝶形因子。
从DFT的定义可以看出,在x(n)为复数序列的情况下,对某个k值,直接按(1)式计算X(k)
2
只需要N次复数乘法和(N-1)次复数加法。因此,对所有N个k值,共需要N次复数乘法和N(N-1)次复数加法。对于一些相当大有N值(如1024点)来说,直接计算它的DFT所需要的计算量是很大的,因此DFT运算的应用受到了很大的限制。 2.快速傅里叶变换FFT
旋转因子WN 有如下的特性。
kk?N/2W??W。对称性: N Nkk?NW?W。周期性:NN
利用这些特性,既可以使DFT中有些项合并,减少了乘法积项,又可以将长序列的DFT分解成几个
2
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
短序列的DFT。FFT就是利用了旋转因子的对称性和周期性来减少运算量的。
FFT的算法是将长序列的DFT分解成短序列的DFT。例如:N为偶数时,先将N点的DFT分解为两个N/2点的DFT,使复数乘法减少一半:再将每个N/2点的DFT分解成N/4点的DFT,使复数乘又减少一半,继续进行分解可以大大减少计算量。最小变换的点数称为基数,对于基数为2的FFT算法,它的最小变换是2点DFT。
一般而言,FFT算法分为按时间抽取的FFT(DIT FFT)和按频率抽取的FFT(DIF FFT)两大类。DIF FFT算法是在时域内将每一级输入序列依次按奇/偶分成2个短序列进行计算。而DIF FFT算法是在频域内将每一级输入序列依次奇/偶分成2个短序列进行计算。两者的区别是旋转因子出现的
kWN位置不同,得算法是一样的。在DIF FFT算法中,旋转因子 出现在输入端,而在DIF FFT算法中
它出现在输入端。
假定序列x(n)的点数N是2的幂,按照DIF FFT算法可将其分为偶序列和奇序列。 偶序列:
x(0),x(2),x(4),?x(N-2),即x1?x(2r),r?0,1,?N/2?1 奇序
列:
x(1),x(3),x(5),?x(N-1),即x2?x(2r?1),r?0,1,?N/2?1x(n)的DFT表示为
则
X(k)??x(n)Wn?0N/2?1N?1nkNnk??x(n)WNn?0N?1n为偶数
n为奇数2rkNN/2?1???x(2r)Wr?0??x(2r?1)WN(2r?1)kr?0kNN/2?1r?02rkx(r)W?2N
N/2?1r?0?x1(r)W2rkN?W(2)由于
W?eX(k)?2N??j(2?/N)2N/2?1r?0???erkN/2?j2?/(N/2)N/2?1r?0??WN/2 ,则(3)式可表示为
?x(r)W1?WkN?x2rk(r)WN/2
k?X1(k)?WNX2(k)k?0,1,?N/2?1式中, X1(k)和X2(k)分别为x1(n)和x2(n)的N/2的DFT。
(3)
由于对称性,
k?N/2KkWN??WN,则X(k?N/2)?X1(k)?WNX2(k)。因此,N点X(k)可分为两
部分:
k前半部分:X(k)?X1(k)?WNX2(k)k后半部分:X(k?N/2)?X1(k)?WNX2(k)k?0,1,?N/2?1 (4)
k?0,1,?N/2?1 (5)
从式(4)和式(5)可以看出,只要求出0~N/2-1区间X1(k)和X2(k)的值,就可求出0~N-1区间X(k)的N点值。
以同样的方式进行抽取,可以求得N/4点的DFT,重复抽取过程,就可以使N点的DFT用上组2点的 DFT来计算,这样就可以大减少运算量。
基2 DIF FFT的蝶形运算如图(a)所示。设蝶形输入为xm?1(p)和xm?1(q),输出为xm(p)和xm(q),则有
kxm(p)?xm?1(p)?xm?1(q)WN (6)
kxm(q)?xm?1(p)?xm?1(q)WN (7)
3
DSP原理及应用课程设计—FFT基于DSP的实现
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)