This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM5728:FFT 的 IPC 问题

Guru**** 2589265 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/638032/am5728-ipc-problem-with-fft

器件型号:AM5728

大家好、我尝试在 IPC 程序上添加一些 FFT 代码。代码 如下所示:

定义 FFTSZ 64

unsigned char brev[64]={
0x0、0x20、0x10、0x30、0x8、 0x28、0x18、0x38、
0x4、0x24、0x14、0x34、0xc、 0x2C、0x1c、0x3c、
0x2、0x22、0x12、0x32、0xA、 0x2a、0x1a、0x3a、
0x6、0x26、0x16、0x36、0xe、 0x2E、0x1E、0x3E、
0x1、0x21、0x11、0x31、0x9、 0x29、0x19、0x39、
0x5、0x25、0x15、0x35、0xd、 0x2D、0x1d、0x3D、
0x3、0x23、0x13、0x33、0xb、 0x2b、0x1b、0x3b、
0x7、0x27、0x17、0x37、0xF、 0x2F、0x1f、0x3f
};

float x[2*FFTSZ];
float y[2*FFTSZ];
float w[2*FFTSZ];
float W1[2*FFTSZ];
float z[2*FFTSZ];

void tw_gen (float *w、int n)

int i、j、k;
CONST 双 PI = 3.141592654;

对于(j = 1、k = 0;j <= n>> 2;j = j << 2)

对于(i = 0;i < n>> 2;i += j)

w[k]=(float) sin (2 * pi * I / n);
w[k + 1]=(浮点) cos (2 * pi * I / n);
w[k + 2]=(float) sin (4 * pi * I / n);
w[k + 3]=(float) cos (4 * pi * I / n);
w[k + 4]=(float) sin (6 * pi * I / n);
w[k + 5]=(浮点) cos (6 * pi * I / n);
k +=6;



对于(i = 0;i < FFTSZ;i++){
X[PAD + 2*I]=2*I;
X[PAD + 2*I + 1]= 0;

TW_gen (w、FFTSZ);

DSPF_sp_fftSPxSP (FFTSZ、x、w、y、bev、 4、0、FFTSZ);

我在 CCS 中调试代码、结果与 MATLAB 中的代码相同。

但是、当我在原始 IPC 程序中添加代码时、FFT 的结果不正确。很困惑、似乎相同的代码在不同的程序中运行、我们得到不同的结果。

MATLAB 中 FFT 的实际部分如下所示:

4032-64-64-64-64-64.0000000000000    -64-64-64.0000000000000 -64.0000000000000   -64-64-64.0000000000000 -64.0000000000000       -64.0000000000000  -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000   -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000  -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000 -64.0000000000000                             -64.0000000000000 -64 -64 -64 -64.0000000000000  -64 -64 ···

IPC 计划中 FFT 的实际部分如下所示:

4032 2642440192.00000 -162695266304.000 -504451629056.000 347320-2.38915960232005e+18-3.94232585743550e+20  7.58157212632291e+20 -220194242560.000 -5.97962912e+186519852419469920+264026404520+20+46994520+20+2640264026402640452640452640154217+20+20+20+4526402640264026402640264026404526404526404526404526401580512E      ···

有人能告诉我们为什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您使用的是什么软件? Linux 还是 RTOS?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此问题是否已解决? 如果是、请验证此主题、以便可以将其关闭。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复、我已经解决了问题。我在 RTOS 上运行程序、关键点是缩放输入数据。