【创龙TMS320C6748开发板试用】+ 基4的FFT的计算结果错序问题,求助。

2019-07-15 19:24发布

前几天做了Fatfs与基2的FFt,C6748的性能还真的不一般,做这个项目还是很合适的。
还有个间谐波的计算没有做,不过谐波计算完成了,间谐波的计算也是大同小异的。
为了再提高计算速率,就想试一下基4的FFT的速度。
可是在用ti的DSP库中的DSPF_sp_cfftr4_dif时,计算时间是减少了。
捕获.PNG
可是计算结果的顺序是错乱的。
捕获.PNG

这个结果和程序如下。
  1. void test_cfftr4(void)
  2. {
  3.            int i;
  4.         float fs,f0;
  5.         fs=51200.0f;
  6.         f0=50.0f;
  7.         clock_t t_start, t_stop, t_overhead,www;
  8.        
  9.             memset (x_asm, 0x0, sizeof (x_asm));
  10.             memset (x_cn, 0x0, sizeof (x_cn));
  11.             memset (w, 0x0, sizeof (w));

  12.             for (i = 0; i < N; i++)
  13.             {
  14.                 x_asm[2 * i] = 10.0f*sinsp (2.0f * PI   * i * (f0/fs) )
  15.                                 +9.0f*sinsp (2.0f * PI   * 2*i * (f0/fs) )
  16.                                 +8.0f*sinsp (2.0f * PI   * 3*i * (f0/fs) )
  17.                                 +7.0f*sinsp (2.0f * PI   * 4*i * (f0/fs) )
  18.                                 +6.0f*sinsp (2.0f * PI   * 5*i * (f0/fs) )
  19.                                 +5.0f*sinsp (2.0f * PI   * 6*i * (f0/fs) )
  20.                                 +4.0f*sinsp (2.0f * PI   * 7*i * (f0/fs) )
  21.                                 +3.0f*sinsp (2.0f * PI   * 8*i * (f0/fs) )
  22.                                 +2.0f*sinsp (2.0f * PI   * 9*i * (f0/fs) )
  23.                                 +1.0f*sinsp (2.0f * PI   * 10*i * (f0/fs) )+11.0f;
  24.                 x_asm[2 * i + 1] = 0.0f;
  25.             }

  26.             memcpy (x_cn, x_asm, sizeof (x_cn));
  27.             gen_twiddle(w, N);
  28.             

  29.             TSCL= 0,TSCH=0;

  30.             t_start = _itoll(TSCH, TSCL);
  31.             t_stop = _itoll(TSCH, TSCL);
  32.             t_overhead = t_stop - t_start;


  33.             t_start = _itoll(TSCH, TSCL);
  34.             DSPF_sp_cfftr4_dif_cn(x_cn, w, N);
  35.             t_stop = _itoll(TSCH, TSCL);
  36.             www= (t_stop - t_start) - t_overhead;

  37.             t_start = _itoll(TSCH, TSCL);
  38.             DSPF_sp_cfftr4_dif(x_asm, w, N);
  39.             t_stop = _itoll(TSCH, TSCL);
  40.             www= (t_stop - t_start) - t_overhead;

  41.        
  42.             bit_rev4(x_cn, N);
  43.             bit_rev4(x_asm, N);
  44.           

  45. }
复制代码
有用过TI的DSP库的前辈指教一下吧,感觉是位反转函数的问题,可这些函数都是TI库中的,按道理不应该有问题的,还是自己用错了?真是不解。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。