ADAU144x: 3584 instructions in 4096 addresses

Discussion created by BrettG on Mar 24, 2011
Latest reply on Mar 25, 2011 by MagicRuB

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!!!