Analog.com Analog Dialogue Wiki 简体中文
EngineerZone
EngineerZone
  • Log In
  • Site
  • Search
  • User
  • Support

    Popular Forums

    • RF and Microwave
    • Power Management
    • Video
    • FPGA Reference Designs
    • Precision ADCs
    • Linux Software Drivers
    • SigmaDSP Processors & SigmaStudio Dev. Tool

    Product Forums

    • A2B
    • Amplifiers
    • Analog Microcontrollers
    • Clock and Timing
    • Data Converters
    • Direct Digital Synthesis (DDS)
    • Energy Monitoring and Metering
    • Interface and Isolation
    • MEMS Inertial Sensors
    • Processors and DSP
    • Switches/Multiplexers
    • Temperature Sensors
    • Voltage References
    View All

    Application Forums

    • Audio
    • Automated Test Equipment (ATE)
    • Condition-Based Monitoring
    • Depth, Perception & Ranging Technologies
    • Embedded Vision Sensing Library
    • Motor Control Hardware Platforms
    • Optical Sensing
    • Precision Technology Signal Chains Library
    • Video
    • Wireless Sensor Networks Reference Library

    Design Center Forums

    • ACE Evaluation Software
    • ADEF System Platforms
    • Design Tools and Calculators
    • FPGA Reference Designs
    • Linux Software Drivers
    • Microcontroller no-OS Drivers
    • Reference Designs
    • Signal Chain Power (SCP)
    • Software Interface Tools
    • System Demonstration Platform (SDP) Support
  • Learn

    Highlighted Webinar

    Multidimensional Simulations of Beamformers and other RF Integrated Circuits in Keysight SystemVue

    Recent Discussions

    • Issue running built programs on Pluto
    • Activity: Simple Op Amps, For ADALM1000 Fig. 1.3 Buffering example
    • ADALM-PLUTO [NETWORK] vs [USB_ETHERNET]
    • Using buffer size different from 2**n
    • ADALM1000 Pixelpulse feature Source Voltage / Measure Current explanation

    Places

    • ADI Education Home
    • ADI Education China
    • ADI Education India
    • ADI Education Philippines
    • StudentZone (Analog Dialogue)
    • Virtual Classroom

    Latest Webinars

    • Multidimensional Simulations of Beamformers and other RF Integrated Circuits in Keysight SystemVue
    • Improve Smart Building Energy Efficiency with Industrial Ethernet Controlled Air Conditioning (HVAC) Systems
    • Sustainable Motion Control Solutions for High Performance Servo Drives
    • Audio Design Solutions for Augmented and Virtual Reality (AR/VR) Glasses
    • Robust Industrial Motor Encoder Signal Chain Solutions
    View All Webinars
  • Community Hub

    Challenge Yourself!

      KCC's Quizzes: AQQ 236 about strange marking on airplane engines
    View All

    Places

    • Community Help
    • Logic Lounge

    Resources

    • EZ Code of Conduct
    • Getting Started Guide
    • ADI: Words Matter
    • Community Help Videos
    View All
  • Blogs

    Highlighted Blogs

    Crawl, Walk, And Run - The Journey To Create The Phaser

     

    Hardware Holds The Key To Making Industrial Systems IEC 62443 Compliant

    Latest Blogs

    • Behind the Scenes of DIYRadio Blogs: An Introduction
    • Empowering Surveillance Cameras To Capture A Scene Without Being Heard
    • Mastering The Metrics Makes Specifying Encoders Simpler
    • Understanding Secret Key Cryptography Without Formulas
    • 3 Reasons Why IO-Link is Changing Smart Factory Decision Making
    Read All Blogs

    ADI Blogs

    • EZ Spotlight
    • The Engineering Mind
  • Partners

    Electronic Design Services - PartnerZone

    • Boston Engineering
    • Calian, Advanced Technologies
    • Colorado Engineering Inc. (DBA CAES AT&E)
    • Clockworks Signal Processing
    • Epiq Solutions
    • Fidus
    • PalmSens
    • Richardson RFPD
    • Tri-Star Design, Inc.
    • VadaTech
    • Vanteon
    • X-Microwave
    View All
SigmaDSP Processors & SigmaStudio Dev. Tool
  • Processors and DSP
