查看: 327|回复: 0

[经验] TI DSP FFT库函数

[复制链接]

该用户从未签到

发表于 2021-1-22 16:02:50 | 显示全部楼层 |阅读模式
分享到:
在目录c64plus\dsplib_v210\src\DSP_fft16x16,包含了三个层次的FFT库函数,分别是natural C version, intrinsic C version, serial SA version,最后一个是汇编级。在DSP_fft16x16_d.c中有三个测试用例对比耗时。三个函数用法差不多,例如:
  1. void DSP_fft16x16_cn (
  2.     const short * ptr_w,
  3.     int npoints,
  4.     short * ptr_x,
  5.     short * ptr_y
  6. );

  7. void test_fft(void)
  8. {
  9.     const int N = 512;
  10.     short x[2*N], y[2*N], w[2*N];
  11.     gen_twiddle_fft16x16(w, N);

  12.     double fs = 8000.0, f1 = 114.8, f2 = 186.2;
  13.     short x8k[8000];
  14.     for (int i=0; i<8000; ++i)
  15.         x8k[i] = 1800.0 * (cos(2*PI*f1*i/fs) + cos(2*PI*f2*i/fs));

  16.     short x5[500]; // downsample
  17.     for (int i=0; i<500; ++i)
  18.         x5[i] = x8k[16*i];

  19.     int k = 0;
  20.     for (; k<6; k++) {
  21.         x[2*k + 0] = 0;
  22.         x[2*k + 1] = 0;
  23.     }
  24.     for (; k<106; k++) {
  25.         x[2*k + 0] = x5[k-6];
  26.         x[2*k + 1] = 0;
  27.     }
  28.     for (; k         x[2*k + 0] = 0;
  29.         x[2*k + 1] = 0;
  30.     }

  31.     DSP_fft16x16_cn(w, N, x, y);
  32.     for (int i=0; i         printf("%d\n", y[2*i]);
  33.         printf("%d\n", y[2*i+1]);
  34.     }
  35. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条



手机版|小黑屋|与非网

GMT+8, 2024-3-29 14:17 , Processed in 0.110549 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.