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.

关于C66x FFT库函数DSPF_sp_fftSPxSP()运算结果不对的问题,求指教



我用6678开发板运行FFT程序,调用C66x库函数DSPF_sp_fftSPxSP(int N, float *ptr_x, float *ptr_w, float *ptr_y, unsigned char *brev, int n_min, int offset, int n_max); 其中N为1024点,ptr_x为输入缓存指针,ptr_w为旋转因子缓存指针,ptr_y为输出缓存指针,brev为64位bit反位表(参考C66x系列DSPLIB_Users_Manual说明为64位)。brev我用的是

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
       };

以上为函数调用的背景。运算出来发现不对,数据像是搬移了一下。我觉得是不是brev这个bit反位表不对?

下面是比较图,上面图是matlab仿真的结果,中间是DSP6678开发板运行的结果,下面一幅图是两者差值。我分析了一下,觉得DSP运行出来的结果是不是最右边的1/4段和第二个1/4段位置交错了。

请问这个brev参数怎么设置?我查看到是C67x系列DSPlibrary里面的说明,如下图

请给予指导帮助,谢谢各位专家!!