|
在目录c64plus\dsplib_v210\src\DSP_fft16x16,包含了三个层次的FFT库函数,分别是natural C version, intrinsic C version, serial SA version,最后一个是汇编级。在DSP_fft16x16_d.c中有三个测试用例对比耗时。三个函数用法差不多,例如:- void DSP_fft16x16_cn (
- const short * ptr_w,
- int npoints,
- short * ptr_x,
- short * ptr_y
- );
- void test_fft(void)
- {
- const int N = 512;
- short x[2*N], y[2*N], w[2*N];
- gen_twiddle_fft16x16(w, N);
- double fs = 8000.0, f1 = 114.8, f2 = 186.2;
- short x8k[8000];
- for (int i=0; i<8000; ++i)
- x8k[i] = 1800.0 * (cos(2*PI*f1*i/fs) + cos(2*PI*f2*i/fs));
- short x5[500]; // downsample
- for (int i=0; i<500; ++i)
- x5[i] = x8k[16*i];
- int k = 0;
- for (; k<6; k++) {
- x[2*k + 0] = 0;
- x[2*k + 1] = 0;
- }
- for (; k<106; k++) {
- x[2*k + 0] = x5[k-6];
- x[2*k + 1] = 0;
- }
- for (; k x[2*k + 0] = 0;
- x[2*k + 1] = 0;
- }
- DSP_fft16x16_cn(w, N, x, y);
- for (int i=0; i printf("%d\n", y[2*i]);
- printf("%d\n", y[2*i+1]);
- }
- }
复制代码
|
|