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.

dsb/bios on ezdsp5515 and fft

Hello everybody :)

I've just buyed an Ezdsp5515usbstk. I'm tryng to do a spectrum analyzer with the board, so I thougth that using dsp/bios is the correct way to do a "real time" object. But there is a problem, I've followed instructions in http://processors.wiki.ti.com/index.php/C5515_eZdsp_FAQ#How_to_create_a_DSP.2FBIOS_project_for_the_eZdsp5515_using_XDC_Tools_3.16.03.36.3F but when i click twice on the tcf file in the project tree a messagebox appear with this content:

js: "C:/Program Files (x86)/Texas Instruments/xdctools_3_20_08_88/include/utils.tci", line 962: Error: Can't load platform definition 'ti.platforms.ezdsp5515': Error: Can't load 'ti/bios/config/bios_5515.tci': Error: Can't find import file: 'ti/bios/config/bios_5515.tci' (not found along 'C:\Program Files (x86)\Texas Instruments\xdctools_3_20_08_88\packages\ti\platforms\ezdsp5515/;;C:/Users/francesco/Documents/workspace_ti4/provabios;C:/Program Files (x86)/Texas Instruments/bios_5_41_02_14/packages;C:/Program Files (x86)/Texas Instruments/xdctools_3_20_08_88/include;C:/Program Files (x86)/Texas Instruments/xdctools_3_20_08_88/packages')

Correct any script errors in C:/Users/francesco/Documents/workspace_ti4/provabios/.gconf/provabios/provabios.tcf
using the Configuration Tool or a text editor, if necessary.

TConf initialization arguments:
-e environment['config.importPath']='C:/Users/francesco/Documents/workspace_ti4/provabios;C:/Program Files (x86)/Texas Instruments/bios_5_41_02_14/packages' -e environment['config.scriptName']='provabios.tcf'

 

What I've to do?

Thanks in advance

