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

ADAU 1442 FIR number

SigmaDSP & SigmaStudio simsB Aug 28, 2019 00:00 2 replies Original on forum ↗
Thread Summary

Thread Summary

The user encountered an issue with the DSP ADAU1442 where adding more FIR filters caused all cutoff frequencies to halve. The problem was due to running out of MIPS at the 192kHz sampling frequency, as the core could not complete the program within the sample period. The solution is to optimize the program to stay below 25% usage at 192kHz.
AI Generated Content
Subscribe
simsB Question
Aug 28, 2019 00:00

Hi,

I have a problem with the DSP ADAU1442.

I use 3 FIR filters with 200 coef. in average, the filters work perfectly.

But, when I add a others FIR all cutoff frequency divide by 2.

I don't understand what the problem is. The sampling frequency is 192KHz.

Thanks for your help.

Audio Signal Processors

fir filter

filter

adau1442

fir_filter

frequency_cut

SigmaDSP Audio Processors

fir

Show More

4606.Capture.PNG
4606.Capture.PNG
3683.Capture1.PNG
3683.Capture1.PNG
Capture2.PNG
Capture2.PNG
Capture3.PNG
Capture3.PNG
Capture4.PNG
Capture4.PNG
DaveThib Reply
Aug 28, 2019 00:00

Hello simsB,

Yes, this is an interesting question you have posed. To understand what is happening you have to know a little bit more about the core functioning and how it works. The three generations of cores operate a little differently when this happens.

You have run out of MIPS.

This core will look for the falling edge ( if it is set that way) of the LRCLK to signal the start of the frame. This will start the core executing instructions and incrementing the program counter etc. Once it reaches the end of the program it will execute NOPs and at this point it will wait for the next sample period to start and it all starts again. In this part when it is executing instructions the start of the sample period signal is masked out.

When the program is too long it will start executing at the start of the frame and keep executing and meanwhile the start of a new frame happens but the core is still executing the instructions! So eventually it ends and then waits for the next frame. This results in the program running at half the rate you think it is running at. So all the filters and oscillators etc., are at half the frequency.

As an FYI for others reading this. This is a Sigma200 core and is also used in the 1761. The 1701 has a sigma100 core and that one will just restart the program and so some code is never reached and something may stop working. In the Sigma300/350 cores, the 1452/1467 it does the same thing. It stops execution and restarts the program so some code does not get reached and strange things can happen.

If you look at the compiler output in your screen shots you will see it there.

These % of usage in the report is for when you run at 48kHz fs. When you run at 96kHz you have half the instructions per frame and when you run at 192kHz you have 1/4th the instructions you have available at 48kHz. So anything above 25% is too large of a program at 192kHz fs.

Dave T

simsB Reply
Aug 29, 2019 00:00

Thank you very much Dave, your explanation is very clear