前几天做了Fatfs与基2的FFt,C6748的性能还真的不一般,做这个项目还是很合适的。
还有个间谐波的计算没有做,不过谐波计算完成了,间谐波的计算也是大同小异的。
为了再提高计算速率,就想试一下基4的FFT的速度。
可是在用
ti的DSP库中的DSPF_sp_cfftr4_dif时,计算时间是减少了。
可是计算结果的顺序是错乱的。
这个结果和程序如下。
- void test_cfftr4(void)
- {
- int i;
- float fs,f0;
- fs=51200.0f;
- f0=50.0f;
- clock_t t_start, t_stop, t_overhead,www;
-
- memset (x_asm, 0x0, sizeof (x_asm));
- memset (x_cn, 0x0, sizeof (x_cn));
- memset (w, 0x0, sizeof (w));
- for (i = 0; i < N; i++)
- {
- x_asm[2 * i] = 10.0f*sinsp (2.0f * PI * i * (f0/fs) )
- +9.0f*sinsp (2.0f * PI * 2*i * (f0/fs) )
- +8.0f*sinsp (2.0f * PI * 3*i * (f0/fs) )
- +7.0f*sinsp (2.0f * PI * 4*i * (f0/fs) )
- +6.0f*sinsp (2.0f * PI * 5*i * (f0/fs) )
- +5.0f*sinsp (2.0f * PI * 6*i * (f0/fs) )
- +4.0f*sinsp (2.0f * PI * 7*i * (f0/fs) )
- +3.0f*sinsp (2.0f * PI * 8*i * (f0/fs) )
- +2.0f*sinsp (2.0f * PI * 9*i * (f0/fs) )
- +1.0f*sinsp (2.0f * PI * 10*i * (f0/fs) )+11.0f;
- x_asm[2 * i + 1] = 0.0f;
- }
- memcpy (x_cn, x_asm, sizeof (x_cn));
- gen_twiddle(w, N);
-
- TSCL= 0,TSCH=0;
- t_start = _itoll(TSCH, TSCL);
- t_stop = _itoll(TSCH, TSCL);
- t_overhead = t_stop - t_start;
- t_start = _itoll(TSCH, TSCL);
- DSPF_sp_cfftr4_dif_cn(x_cn, w, N);
- t_stop = _itoll(TSCH, TSCL);
- www= (t_stop - t_start) - t_overhead;
- t_start = _itoll(TSCH, TSCL);
- DSPF_sp_cfftr4_dif(x_asm, w, N);
- t_stop = _itoll(TSCH, TSCL);
- www= (t_stop - t_start) - t_overhead;
-
- bit_rev4(x_cn, N);
- bit_rev4(x_asm, N);
-
- }
复制代码
有用过TI的DSP库的前辈指教一下吧,感觉是位反转函数的问题,可这些函数都是TI库中的,按道理不应该有问题的,还是自己用错了?真是不解。
这个问题知道怎么回事么?
一周热门 更多>