ps: If you would give me some "tips and tricks" about spectrum analyzer made with dsp you are welcome :) I've found vc5505 fft demo but it's a very complicated project. My initial idea was to use aic3204 project as base to build up my own but maybe is not the right way because more serious is using bios?? Is possible to send via slave usb port data? Or Rtdx?

  • I reply to myself :) GLOBAL VARIABILE of bios path was not correct, unistalling ccs 4.1.3 and installing 4.2.4 with all the tools, re-doing dsp bios tci file for ezdsp5515 now I can open dspbios GUI.

    TIps on converting fft filter demo for 5505 to ezdsp5515 are welcome

    Bye

  • Francesco,

    To convert the demo for the C5515 eZdsp you need to change the PLL settings as well as the ROM addresses in the code to fit the C5515

  • In the project pll was alredy set to 100M in the configuration.h and i've changed the rom address for the HWAFFT in the cmd file but when I try to rebuild project,  i have this error

    This project was created using a version of DSP/BIOS tools that is not currently installed: 5.40.2.22. Please install the DSP/BIOS tools of this version, or migrate the project to one of the supported versions.        VC5505 FFT Filter Demo    VC5505 FFT Filter Demo    1312565114444    10165

    even if i re-save tcf file with dsp gui. But in the tcf file ezdsp5515 is already set      --->   utils.loadPlatform("ti.platforms.ezdsp5515");

     

    My version of code composer is 4.2.4.00033

    xcd tools3.22.01.21

    bios 5.41.10.36

    Best regards

  • I reply myself again, maybe this information could be interesting for somebody : simply doing code gen tools update to v.4.39 the project is now built.

     

    Now the problem is: I'm tryng to implement a 2048 points fft using the "2N rule" using two 1024 hwafft for even and odd data using a 1023TAP filter. Even if use pragma section and cmd file directive  to manually allocate memory section in SARAM and not in DARAM, seems that all is in DARAM so the linker gives me many errors regarding memory allocation fails:

    ERRORS:
    run placement fails for object "convolved_buf", size 0x2000 (page 0).  Available ranges: DARAM_2      size: 0x2000       unused: 0x0          max hole: 0x0        VC5505 FFT Filter Demo    line 0    1313051400605    13553
    run placement fails for object "OverlapL", size 0x7fc (page 0).  Available ranges: DARAM_5      size: 0x2000       unused: 0x0          max hole: 0x0        VC5505 FFT Filter Demo    line 0    1313051400607    13557
    run placement fails for object "OverlapR", size 0x7fc (page 0).  Available ranges: DARAM_5      size: 0x2000       unused: 0x0          max hole: 0x0        VC5505 FFT Filter Demo    line 0    1313051400607    13558
    run placement fails for object "RcvL2", size 0x2000 (page 0).  Available ranges: DARAM_3      size: 0x2000       unused: 0x0          max hole: 0x0        VC5505 FFT Filter Demo    line 0    1313051400605    13551
    run placement fails for object "RcvR2", size 0x2000 (page 0).  Available ranges: DARAM_4      size: 0x2000       unused: 0x0          max hole: 0x0        VC5505 FFT Filter Demo    line 0    1313051400605    13552
    run placement fails for object "scratch_buf", size 0x2000 (page 0).  Available ranges: DARAM_1      size: 0x2000       unused: 0x0          max hole: 0x0        VC5505 FFT Filter Demo    line 0    1313051400606    13554
    run placement fails for object "XmitL2", size 0x1008 (page 0).  Available ranges: DARAM_6      size: 0x2000       unused: 0xff8        max hole: 0xff8        VC5505 FFT Filter Demo    line 0    1313051400606    13555
    run placement fails for object "XmitR2", size 0x1008 (page 0).  Available ranges: DARAM_7      size: 0x2000       unused: 0xff8        max hole: 0xff8        VC5505 FFT Filter Demo    line 0    1313051400606    13556
    unresolved symbol _scratch_even_buf, first referenced in ./filter_routines.obj        VC5505 FFT Filter Demo    line 0    1313051400607    13559
    unresolved symbol _scratch_odd_buf, first referenced in ./filter_routines.obj        VC5505 FFT Filter Demo    line 0    1313051400607    13560

    SECTION OF CMD FILE:

        data_even_buf : > SARAM     ALIGN=1024
        data_odd_buf : > SARAM      ALIGN=1024
        scratch_even_buf : > SARAM   ALIGN=1024
        scratch_odd_buf : > SARAM   ALIGN=1024
        twiddle_buf : > SARAM   ALIGN=1024

        data_br_buf     : > DARAM_1       
        scratch_buf     : > DARAM_1
        convolved_buf    : > DARAM_2
        coeffs_fft_buf    : >    DARAM_2

        RcvL1        : > DARAM_3   
        RcvL2        : > DARAM_3   
        RcvR1        : > DARAM_4   
        RcvR2        : > DARAM_4   
        FilterOut    : > DARAM_5   
        OverlapL    : > DARAM_5   
        OverlapR    : > DARAM_5   
        XmitL1        : > DARAM_6   
        XmitL2        : > DARAM_6   
        XmitR1        : > DARAM_7   
        XmitR2        : > DARAM_7

    SOURCE:

    #pragma DATA_SECTION(twiddle_buf,"twiddle_buf");
    Int32 twiddle_buf[1024];
    #pragma DATA_SECTION(scratch_even,"scratch_even");
    Int32 scratch_even[1024];
    #pragma DATA_SECTION(scratch_odd,"scratch_odd");
    Int32 scratch_odd[1024];
    #pragma DATA_SECTION(data_even_buf,"data_even_buf");
    Int32 data_even_buf[1024];
    #pragma DATA_SECTION(data_odd_buf,"data_odd_buf");
    Int32 data_odd_buf[1024];

     

    If i move all to SARAM, linker does his job but  I've only ugly noise in output

  • Hi Francesco,

    Have you read through this app report: http://www.ti.com/litv/pdf/sprabb6a?

    In your *.cmd file, you are trying to put too many bytes into DARAM_2 and run placement fails...

    Putting everything in SARAM is appropriate, but the HWAFFT buffers must be aligned in memory or the results will appear as noise.

    See Section 9: Appendix A Methods for Aligning the Bit-Reverse Destination Vector in SPRABB6 for buffer alignment instructions.

    Hope this helps,
    Mark


  • Hi Sir, I've alredy tryed to use all of the 3 methodes described in the document:

    1) Simply allocating a right portion of memory in CMD file

    DARAM2_3 (RWIX): origin = 0004000h, length = 004000h /* on-chip DARAM 2_3, 8192 words */

    2) Using the ALIGN keyword in the section "SECTIONS" of the CMD file

     data_br_buf    :> SARAM    ALIGN = 2048
     data_even_buf    :> SARAM   ALIGN = 2048
     data_odd_buf    :> SARAM   ALIGN = 2048
     scratch_even_buf    :> SARAM   ALIGN = 2048
     scratch_odd_buf :> SARAM   ALIGN = 2048

    3) Using the #pragma DATA_ALIGN directive in the source

        #pragma DATA_SECTION(data_even_buf, "data_even_buf");
        #pragma DATA_ALIGN (data_even_buf, 2048);
        Int32 data_even_buf[1024];
        #pragma DATA_SECTION(data_odd_buf, "data_odd_buf");
        #pragma DATA_ALIGN (data_odd_buf, 2048);
        Int32 data_odd_buf[1024];
        #pragma DATA_SECTION(scratch_even_buf, "scratch_even_buf");
        #pragma DATA_ALIGN (scratch_even_buf, 2048);
        Int32 scratch_even_buf[1024];
        #pragma DATA_SECTION(scratch_odd_buf, "scratch_odd_buf");

        #pragma DATA_ALIGN (scratch_odd_buf, 2048);

        Int32 scratch_odd_buf[1024];

    Have I do some mistakes? Because the result is not changed

    I've  used all of them together allocating all in SARAM and I've tryed to comment alternatively the ALIGN in CMD file and the #pragma DATA_ALIGN in souce but without results; And why if i simply add the new portion of code of the 2048points example in the VC5505 demo and try to allocate the new variables in the SARAM, leaving all the rest untouched in DARAM, as the project is given, the linker errors appear?  I thought that new variabiles does not affect the older. Maybe the new code fill the stack and the corrispectives DARAM?

    And for the twiddle factors? I generate the table with function reported above, similar to the gen_twiddle of the TI's DSPLIB, called with w as the pointer to store twiddle table, scale=1.0 and n=1024, so I would expect an array of Int32 == int of 1024 elements

    void gen_twiddle(int *w, int n, float scale) {  
        float angle, step;
        float tw_r,tw_i;
        int temp_r,temp_i;
        short tw_r16, tw_i16;  
        int i;     
        step = (2.0 * PI) / (float)n;  
        for (i = 0, angle = 0.0; i < 3*n/4; i++, angle += step) {
            tw_i= scale * sin(angle);  
            tw_r = scale * cos(angle); 
            temp_r=tw_r;
            temp_i=tw_i;
        tw_i16 = (Int32)(temp_i >> 15);
        tw_r16 = (Int32)(temp_r >> 15);
        twiddle_buf[i] = (((Int32)tw_r16 & 0x0000FFFF));
        twiddle_buf[i] = twiddle_buf[i] | ((Int32)tw_i16 & 0x0000FFFF);
        }
    }  

    but analyzing the memory with graph tool the only way to see a figure quite similar as a distorted sinusoid is to graph with index count=1 to jump imag values and  all I can see is some type of  square wave that is long 512 points and not 1024. Other values are zero. I've seen this is the correct way to put data into array suitable for the scope (is the same of the TI's Cplx_Mult);  I've tryed to use struct but the result is the same.

  • Hi Francesco

    Have you managed to convert that project for EzDSP C5535 board ?

    I'm trying the same with the two examples from google code: 

    VC5505 FFT Filter Demo

    C5515 eZdsp Audio Filter Demo

    I started analyzing and converting the code.

    Up to now no success, the examples are quite complex and not easily understandable by a newcomer like me.

    What is surprising me is that nobody seems to have converted these projects and updated the google code although these are quite old and the 5535 board is already on the market from long time.

    May be very few people use these board ?

    Kind regards

    Giuliano