SigmaDSP Processors & SigmaStudio Dev. Tool
Documents How many instructions can be executed per sample in SigmaDSP?
  • Forums
  • Members
  • Tags
  • More
  • Cancel
  • Documents
  • +AD193x: FAQ
  • +ADAU1401AEBZ: FAQ
  • +ADAU144x: FAQ
  • +ADAU1452: FAQ
  • +ADAU145x: FAQ
  • +ADAU1701: FAQ
  • +ADAU1701MINIZ- FAQ
  • +ADAU1761: FAQ
  • +ADAU1772: FAQ
  • +ADI: FAQ
  • +AN-951: FAQ
  • +bitwise logic: FAQ
  • +Compressor Table Format: FAQ
  • +Creating a simple balance crossfade control: FAQ
  • +Creating constant-dB envelope decay using an existing linear decay algorithm: FAQ
  • +Crossover with more than 3 bands: FAQ
  • +E2PROM: FAQ
  • +EEPROM: FAQ
  • +EVAL DAU144XEBZ: FAQ
  • +EVAL-ADAU1781Z: FAQ
  • +Excluding Cells from the Exported System Files: FAQ
  • +GPIO button: FAQ
  • +GPIOs or Aux ADCs: FAQ
  • +How do I execute a software safeload write?: FAQ
  • +IIR coefficient filter: FAQ
  • +IIR filter: FAQ
  • +Peak Full Range Compressor: FAQ
  • +Preserving "Ear-candy": FAQ
  • +Push Button Volume: FAQ
  • +self-boot EEPROM image: FAQ
  • +Sigma300 Family Products: FAQ
  • -SigmaDSP: FAQ
    • Booting a SigmaDSP from a microcontroller with no C compiler
    • Calculating Filter Coefficients to Store in a Microcontroller
    • Can I program multiple SigmaDSPs in parallel using one USBi?
    • Can I use SigmaDSP to decode MP3/WAV/AAC?
    • Can SigmaDSP do frequency-domain processing like FFT or pitch shift?
    • Creating a delay after startup
    • FAQ: Can I write C or assembly code for SigmaDSP in SigmaStudio?
    • FAQ: Can we bundle SigmaStudio with our product design?
    • FAQ: Developing custom algorithms and/or using 3rd party algorithms
    • FAQ: How can I estimate MIPS/Memory resource on SigmaDSP?
    • FAQ: What types of capacitors are good to use in the analog audio signal path?
    • FAQ:  Which SigmaDSP ICs support selfbooting from an EEPROM?
    • FAQ:  Why isn't a software/documentation CD included with my evaluation board?
    • How do I create the microcontroller code to interface to my SigmaDSP?
    • How do I start a timer after power-on, or when the input signal goes away?
    • How many instructions can be executed per sample in SigmaDSP?
    • Memory requirements for booting a SigmaDSP with a microcontroller
    • Monitoring average and instantaneous signal levels
    • Playing audio samples in SigmaDSP
    • SigmaDSP PCB Layout Best Practices
    • SigmaDSP Products and Evaluation Boards - ROHS and REACH Compliance
    • SigmaStudio 3.4 Released
    • Updating SigmaDSP Parameter with a Microcontroller
    • Using two SigmaDSP evaluation boards simultaneously with one USBi board
    • Welcome to the SIGMADSP Processors and SIGMASTUDIO Development tool community
    • What are the number formats for SigmaDSP?
    • What is the step size for audio delay in a SigmaDSP?
    • Where can I buy a SigmaDSP Evaluation Board or USBi (EVAL-ADUSB2EBZ)?
    • Which SPI Mode is used by SigmaDSP Devices?
  • +SigmaStudio: FAQ
  • +single precision VS double precision: FAQ
  • +Stimulus-Probe Capability and Limitations: FAQ
  • +Stopwatch to Count Successive Samples: FAQ
  • +Toolbox into the schematic tab: FAQ
  • +USB communications between the PC and SigmaDSP: FAQ
  • +Using Hierarchy Boards to create re-usable code: FAQ

How many instructions can be executed per sample in SigmaDSP?

Calculating IPS (Instructions Per Sample)

The number of instructions that can be executed per sample depends on three things:

  • The core frequency of the SigmaDSP you are using (as you have it configured in your system)
  • The size of the program memory of the SigmaDSP you are using
  • The audio sample rate of your system

The simple equation to calculate the number of instructions that can be execute per sample is:

Instructions per sample = Core frequency of DSP / Audio sample rate

Typically, IPS (instructions per sample) must be less than or equal to the size (in words) of program memory. The reason for this is that all of the instruction codes need to be stored in program memory.

However, the ADAU1781 is a special case because it has a a relatively small program memory (512 words) but it can execute up to 1024 instructions per sample at a 48 kHz sample rate. So, in order to use more than 512 instructions per sample in the ADAU1781, algorithms utilizing subroutines are required. These are generally referred to as "optimized" algorithms in SigmaStudio, because they use fewer program memory words than the number of instructions they execute.

Table of SigmaDSPs and corresponding IPS at different sample rates

