AnsweredAssumed Answered

Delay Line in External Memory

Question asked by MarcS. on Jan 21, 2010
Latest reply on Feb 17, 2010 by Mitesh



I'm using the ADSP-21469 EZ-Board and I would like to use the 128Mb external DDR2 SDRAM for storing 8 delay lines (1 per output channel). I don't want to use DMA for data transport between external memory and core processor because of a sample-based processing.


At the moment I use the following algorithm for the delay line:


    Channel_Out = Delayline[Index]; 
    Delayline[Index++] = Channel_In;      
    if (Index == DELAYLINE_LENGTH) {Index = 0;}


The variables Channel_Out and Channel_In are located in internal memory. If the delay line is located in internal memory too, everything works fine.


To store the delay in external memory I declared it in the following way:


section ("seg_ext_dmda") float Delayline[DELAYLINE_LENGTH];


Furthermore I have added this to the ldf-file:



seg_ext_dmda  { TYPE(DM RAM) START(0x00900000) END(0x01DFFFFD) WIDTH(16) }


            INPUT_SECTIONS($OBJECTS(seg_ext_dmda) $LIBRARIES(seg_ext_dmda))
        } > seg_ext_dmda


In this case I receive a signal at the output, but not the one I have expected.


Figure #1 shows the input (blue) and the expected output (red) without delay in this case.

Figure #2 shows the input (blue) and the received output (red) with delay in this case.


Perhaps someone has a hint what I have consider using the external memory.


Best regards,