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.

DSP_fft16x16 for c674x

Hi ,

Iam facing a problem in obtaining compatible function for FFT(In c674x as that of C66x)

In c66x(DSPlib  there is function named DSP_fft16x16 inorder to perform FFT.

void DSP_fft16x16(const short * restrict ptr_w, int npoints, short * restrict ptr_x,short * restrict ptr_y);


I have not observed such function in dsplib for c674x.Please find the list of functions available for c674x

Is there similar function DSP_fft16x16 in dsplib_3_4_0_0 compatible for use with c674x?

Please let me know if you need any further information.

Thank you,

Satyasrinivas

  • Satya,

    When we moved from the C64x to the C64x+, some very good architecture changes and associated instruction set changes were made to this advanced fixed-point DSP. It was included in devices like the C6455, C6457, C6474, and others.

    When we merged the C67x+ floating-point architecture with that C64x+ fixed-point core, we combined all of the floating-point instructions native to the C67x+ with the advanced architecture of the C64x+. And I will never know how they did it, but they kept all of the instructions for both previous architectures and combined them all into the C674x, which is what you are looking to use.

    The move from the C674x to C66x crossed both fixed- and floating-point boundaries with greater parallel (SIMD) instructions, and other architectural improvement.

    We made the DSPLIB for the C64x+ for the fixed-point operations, such as the DSP_fft16x16 that you are asking for. Those are completely compatible with the C674x devices, so a new library was not needed. We did add DSPLIB for the C674x for the floating point functions that needed to be upgraded for the C674x.

    You can use the DSPLIBs for both the C674x and the C64xP (C64x+) to get all the functions you need. List the DSPLIB for C674x first so you pick up those functions whenever there is a duplicate in the C64xP version.

    I can see that it would have been more convenient if we had included all of the C64xP DSPLIB functions when we made the C674x DSPLIB. I cannot say why this was not done, I just do not know why. And it is odd that this is the first time I have noticed the question coming up. Have you done a search on this forum to see if any others have looked for it? If they did, I did not see those.

    Please let us know how this works out for you.

    Regards,
    RandyP
  • RandyP,

    Thank you for the quick and detailed explanation on how DSPLIB for c674x was made.

    When I use DSP_fft16x16 from  C64xP (C64x+) I observed completely different output of FFT from DSP_fft16x16 of C66X.

    Please let me know whether the function DSP_fft16x16 does the same in both C66x and C64xP.

    Let me know if there are  differences in implementation of FFT for C66x and C64xP.

    I understand that C66x uses more advanced intrinsics because of the better intrinsic availability. 

    I verified multiple times and observed that  16 point fft output is different on c64xP and C66x.

    Note: I have verified c64xP DSP_fft16x16 fft output on c674x simulator.

    Let me know if you have any questions.

    Best regards,

    Satyasrinivas

  • Satya,

    Please confirm with the various DSPLIB documentation, different documents for each library although they should be the same or similar information, to see if there are any differences on limits or arguments, and so on.

    I do not know what you are trying to accomplish with this effort, and I will need to let you continue this discussion with the developers, which may require you to start a new thread. You appear to claim a bug in one or more of the FFT functions depending on how they are run or on which processor core, and I do not know what the final intent is.

    The DSPLIBs include source code for the functions. I recommend you try testing all of the available versions, based on their respective documentation, and see if there are differences between compiling the source code vs. the precompiled functions.

    If my statement about using the C64xP version on C674x is incorrect, please tell us here. That same C64xP version should also run on the C66x, by the way.

    Sorry I could not be more help.

    Regards,
    RandyP