前面下载了Ti的DSPLIB,其中的FFT函数是用手工优化的,效率极高,主循环可以达到每个指令周期都可以8条指令并行执行。
fft库中有以下函数:
DSP_radix2
DSP_r4fft
DSP_fft
DSP_fft16x16t
DSP_fft16x16r
DSP_fft16x32
DSP_fft32x32
DSP_fft32x32s
其中,DSP_radix2和DSP_r4fft是从c62x中继承来的,并未针对c64优化,其他的6个函数都是针对c64优化的。DSP_fft是基4的fft,其他的5个函数都是先基4,如果有必要再加一级基2的fft算法。
DSP_fft16x16r和DSP_fft32x32s两个函数自动scale并且是四舍五入的,除了最有一级,在每一级基4蝶型算法后除以2,由于基4的蝶型算法最多增加2bit的整数位,所以要求每一级除以4,为了完全防止溢出,输入数据必须除以2^(BT-BS),其中,BT=log2(N),BS=ceil(log4(N)-1)。
DSP_fft16x16r应用的fft算法是针对数据不适合L1D时的最小cache冲击算法。其他3种算法需要输入端scale。
DSP_fft16x16t计算fft时采用截断的办法。
DSP_fft16x32,DSP_fft32x32则采用四舍五入的方法。