ADSP-21479 - External RAM based Delay

H at all,

  I've recently purchased an ADSP-21479 EZLite eval board and I'm experimenting some simple algorithms.

My application requires a very long multichannel audio delay (at least 1 second per 8 channel) ad 96Khz.

The required amount of ram for the delay buffers is:  96.000*4byte*8channel = 3.072.000 Bytes

Since the demoboard have a 32MB Micron SDRAM memory installed in it my intention is to use this memory to store delay buffers.

Is there any example of an external memory based delay? Could be fine also a simple external memory talk through example.

Thanks a lot

Andrea

  • 0
    •  Analog Employees 
    on May 28, 2012 4:06 PM

    Hi Andrea,

    Please find the attached simple code, which shows how to store the content of the source array into an SDRAM memory.

    In the code, the data in the source array is written into the SDRAM memory and then it is read back in to the destination array from SDRAM memory.

    This will help you to configure SDRAM control register for ADSP-21479 processor.

    Regarding “simple external memory talk through example.”

    >> As such we do not have talk through code using external memory, but I would suggest you to kindly go through the following audio talk through example code, present in the following path:

    …\Program Files\Analog Devices\VisualDSP 5.0\214xx\Examples\ADSP-21479 EZ-Board\21479 AD1939 C Block-Based Talkthru 48 or 96 kHz

    Maybe you can modify this code accordingly to utilize external memory instead of internal memory.

    Kindly let me know in case of any clarification.

    Thanks,

    Harshit

  • Thanks Harshit! I will try using attached example and I'll let you know

  • I've tested your example and it works.

    But now I've to implement this code in my "C" application.

    Actually my application is a simple Delay written on top of the C multichannel TalkTrough example.

    I have tried to import the linker file of the example in my project, compilation was done but nothing works.

    I also doesn't know the way to use the ".section/dm" directive in C.

    Regarding initializzation of SYSCTL, EPCTL, SDRRC and SDCTL registers..can I use C code or It's better to embed assembly code in my c?

    Thanks in advance

    Andrea

  • 0
    •  Analog Employees 
    on May 30, 2012 11:03 AM

    Hi Andrea,

    Regarding “I also doesn't know the way to use the ".section/dm" directive in C.”

    >> This can be done as shown below:

    For asm:               “ .section/dm seg_dmda;

    .var source[SIZE]={0x11111111,0x22222222,0x33333333,0x44444444,0x55555555,0x66666666};”

    For C:                    “ section("seg_dmda") int source[SIZE]={0x11111111,0x22222222,0x33333333,0x44444444,0x55555555,0x66666666};”

    Also “Regarding initialization of SYSCTL, EPCTL, SDRRC and SDCTL registers..can I use C code or It's better to embed assembly code in my c?”

    >> Yes, you can use either C code or embed an assembly code in C. In order to understand C/C++ and Assembly interface, I would suggest you to kindly go through page 321/1208 of the “Visual DSP C/C++ compiler manual for SHARC processor”. The link for the manual is given below:

    http://www.analog.com/static/imported-files/software_manuals_legacy/SHARC_comp_man.pdf

    Kindly let me know in case you have any further queries/doubts.

    Thanks,

    Harshit

  • 0
    •  Analog Employees 
    on Aug 2, 2018 4:37 PM
    This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

    Thank you,
    EZ Admin