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

ADAU144x: 3584 instructions in 4096 addresses

SigmaDSP & SigmaStudio ADIApproved Mar 24, 2011 00:00 3 replies Original on forum ↗
Subscribe
ADIApproved Question
Mar 24, 2011 00:00

The ADAU144x devices have 4096 addresses in program RAM, but can only execute 3584 instructions per frame. The compiler output will show the user that they are using X instructions out of a total of 4096, however, if a program exceeds 3584 instructions, it will not run properly on the DSP.

The reason for this is that the ADAU144x core contains branching and looping instructions that allow the program counter to jump around in RAM at any time. This makes it possible to create conditional code branches. For example, a conditional statement could select processing path A or B. Let's call the rest of the program instructions, which are executed regardless of the conditional statement, are called C.

In theory, A + B + C could exceed 3584 instructions, but as long as A + C < 3584 and B + C < 3584 instructions, the program will run properly on the DSP.

So far, we haven't implemented this functionality on the DSP, so the discrepancy between the datasheet and the compiler output might be confusing. Hopefully this explanation makes it easier to understand.

In any case, for now, make sure your ADAU144x programs never exceed 3584 instructions for 48 kHz, 1792 instructions for 96 kHz, or 896 instructions for 192 kHz!!!

Audio Signal Processors

adau1446

adau1442

adau1445

program

compiler_output

sigmastudio

SigmaDSP Audio Processors

ram

Show More

MagicRuB Reply
Mar 25, 2011 00:00

BrettG,

The compiler output will show the user that they are using X instructions out of a total of 4096

I'm using SigmaStudio 3.3 Build 0 Rev 612 and even though it says 4096 up top, it is correctly showing MIPS % out of 3584, not 4096. The compiiler_output.txt file says the same.

ADIApproved Reply
Mar 25, 2011 00:00

Hi MagicRub. Good catch. The software team actually implemented this at my request. The idea is that program RAM is actually 4096, but the number of instructions that can be executed per sample is 3584. Typically in DSP programming lingo, the term MIPS is used interchangeably with "instructions per sample", even though technically they're not the same thing. MIPS actually stands for million instructions per second, and for the ADAU144x the maximum allowable MIPS is InstructionsPerSample * SamplesPerSecond = 3,584 * 48,000 = 172,032,000, which is why the core clock runs at 172.032 MHz.

In any case, the compiler output is showing a percentage of instructions per sample, the maximum of which is 3584. Sorry if that's confusing! Perhaps we can word this in a more easy-to-understand way in a future revision.

MagicRuB Reply
Mar 25, 2011 00:00

I'm good, I was just trying to help.