Instruction Definition
It seems the ADAU1701 can perform 1024 instructions at a 48KHz sample rate. I have looked at the software description for Sigma Studio without spending a long to looking. Can anyone tell me what an instruction is? I am used to implementing algorithms in C and in that case the instruction is essentially a line of C. Since this is a graphical programming environment I am thinking that an instruction is defined otherwise. Is there a guideline or rule that defines what represents an instruction?
Audio Signal Processors
hardware
sigmastudio
SigmaDSP Audio Processors
instruction
adau1701
Show More
Hello mark.allie,
I'm not sure how much I can say on a forum, let me give it a try.
The GUI elements (algorithms/modules) are eventually converted into an assembly code and that code is run in the DSP every sample period.
Each line of code can be an instruction like fetching, storing data, doing addition, multiplication, shifting etc. Each SigmaDSP family has its own architecture and instruction set, improvisation and optimization make the latest cores powerful than the previous one. But the concept is just the same.
Let's take an example with filter, assume it takes 20 instructions, these 20 lines of codes can be fetching audio data, coefficients, calculating taps, storing them into the memory etc. likewise other blocks like compressor, limiter, etc. will take instructions for its required operations.
The core clock of this 1701 DSP is 49.152MHz. Each clock cycle executes an instruction hence we have 49.152 million instructions per second. Since SigmaDSPs are stream processors, it runs the entire schematic (code) every sample period. So, if the sample rate is 48KHz, then you have 49.152MHz/48KHz = 1024 instructions available each sample period. if you increase the sample rate, you have less instructions available per sample period. at 96KHz, it's 49.152MHz/96KHz = 512 instructions per sample period and at 192KHz, it's just 256 instructions per sample period.
If you take sigma3xx DSPs, they have 6144 instructions per sample period at 48kHz. Its quad mac architecture makes it very powerful.
Hope this helps!
Regards,
Harish
Hello, Harish & Mark,
To add to Harish's fine answer, here's a spreadsheet showing the instruction count for popular ADAU1701 blocks. Being rather old it may not include any recent blocks, although the -1701 is a mature part so not much has changed. Also of note is that about eight of the 1024 / 512 / 256 instructions typically go to overhead, thus are unavailable for use. To find out how many instructions your project is using, look in your project folder for the compiler_output.txt file.
ADAU170X_Sigma-100_MIPS-Usage.zip
DSPs are multiply-and-add machines, thus it's no surprise that multiply and sum blocks use only a few instructions. More complex blocks use more. Divide is an interesting example, see this thread if you're curious. Of course, SigmaDSPs are audio chips -- they're not intended for heavy math, although you certainly can do some math with them. The ADAU1452 and above have more and better math functions. To reduce instruction usage, SigmaStudio pre-calculates the parameters used by many blocks -- converting dB into linear gain, calculating filter coefficients, etc.
The -1701 belongs to the "Sigma 100" family, with the simplest core. It cannot branch, so it runs through its entire program (that is, your entire schematic) in each sample interval. Unused program memory is filled with NOPs. This makes things wonderfully reliable; there's no need for a watchdog timer. Your microcontroller can boot one with just three block writes -- fill the instruction memory, the parameter memory, and the hardware control registers. Any 'dead-ends" in your signal flow go down the bit bucket -- thus for example if your application needs to select among three filter curves, it's far more efficient to pick an index-selectable filter than to use three fixed filters and a MUX. The higher SigmaDSPs can branch, yet this complicates the boot process.
Of course I recommend Dave's SigmaDSP videos (link atop this forum). If you're new to SigmaDSP, one of the first things to learn is the integer '28.0' and decimal '5.23' number formats used in the -1701.
Best regards,
Bob
Please log in to reply.