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.

TMS320DM8147: Any known errors in DSP Lib's "C"-based FFT and/or BitReverse routines?

Part Number: TMS320DM8147

We're using the 8147 processor, and are trying to do some signal processing.  The TI FFT and BitReverse C routines come from:

TMS320C67x DSP Library
Programmer’s Reference Guide
Literature Number: SPRU657C
January 2010

I'm seeing some strange behavior out of the BitReverse routine.  Specifically, we're using dspf_sp_cfftr2().  Seeing a couple of general search posts about potential errors in the "C" FFT routine, I thought I'd ask if there are currently any known errors in these 2 routines?  If not, then it's something that I'm doing in my code.

Some details:

*************** variables initialization **************

Buffer size 2048

float x[2048]

float w[2048];

************* code init **********

gen_w_r2(w, 2048);

bit_rev(w,1024);

************* code *************

for (i=0;i<2048;i++)

{

    x[2*i) = (real) some function;

   x[2*i + 1) = (imag) some other function;

}

dspf_sp_cfftr2_dit(x,w,1024);

bit_rev(x,512);  (I've also used bit_rev(x,1024 trying to bit-reverse the output of the bit-reversed fft routine)

Input (2 channels from processor): 1 stream of real data + 1 stream of imag data

*************** question ***************

Is the above correct?  

Thanks ahead of time, Don

  • Hi Don,

    DM814x device has C674x DSP, so let we first double check you are using the correct DSP library.

    www.ti.com/.../toolssoftware

    http://www.ti.com/tool/sprc265 ---> C674X-DSPLIB

    Can you try with C674X-DSPLIB instead of C67x DSP Lib and check if there will be any improvement?

    See also if the below links will be in help:

    processors.wiki.ti.com/.../C674x_DSPLIB

    e2e.ti.com/.../540863
    e2e.ti.com/.../392529
    e2e.ti.com/.../135414

    Regards,
    Pavel
  • Hi Pavel,

    Thanks much for the reply.  I followed the link to the 8148 page, and hit the link for the DSPLib.  For the 674x_dsplib, there was just a "get software" control that only brought up release notes.  The 67x_dsplib had "download", so that's the one I used.  SPRC121 is the part # of the document, SPRU657B, June 2005.  That's interesting, because the one that we used mentioned in my post was a later edition 2010 and "C".

    I'm just wondering if my posted functions and steps are correct?

    Don

  • Don Masin said:
    For the 674x_dsplib, there was just a "get software" control that only brought up release notes.

    Strange. I can successfully download dsplib_c674x_3_4_0_0_Linux.bin. Can you check again?

    Don Masin said:
    The 67x_dsplib had "download", so that's the one I used

    I am not sure if C67x lib can be used with C674x DSP.

    Don Masin said:
     SPRC121 is the part # of the document, SPRU657B, June 2005.  That's interesting, because the one that we used mentioned in my post was a later edition 2010 and "C".

    C674x dsplib 3.4.0.0 is from 2014

    Don Masin said:
    I'm just wondering if my posted functions and steps are correct?

    I will check and come back to you regarding these.

    Regards,
    Pavel

  • Don Masin said:
    I'm seeing some strange behavior out of the BitReverse routine.  Specifically, we're using dspf_sp_cfftr2().

    Don Masin said:

    *************** variables initialization **************

    Buffer size 2048

    float x[2048]

    float w[2048];

    ************* code init **********

    gen_w_r2(w, 2048);

    bit_rev(w,1024);

    ************* code *************

    for (i=0;i<2048;i++)

    {

        x[2*i) = (real) some function;

       x[2*i + 1) = (imag) some other function;

    }

    dspf_sp_cfftr2_dit(x,w,1024);

    bit_rev(x,512);  (I've also used bit_rev(x,1024 trying to bit-reverse the output of the bit-reversed fft routine)

    Input (2 channels from processor): 1 stream of real data + 1 stream of imag data

    At which function exactly you are seeing "strange behavior" (bit_rev(w,1024), dspf_sp_cfftr2_dit(x,w,1024), bit_rev(x,512))? And can you provide more details regarding this "strange behavior"?

    What I can state is that you are using the wrong DSPLIB. See also below e2e threads:

    Regards,
    Pavel

  • Thanks for your response Pavel.  

    Oops, I didn't realize the first time I looked at the page that it included downloads.  For some reason, it looked like release notes to me.  Just downloaded 674x DSPLib.  Looking through documentation. 

    Don