2 快速傅里叶算法在TMS320LF2407上的实现
根据FFT算法的特点,处理器要在一个指令周期内完成乘和累加的工作,因为复数运算要多次查表相乘才能实现。其二就是间接寻址,可以实现增/减1个变址量,方便各种查表方法。再次,FFT变换的输入序列x(n)是按所谓的码位倒序排列的,处理器要有反序间接寻址的能力。DSP控制器专门设计了特有的反序间接寻址,并能在一个指令周期内完成乘和累加的运算。因此,对数字信号的分析处理,DSP比其它的处理器有绝对的优势。本文采用TI公司C2000系列TMS320LF2407芯片来实现FFT算法。
TMS320LF2407定点DSP是一款专为工业控制、电机控制和数字信号处理等用途而设计的DSP,具备单周期乘加指令,具有FFT反序间接寻址功能,最高运行速度为40MIPS。为了充分利用DSP芯片特有的反序间接寻址等功能,FFT算法程序采用汇编语言编写,主程序采用C语言,因此程序具有良好的兼容性和可扩展性。
主程序流程图如图4所示。系统初始化主要完成DSP的系统控制和状态寄存器、等待状态发生器控制寄存器、中断寄存器等的必要设置。
本程序采样函数为:x=sin(20πt),采样频率为640Hz。
输入数据波形如图5所示。一般情况下,我们只关心信号频域的幅度谱。幅度谱|X(k)|2的计算:X(k)=XR(k)+jX(k),|X(k)2|=|Xr(k)|2+|Xi(k)|2。FFT计算结果的信号幅度谱|X(k)|2如图6所示。
输入信号频率是10Hz,根据公式f=kfS/N,f是原始信号的频率,k表示峰值出现的位置,fS是采样频率,N是计算的点数,从幅度谱中看出,峰值出现在k=1处,那么,f=1×640/64=10,与原始信号的实际频率一致,说明计算结果正确。