Getting close to 100%mips with ADAU1442
Hi,
I found the thread "https://ez.analog.com/message/38550#38550" and this say if mips will reach to 99% or more, audioable noise, glich will be heard. Is there a guidline to ensure proper signal processing how much % of MIPS is acceptable, 98% is OK?
Regards, Satoshi
Re: Reaching Processor Cycles limit on ADAU1761
Audio Signal Processors
mips
adau144x
adau1442
SigmaDSP Audio Processors
adau1761
Show More
Hi Satoshi,
In order to avoid an audible audio glitch, the program counter has to be able to jump back to the start of the program with adequate time before the next audio sample arrives. It's possible that there is some overhead associated with the jump-to-start command, which means that you would need a few free cycles at the end of the program for the jump to execute.
Although I don't have the equipment necessary to do an experiment, I think the solution to this problem can be found experimentally. Here is my suggested test procedure:
Make a SigmaStudio project with a white noise generator connecting directly to the outputs.
Download the project and measure the output signal's spectrum. The signal should occupy the frequency domain all the way up to 50% of the sample rate (also known as the Nyquist frequency).
After verifying this, you can start adding more processing to the project. In the interest of keeping the signal clean and unmodified, I would suggest simply adding linear gain blocks set to a gain of 1. This is transparent to the signal, but increases the number of instructions.
Continue adding blocks to the project and keep checking the output frequency spectrum.
At some point, the frequency spectrum will be cut in half. This signifies that the number of instructions in the DSP has exceeded the limit, and as a result, every second sample is being skipped, leading to a reduction in the output bandwidth.
The stated maximum instruction count for the ADAU144x in the datasheet is 3584 instructions per sample, when running at the standard 48 kHz sample rate and a DSP core clock frequency of 172.032 MHz. In theory, you should not see a reduction in the bandwidth of the output signal until you reach 3584 or 3585 instructions in your program. However, it's possible that there is some overhead associated with the jump-to-start, meaning that you'll see the bandwidth drop at some number of instructions below 3584.
Hi Yagami,
Thank you for detail instruction to confirm maximum allowable MIPS. I tested the ADAU1442 at fs=48kHz with attached project file and saw that even MIPS=101% , 3605 instructions, FFT showed flat response. But if instructions exceed 3608, there was high frequency roll-off.
I’m not sure why MIPS usage is over 100% but still program is working.
If I refer to resource window in SigmaStudio, it say program memory size is 4096, so there is still head room to execute program when MIPS>100%..?
Does anyone help?
Regards, Satoshi
Hi all:
The reason for the MIPs going above 100% is because the MIPS count includes the initialization code (around 18 instructions) that only get executed once during the first sample after the core starts. This may or may not be a big deal since all memories are cleared before the first sample arrives and volumes are usually set low. In other words, during the first sample of your program execution, your code will loose one sample (the second one), this means that the FS will be cut by half only for the 1st sample and the nex sample will be lost. After that, the program will not execute those initial 18 instructions, allowing for more MIPS to run than reported.
Also there are 4k program words allowing for more instructions to be written to program RAM than executable instructions.
Users must decide if they care or not about the 1st 2 samples being potentially corrupted.
Regards
Miguel
Hi MigCha,
Thank you for detail explanation.
I understood.
My original question is “Is there a guidline to ensure proper signal processing how much % of MIPS is acceptable, 98% is OK?”
But according to your answer, I feel operation with 100% of MIPS by SigmaStudiio output window is guaranteed as architecture because 18 instructions are a kind of over-head. Is this correct understanding?
Regards, Satoshi
Hi Satoshi:
You are correct as long as the user doesn't care about the accuracy of the inial 2 samples when their system starts
Miguel
Please log in to reply.



