ΣSigmaStudio Ask AI Русский Log in

ADAU1452 multiple instances of External Delay block

SigmaDSP & SigmaStudio sec1980 Nov 16, 2022 00:00 2 replies Original on forum ↗
Subscribe
sec1980 Question
Nov 16, 2022 00:00

Hi to all,

I need to implement a 4IN - 8OUT processor on ADAU1452 and I need to manage 4 long delay cells, one for each input channel, with different values on each.

The RAM inside ADAU1452 is not enough, so I've mounted a SPI External RAM chip on the SPI Master port of the DSP.

My question is: is it possible to manage on the same chip multiple instances of the External Delay Block on Sigmastudio with different values on them? Or as alternative I need to install 4 different RAM chip controlled by different chip select pin?

Some time ago another user requested the same, but the thread has left pending for more than 1 year and it referred to previous version of Sigmastudio.

Let me know as soon as possible

Regards

Marco Secondini

Audio Signal Processors

adau1452

software

sigmaStudio 4.7

external delay

SigmaDSP Audio Processors

Show More

DaveThib Reply
Nov 17, 2022 00:00

Hello Marco,

This is a block and functionality we have been working on around the time of your last post.

Here is the updated Wiki entry:

External SPI Delay [Analog Devices Wiki]

Yes, it will now support multiple instances but you will run into limitations of the SPI port speed. If you have multiple RAM chips then keeping the PCB layout good for high frequencies will become more difficult with multiple parts and longer trace distances. How many channels you can use will depend on your sample rate of course.

Do these long delays need to have the same signal bandwidth? Often with things like reverbs the long reflections usually do not have much high frequency content. Also, do you need it to be 24 bit data?

One of the shortfalls of the External SPI Delay is that it sends out 32 bits for each sample since that is the size of the data in the core. What you can do is use the Pack and Unpack blocks to put together two channels of audio and send it out to one delay line. This saves a lot of memory and most reverb or echo applications really do not need 24 bits of audio and certainly not 32 bits!

You will have to do some shifting of the data to get 24 bit data into the bottom 32 bits in the core and then unpack them correctly. It would be a great little example project for me to do but I just do not have the time today to do it.

There are other ways to save delay space. I have done a delay stretcher but it decimates the audio down to a lower sample rate. You can do that in this core which will save on SPI writes so going down to 24kHz fs will give you twice the delay length if you can support only 12kHz of bandwidth. Like I said earlier, it may be fine if it is just the longer reflections.

Dave T

sec1980 Reply
Nov 18, 2022 00:00

Hi Dave,

I've tried to insert multiple instances of External Delay Block using the same RAM chip, but Sigmastudio gives back errors in the compiler Output: it seems like there is no way to do that apart from using one external chip for any delay block on Sigmastudio, connected to different MPx pin used as Slave Address for SPI communication. Is it correct?

The only thing I can do is growing the external delay block to manage up to 4 signals, all together with the same value of delay...

This is disappointing given that ADAU1452 can manage a very large number of channel and has enough processing power to be used also in multichannel application like my 4IN to 8OUT processor.

Other solutions are not acceptable for my application, because I need to keep the maximum audio quality on any channel on the whole bandwidth from 20Hz to 20kHz, because is an application for professional audio system (no reverberation or similar).

Probably I have only 2 ways:

- insert one chip for any external delay block in Sigmastudio

- replacing my ADAU1452 with ADAU1466 that has the same processing power but double RAM memory.

Give me your feedback...