We are using ADSP 21489 . In order to minimize the latency ( measured between Analog In and Analog Out ). The processor buffer size was tried to reduce from 64 -> 32 -> 24 ...etc When
the dsp readback module is working ( e.g. read 50 times per second ) , it creates "click" noise from buffer size 32 or smaller. The average MIPS of schematic at that moment is only around
Here below are my questions :
1. It seems that the Readback module will use a lot of MIPS, it is not very suitable to be used. We checked that the schematic itself can run properly ( no readback module active ) and consume 300MHz. Once readback is activated ( e.g. read 50 times per second ) , there is "click" noise even schematic is only used 230MHz. It is not very really make sense. Is that normal ?
2. Is there any way instead of using readback module , it can read signal level in more efficient way ?
Please find our reply on your queries,
Ans 1: Yes the behavior is expected one, here are the reasons
> Readback modules uses SPI interface to read actual signal in the buffer and transfer it to Sigmastudio host(PC) GUI. SPI ISR is running with highest priority for the SigmaStudio communication. If you go for continuous read then the SPI ISR takes lots of MIPS for SigmaStudio communication. The DSP readback module meant for debugging purpose if your are using it for continuous read then MIPS issue will be there.
> Reducing buffer size also increase MIPS consumption to I/O SPORT ISR. If you are using both reduced buffer size and continuous readback the MIPS consumption will go high, so that MIPS is not enough to process SigmaStudio schematic. we need to modify the framework buffer size and schematic for smooth audio processing.
Ans 2: You can use "level detectors" for checking signal level instead of continuous readback module.
For using "level detector" ( Signal Level Detector ) instead of dsp readback module, I have tested again in 21489 EVB ( with buffer set to 16) there is no obvious improvement . The "click" noise is still there. Once I turn off the Signal Level Detector , the noise will be gone. The only different is I cannot see the data exchange in capture window of SigmaStudio as what I can see when I turn on the continuous read function in dsp readback module.
As we need to implement several signal level meter in host processor side to indicate the real time signal level at different points of schematic, it is unavoidable to continuously read data from DSP. Now it seems it is not workable to use the standard modules ( either readback module or signal level detector ) if we also need to keep the buffer size as low as possible.
Is there still other way to achieve our requirement ? Thanks
For your Ans 2, I was a bit confused because I found a previous post which suggested to use dsp readback instead
Can you help o clarify it again ? Thanks
I just suggested the alternate module for level detection, but it seems both will take more MIPS to read parameter. So from your input the MIPS issue not because of module its because of frequency of param read. The only option you can reduce frequency of read in readback module. Also you should setup framework buffer configurations first and find out what is the available MIPS for your schematic process by adding modules one by one until you get noise output. If available MIPS not enough for your whole schematic then you can't reduce the buffer size and you can't increase frequency of continuous read in readback module.
Thanks for your explanation. However I have do another test in EVB with setting smaller buffer ( e.g. 8 ) , adding a readback module/ level detector in one input channel and then connected to output directly, there is nothing else. I checked the schematic only consumes less than 20MHz . Unfortunately , the "click" noise is still there once I start reading continuously. So I wonder if it is simply MIPS issue.
How can I explain this phenomenon ?
On the other hand, comparing with write command, it is using Safeload write , it seems that it will not cause any problem in audio even host frequently sends write command to dsp.
Is there any similar way ( e.g safe read ) ?