微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > + 基4的FFT的计算结果错序问题,求助。

+ 基4的FFT的计算结果错序问题,求助。

时间:10-02 整理:3721RD 点击:
前几天做了Fatfs与基2的FFt,C6748的性能还真的不一般,做这个项目还是很合适的。
还有个间谐波的计算没有做,不过谐波计算完成了,间谐波的计算也是大同小异的。
为了再提高计算速率,就想试一下基4的FFT的速度。
可是在用TI的DSP库中的DSPF_sp_cfftr4_dif时,计算时间是减少了。


可是计算结果的顺序是错乱的。


这个结果和程序如下。

  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库中的,按道理不应该有问题的,还是自己用错了?真是不解。

TMS320做数据运算还是挺牛的,综合效率和功耗,目前还是不错了

这个问题知道怎么回事么?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top