关于DSP2812 FFT库的一些总结

今天尝试了下TI的2812 FFT库,现进行简单的总结。

1.在PROJECT中添加FFT的LIB文件,C中包含fft.h头文件。

2.CMD中添加和FFT有关的段,注意ipcb段长度为2N long,因此ipcb要用ALIGN指令分配4N个word的连续空间(例如512点FFT就需要ALIGN(2048));FFTft是WN因子的储存空间,存放在RAM即可。

3.初始化缓存ipcb(输入输出共用)fft.ipcbptr=... -> 初始化Wn因子fft.init -> 重排序(位反转或用ACQ函数添加样本,ACQ会自动排序) -> 加窗(可选)fft.win -> 计算FFT,fft.calc -> 计算幅度fft.mag。

4.FFT的数据为Q31格式(-1~0.999...),为了避免溢出每一级蝶形运算的结果都除以了2,因此FFT结果正好除以了N。假设一信号为A*cos(2*pi*f0*t + phase0),用f0的整数倍频率fs对该信号采样整数个周期(避免频谱泄露),对采样的序列进行N点FFT得X[k]=r[k] + j*i[k],f0在X[k]中对应的两个序号为 m=N*f0/fs, n=N-m, 则有 (A^2)/2 = (r[m]^2 + i[m]^2) + (r[n]^2 + i[n]^2) = 2*(r[m]^2 + i[m]^2)。

5.幅度计算fft.mag的公式为r^2+i^2,为了避免溢出,fft.mag的结果同样除以了2,即假设fft.calc的结果为X[k]=r[k] + j*i[k],mag函数计算的结果为M[k],则M[k] = (r[k]^2 + i[k]^2)/2。

posted @ 2013-06-15 02:19  Ilmen  阅读(898)  评论(0编辑  收藏  举报