实验二 快速傅立叶变换(FFT)算法实验
一.
实验目的
1. 加深对DFT算法原理和基本性质的理解; 2. 熟悉FFT算法原理和FFT子程序的应用;
3. 学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及
其原因,以便在实际中正确应用FFT。
二.
实验设备
计算机,CCS 2.0 版软件,实验箱,DSP仿真器,短接块,导线。 三.
基本原理
1. 离散傅立叶变换DFT的定义:将时域的采样变换成频域的周期性离散函数,频域
的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。
2. FFT是DFT的一种快速算法,将DFT的N2步运算减少为(N/2)log2N步,极大的
提高了运算的速度。 3. 旋转因子的变化规律。 4. 蝶形运算规律。 5. 基2FFT算法。 四.
实验步骤
1. 复习DFT的定义、性质和用DFT作谱分析的有关内容;
2. 复习FFT算法原理与编程思想,并对照DIT-FFT运算流程图和程序框图,了解本
实验提供的FFT子程序; 3. 阅读本实验所提供的样例子程序;
4. 运行CCS软件,对样例程序进行跟踪,分析结果;记录必要的参数。 5. 填写实验报告。
6. 提供样例程序实验操作说明
1) 实验前的准备
“语音处理单元”的拨码开关设置:
S1:拨码开关 码位 1 备注 OFF:交流量输入 2 S2: 拨码开关: 码位 1 2 3 4 OFF:交流量输入 备注 OFF:交流量输入 OFF:扬声器关闭 ON:帧同步脉冲接通 ON:串口时钟接通 在信号源单元中,设置左路信号源产生低频正弦波信号,右路产生高频正弦波信号。 实验箱上电,用示波器分别观测OUT1和OUT2输出的模拟信号,并调节电位器直至低频正弦波信号为100Hz/1V左右;高频正弦波信号为6KHz/1V左右; 将S3中的拨码开关2打到ON,用示波器观测OUT1输出的混叠信号波形。
用导线连接“信号源单元”中2号孔接口OUT1和语音处理单元中的2号孔接口“IN”;
正确完成计算机、DSP仿真器和实验箱的连接后,系统上电. 2)实验过程
启动CCS 2.0,用Project/Open打开“ExpFFT01.pjt”工程文件;双击“ExpFFT01.pjt” 及“Source”可查看各源程序;加载“ExpFFT01.out”;
在主程序中,k++处设置断点;单击“Run”运行程序,或按F5运行程序;程序将运行
至断点处停止;
用View / Graph / Time/Frequency打开一个图形观察窗口;
设置该观察图形窗口变量及参数;采用双踪观察在启始地址分别为0x3000h和0x3080h,长度为128的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的输入信号和对该信号进行FFT变换后的结果;
单击“Animate”运行程序,或按F10运行;调整观察窗口并观察变换结果;
单击“Halt”暂停程序运行,关闭窗口,本实验结束;
实验结果:在CCS2.0环境,同步观察输入信号波形及其FFT变换结果; 五.
思考题
1. 对于不同的N,幅频特性会相同吗?为什么? 2. FFT进行谱分析,可以应用的什么方面? 六.
实验报告要求
1. 简述实验原理及目的;
2. 结合实验中所给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生
的原因以及用FFT作谱分析时有关参数的选择方法。 3. 总结实验所得主要结论。 七.
程序参数说明
extern void InitC5402(void) extern void OpenMcBSP(void) extern void CloseMcBSP(void) extern void READAD50(void) extern void WRITEAD50(void)
void kfft(pr,pi,n,k,fr,fi,l,il):基2快速傅立叶变换子程序,n为变换点数,应满足2的整数次幂,k为幂次(正整数);
数组x :输入信号数组,A/D转换数据存放于地址为3000H~307FH存储 器中,转为浮 点型后,生成x数组,长度128;
数组mo:FFT变换输出数组,长度128,浮点型,整型后,写入 3080H~30FFH存储器中。
八.
子程序流程图:
初始化输入数组排序实验三 计算第一层中间值计算层数计算对应层步长计算计算各层中间结果N计算层数=0?Y计算结果输出
有限冲击响应滤波器(FIR)算法实验