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.

TMS320C6678: Choosing the right FFT Library

Part Number: TMS320C6678
Other Parts Discussed in Thread: FFTLIB

Hi,

I want to use a implementation of FFT functions on the TMS320C6678 (where I want the calculation to run only on one core).

In addition to that, I need a FFT library capable of following tasks:

  • computing radix 2 or radix 4 fourier transforms

  • computation on just one core
     
  • handling real inputs and computing complex outputs
     
  • performing inverse fft
     
  • beeing able to handle windowsizes of up to 2^15 datapoints or  more
     

Searching TI's libraries I stumbled over three different (?) libraries:

I am currently very much confused what the difference between those three options is. Consequently, I have the following questions:

  • What is the difference between the three options?

  • How do I use them (an example would be perfect)?
     
  • Which one is the best choice for my requirements?
     

In addition to that, while concerning FFT lib v3.1, what part of the library requires libarch or EDMA transfers? Does this interfere with EDMA transfers triggered using the CSL?

Thanks a lot in advance

Paul

  • Hi,

    When you install the latest Processor SDK RTOS:
    www.ti.com/.../processor-sdk-c667x

    You have fftlib_3_1_0_0 installed in the ~/ti folder. This is the library you're supposed to use along with the processor sdk.

    Best Regards,
    Yordan
  • Hi Yordan,

    thanks for the quick answer. Unfortunately, this does not solve my issue. I still have the following questions:

    - What is the difference between the three options (especially between fftlib and the fft implementations in the DSPlib)
    - If I want to include fftlib_3_1_0_0 to my project it also includes "libarch" and "edma3". For what functions in the fftlib are those libraries needed?
    - Does the edma3 library interfere with the edma from csl?
    - Can you provide examples on how to use the functions ?

    Thanks!

    Paul
  • FFTLIB is meant for larger than 64K FFT and for users who want to leverage the power of multicore DSP as the FFTLIB uses openMP to deploy FFT compute across multiple cores. To optimize implementation the FFTLIB uses EDMA to move data to DSP internal memory so the load/store latency to external memory is reduced and the DSP can focus on the compute.

    EDMA library refers to EDMA3 LLD driver that we provide in the Processor SDK RTOS

    Examples for using these functions are in the FFTLIB in the path :
    fftlib_3_1_0_0\packages\ti\fftlib\src

    All files with name _d.c are source for the unit test for the FFLTIB functions that generate the inputs, radix and then compares the out put with reference output.

    Regards,
    Rahul
  • Hi Rahul,

    thanks for your answer!

    First of all, we do not use OpenMp for our application.
    Just to be sure that I understand it correctly: FFTLIB is not suitable for windowSizes < 64K applications?
    What fft functions should I use for my use case with windowSizes < 64K. FFTlib functions without "omp" in the function name or the DSPlib fft functions?

    Within my project I do not use the L2SRAM as cache, I use it as explicitly addressed memory (with both data and executable program contents). Does this interfere with the impelementation of the fft functions in the FFTlib or the DSPlib? In other words, do the fft functions overwrite the the L2SRAM?

    As mentioned, we use EDMA from the CSL library. As you said FFTlib uses EDMA from the edma3 library. This brings up the question if these two libraries get in each others way?

    Best Regards

    Paul
  • Hi Rahul,

    I have another question: Are any of the TI fft functions inplace capable? Such that input vector is equal to output vector? Or do input and output vector always have to be indepent?

    Thanks a lot!

    Paul