Here is a table showing the IPS for each SigmaDSP product at different sample rates.

Product Maximum DSP core frequency (MHz) IPS @ 48 kHz*** IPS @ 96 kHz*** IPS @ 192 kHz***
AD1953 24.576 512 - -
AD1954 24.576 512 - -
AD1940 73.728 1536 768 384
AD1941 73.728 1536 768 384
ADAU1701 49.152 1024 512 256
ADAU1702 24.576 512 256 128
ADAU1401A 49.152 1024 512 256
ADAU1761 49.152 1024 512 -
ADAU1461 49.152 1024 512 -
ADAU1781 49.152 1024* 512 -
ADAU1442 172.032 3584 1792 896
ADAU1445 172.032 3584 1792 896
ADAU1446 172.032 3584 1792 896
ADAU1772 N/A** - - 32

* The ADAU1781 can execute 1024 instructions per sample at 48 kHz, but its program memory only holds 512 instruction codes

** The ADAU1772 does not technically have a SigmaDSP core, but rather a filter engine, which always runs at 192 kHz

*** "IPS @48 kHz" means "Instructions per sample at normal 48 kHz sample rates or lower, depending on the master clock frequency."

"IPS @96 kHz" means "Instructions per sample at double-rate 96 kHz sample rates or lower, depending on the master clock frequency."

"IPS @192 kHz" means "Instructions per sample at quad-rate 192 kHz sample rates or lower, depending on the master clock frequency."

Checking the number of instructions used in a SigmaStudio project

The number of instructions per sample required by a given project can be found in the compiler_output.txt file that is generated after the Link-Compile-Download or Link-Compile-Connect functions are executed. The compiler_output.txt file can be found in a subfolder where the project file is stored on the hard drive.

The path is typically: Project Folder / IC #_Project Name / net_list_out2

Here is an example with the AD1940:

The compiler_output.txt file contains different information depending on the SigmaDSP used, but the important number to note is the one labeled Instructions or MIPS:

In the example above (using the AD1940), you can see that 23 instructions (the highlighted number) are being used in the project. This is within the limit of 1536 IPS @ 48 kHz, 768 IPS @ 96 kHz, and 384 IPS @ 192 kHz, so this project could run at any sample rate.

Important! Note that the compiler does not have knowledge of the sample rate, so you have to check to make sure the number of instructions is within the allowed limit.

For newer SigmaDSPs (ADAU1761, ADAU1781, ADAU144x family...), you can view the number of instructions used directly within SigmaStudio.

Go to View - Output, or press Ctrl+4 to see the Output window.

The output window will be blank until you compile the project.

Once you compile the project, you will see a detailed listing of the algorithms used, and the total instructions required by the project. This example uses an ADAU1761.

Note that 667 instructions are being used in this project. If you refer to the table earlier in this FAQ, we can see that the ADAU1761 can execute 1024 IPS @ 48 kHz, but only 512 IPS @ 96 kHz. Therefore, this project will run at a 48 kHz sample rate, but it will not run at 96 kHz.

Errors due to over-sized programs in systems with 96 kHz or 192 kHz sample rates

So, it is important to check the compiler output in order to make sure that the required number of instructions will fit what is available in the DSP for your desired sample rate. If you attempt to run a program that is outside of the allowable bounds, then errors will occur.

For example, if an ADAU1761 was set up to run at 96 kHz and the program shown above was downloaded to it (with 667 instructions), then the effective rate of the system would be cut in half, since only every other sample would be processed by the DSP (with alternating samples being ignored entirely). This would have the effect of cutting the bandwidth in half, and also shifting the frequency of every frequency-dependent algorithm in the DSP by a factor of 2. In order to run this example program correctly, the user would need to lower the sample rate down to 48 kHz so the full 667 instructions could be executed within the span of a single audio frame.

  • instructions
  • memory
  • program
  • sigmadsp
  • sample_rate
  • Share
  • History
  • More
  • Cancel
Related
Recommended
Social
Quick Links
  • About ADI
  • ADI Signals+
  • Analog Dialogue
  • Careers
  • Contact us
  • Investor Relations
  • News Room
  • Quality & Reliability
  • Sales & Distribution
  • Incubators
Languages
  • English
  • 简体中文
  • 日本語
Newsletter

Interested in the latest news and articles about ADI products, design tools, training and events? Subscribe today!

Sign Up
Analog Logo
©1995 - 2023 Analog Devices, Inc. All Rights Reserved
沪ICP备09046653号-1
  • Sitemap
  • Legal
  • Privacy & Security
  • Privacy Settings
EngineerZone Uses cookies to ensure you get the best experience in our community. For more information on cookies, please read our Privacy & Security Statement.