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.

TMS320C5505 ezDSP SARAM FFT

Hi Guys,

i have two questions, on which i need help.

1st: In the application Report for FFT-Implementation (SPRABB6B), the arrays for in-/output are placed in DARAM. Is ist possible to create larger arrays in SARAM and use them with the FFT-coprocessor? Which pragma-command is neccessary to put the array in SARAM?

2nd: Due to the HWAFFT can only work with 1024 point complex values, i want to split my array of 8096 complex values into eight ones with 1024 complex values. Therefore i only need to do the bit reversal, seperate the even/odd values and do the same procedure again, until i receive the final lenght. After doing the FFT in the i combine them again by using the Radix-2 Butterfly for so many stages, till i reach my final size of 8096 values again. Is this way of acting correct so far?

Thanks a lot

  • Hallo,

    for the first question, you can declare the vector in file.cmd where the memory is stated

    SECTIONS

    {

          .input : {} > SARAM_0 PAGE 0 ALIGN=4 

    }

    Then the pragma on the declaration of the variable is:

     

    #pragma DATA_SECTION (FFT_Data,".input")

    Int32 Data[1024];

    I hope this could help you.

    Regards,

    Vava

  • Thx for your answer,

    unfortunately i am not used to .cmd-files.

    In my created workspace, there is none of those files.

    Is there any good tutorial from TI to handle with those?

  • Hi Stefan,

    First check out the errata regarding HWAFFT pointers - 2.1.11 HWAFFT Data and Scratch Pointers Copied as 16-Bit Instead of 23-Bit in http://www.ti.com/lit/er/sprz310c/sprz310c.pdf

    The array pointers are copied as 16-bits instead of 23-bits, so MSB bits are not copied when addressing in SARAM (DARAM addresses fit within 16-bits).

    Probably the easiest solution is to run the HWAFFT from RAM instead of ROM, and include the hwafft.asm file in your project - that incorporates the 23-bit bug fix.

    ---

    A .CMD file should be part of your project to define memory ranges and section assignments. Check one of the CSL examples for good CMD file. Here's an example project: http://e2e.ti.com/support/dsp/c5000/f/109/p/333460/1165794.aspx#1165794

    .cmd file details are described in 9.6 Linker Command Files of http://www.ti.com/lit/ug/spru280i/spru280i.pdf

    ---

    You are on the right track with >1024 point FFTs - bit reverse and separate data first, then use the hardware accelerator to compute multiple 1024-point FFTs then complete the remaining Radix-2 calculations on the core. There is a small description in 
    8 Computation of Large (Greater Than 1024-Point) FFTs of http://www.ti.com/lit/an/sprabb6b/sprabb6b.pdf. The trick is to optimize complex multiplies and adds into as little cycles as possible.

    Hope this helps,
    Mark