AnsweredAssumed Answered

Delay Line in External Memory

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

Hi,

 

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:

 

MEMORY:

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

SECTIONS:

        seg_ext_dmda
        {
            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,

 

Marc

Attachments

Outcomes