Locale Icon
English
  • Forums

    Popular Forums

    • LTspice
    • Video
    • Power Management
    • RF & Microwave
    • Precision ADCs
    • FPGA Reference Designs

    Product Forums

    • Amplifiers
    • Clocks & Timers
    • Data Converters
    • Direct Digital Synthesis (DDS)
    • Energy
    • Interface and Isolation
    • MEMS Inertial Sensors
    • Power Management
    • Processors & DSP
    • Processors & Microcontrollers
    • Switches & Multiplexers
    • Sensors
    • Voltage References
    View All

    Application Forums

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

    Design Center Forums

    • ACE Evaluation Software
    • ADEF System Platforms
    • Design Tools & Calculators
    • FPGA Reference Designs
    • Linux Software Drivers
    • Microcontroller no-OS Drivers
    • Power Studio Designer
    • Power Studio Planner
    • Reference Designs
    • Robot Operating System (ROS) SDK
    • Signal Chain Power (SCP)
    • Software Interface Tools
    • System Demonstration Platform (SDP) Support
  • Learn

    Highlighted Webinar

    Power Management Fundamentals II Session 5: Deeper Look into Power Protection

    When is the best time to discover your power circuit needs protection? Let's explore the use of some input protection and control options like ideal diodes...

    Places

    • ADI Academy
    • ADI Webinars
    • Video Annex
    • Virtual Classroom

    Libraries

    • 3D ToF Depth Sensing Library
    • Continuous-Wave CMOS Time of Flight (TOF) Library
    • Embedded Vision Sensing Library
    • Gigabit Multimedia Serial Link (GMSL) Library
    • Optical Sensing Library
    • Precision Technology Signal Chains Library
    • Software Modules and SDKs Library
    • Supervisory Circuits Library
    • Wireless Sensor Networks Library

    Latest Webinars

    • Design Smarter with Compact, Low-Power Precision Current Source Signal Chains
    • Power Management Fundamentals II Session 6: Key Layout Considerations for Power
    • A 16T/16R X-Band Direct Sampling Phased Array Subsystem using Apollo MxFE
    • Power Management Fundamentals II Session 5: Deeper Look into Power Protection
    • Power Management Fundamentals II Session 4: Isolated Converters Explained
    View All Webinars
  • Community Hub

    Challenge Yourself!

      KCC's Quizzes AQQ296 about repairing an equation in a digital display

      1. Quote of this month: " When I die, I want to die like my grandfather who died peacefully in his sleep. Not screaming like all the passengers in his...

    View All

    What's Brewing

      Read a Blog, Take this Quiz for Another Chance to Win a Gift Card!

      Important: Read the blog first . The quiz questions are all based on the content from the blog: Too Much Chatter and Not Enough Talk - Learn the Benefits...

    View All

    Places

    • Community Help
    • Analog Dialogue Quiz
    • Logic Lounge
    • Super User Program

    Resources

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

    Highlighted Blogs

    Achieving Power Over Data with RS-485 Transceivers

    By Bryson Barney What if a single wire could carry both energy and information seamlessly—without either getting in the way? The future of connectivity...

     

    ​​Functional Safety: A Driver of “Shift Left”​

    By Richard Obrien The key to faster, safer product development is to start smart - not catch up hard. In this blog, we’ll explore how the "Shift Left...

    Latest Blogs

    • The 5 Advantages of Hardware Fault Tolerance
    • The Power Problem Inside Every AI Breakthrough: Part 1 of 3
    • Simplifying Stability with EVAL-KW4503Z: Part 1 of 3
    • Energy Transfer Considerations in Isolated SMPS: Part 2 of 4
    • Automating LTspice .NOISE Measurements with .STEP and .MEAS Directives: Part 2 of 3
    Read All Blogs

    ADI Blogs

    • EZ Spotlight
    • The Engineering Mind
  • ContentZone

    Visit ContentZone

    ContentZone

    Technical articles. Blogs. Videos. Your ADI content, all in one place.

    View ContentZone

    Featured Content

    Featured Content Title

    Blurb About Content

    View Content By Industry

    • Aerospace and Defense Systems
    • Automotive Solutions
    • Consumer Technology Solutions
    • Data Center Solutions
    • Energy Solutions
    • Healthcare Solutions
    • Industrial Automation Technology Solutions
    • Instrumentation and Measurement Solutions
    • Intelligent Building Solutions
    • Wireless Communication Solutions

    View Content By Technology

    • A2B Audio Bus
    • ADI OtoSense Predictive Maintenance Solutions
    • Dynamic Speaker Management
    • Gallium Nitride (GaN) Technology
    • Gigabit Multimedia Serial Link (GMSL)
    • Industrial Vision
    • Power Solutions
    • Precision Technology
    • RF
    • Sensor Interfaces
    • SmartMesh
EngineerZone
EngineerZone
SigmaDSP Processors & SigmaStudio Dev. Tool
  • Log In
  • User
  • Site
  • Search
OR
Ask a Question
SigmaDSP Processors & SigmaStudio Dev. Tool
  • Processors & DSP
SigmaDSP Processors & SigmaStudio Dev. Tool
Documents Thoughts on using index selectable filters...
  • Q&A
  • File Uploads
  • Members
  • Tags
  • Cancel
  • Documents
  • SigmaDSP YouTube Channel - Dave Thib
  • +AD193x: FAQ
  • +ADAU1401AEBZ: FAQ
  • +ADAU144x: FAQ
  • +ADAU1452: FAQ
  • +ADAU145x: FAQ
  • -ADAU1701: FAQ
    • ADAU1701 Input and Output Signal Routing
    • ADAU1701: ADC resistor values for higher sample rates
    • Implementing Safeload Writes on the ADAU1701
    • My 2IN4OUT Proto with SPDIF based on ADAU1701
    • Setting the PLL mode for the ADAU1701 at different sample rates
    • Thoughts on using index selectable filters...
    • Using hardware data capture (trap) registers with the DSP Readback cell (AD1940, ADAU1701)
  • +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
  • +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
  • New SigmaStudio 3.2.0 beta version available
  • SigmaStudio 3.3 Released
  • SigmaStudio 3.9.2 Beta Available for Download
  • SigmaStudio Rev 3.15.2 Bug Report for SPI EEPROM Write Speed

Thoughts on using index selectable filters...

I recently was working on an ADAU1701 project where I wanted to select from multiple possible filter banks. My first approach was to create multiple filters in the project, split the audio signal to go through all of the filters, and then select the desired output using a multiplexer. While this approach worked, it required a lot of program instructions. In fact, it was filling up the entire program memory!

Here's a simple example illustrating this approach:

Unfortunately, using branched filter banks will drastically increase the number of instructions executed in a program, even though only one filter bank is being used at any given time. Here's the reason why:

The ADAU1701 SigmaDSP is a steam-based processor. It has a deterministic program counter. The program counter always steps through from the beginning of the program to the end of of the program. This happens on every sample. When the SigmaStudio project is compiled, all of the algorithms in the project are converted into program instructions and are assigned a location in program memory. This happens regardless of whether the actual audio path for individual algorithms is being used at any given time.

This means that all algorithms will occupy space in program memory, and since the program counter is deterministic, every instruction will be executed on every frame of the program. As a result, in my example above, both filters will be executed every time the program loops, even though only one output path is being used. That's simply the nature of the SigmaDSP core architecture.

So, how can I get multiple filters in parallel, and only select one set of filters at a given time? The solution to this problem is to use index-selectable filters.

Because of the nature of the SigmaDSP architecture, it is wasteful to put multiple sets of filters in the project if only one path is going to be used at any given time. So, my first approach was not the best way of solving the problem. In this case, instead of creating multiple "instances" of the filters, it is better to create a single "instance", and to store multiple sets of filters in memory instead. This is usually much better from a resource perspective, since parameter memory is more abundant than program memory.

Here is an example of an algorithm in SigmaStudio that implements a single "instance" of a filter and allows users to store multiple sets of parameters for that filter: https://wiki.analog.com/resources/tools-software/sigmastudio/toolbox/filters/general2ndorderindexselectable

The red index input pin for this cell selects a single set of filter coefficients from the different options in memory. This way, only one filter is executed per audio sample, but multiple options for the filter coefficients are stored in memory.

If one filter is not enough, then there is another option in the SigmaStudio library that allows users to store entire banks of filters that can be recalled using an index. The IdxSelectable Indp. Multiple Band Filter is a great example:

https://wiki.analog.com/resources/tools-software/sigmastudio/toolbox/filters/idxselectableindpmultiplebandfilter

Here is an example implementing this approach:

This implements the same functionality as my original approach, but uses fewer program instructions!

If you want to learn more, here are some more resources...

  • Filter examples, including index filters: https://wiki.analog.com/resources/tools-software/sigmastudio/tutorials/filterexamples
  • EngineerZone thread showing how to select EQ presets with GPIOs:  https://ez.analog.com/thread/14552
  • Application note including an example of an index-selectable filter: https://www.analog.com/static/imported-files/application_notes/AN-951.pdf
Tags: Audio Signal Processors SigmaDSP Audio Processors adau1701
  • Share
  • History
  • More
  • Cancel
 
Related Content
  • RE: Wrap/return to zero index when index count is exceeded
    DaveThib
    Hello, There is a learning curve. Here is where the information is located: SigmaStudio and SigmaDSP Documentation [Analog Devices Wiki] You can always click on a block and then press F1 and it...
  • RE: Filter with external level, center frequency, and Q controls (GPIO)
    Yagami
    Hi Justin, Unfortunately, due to the complexity of calculating the 5 coefficients necessary for a general 2nd order IIR filter, it is very DSP-intensive to implement a filter where the level, boost/cut...
  • RE: How to control advanced processing parameters with GPIO?
    ADIApproved
    The best way to vary something like filter cutoffs in the SigmaDSP is to use chains of parallel filters and switch the signal path between them using an index generated from your hardware controls. The...
 
Related Content
  • RE: Wrap/return to zero index when index count is exceeded
    DaveThib
    Hello, There is a learning curve. Here is where the information is located: SigmaStudio and SigmaDSP Documentation [Analog Devices Wiki] You can always click on a block and then press F1 and it...
  • RE: Filter with external level, center frequency, and Q controls (GPIO)
    Yagami
    Hi Justin, Unfortunately, due to the complexity of calculating the 5 coefficients necessary for a general 2nd order IIR filter, it is very DSP-intensive to implement a filter where the level, boost/cut...
  • RE: How to control advanced processing parameters with GPIO?
    ADIApproved
    The best way to vary something like filter cutoffs in the SigmaDSP is to use chains of parallel filters and switch the signal path between them using an index generated from your hardware controls. The...
analog-devices logo

About Analog Devices

  • Who We Are
  • Careers
  • Newsroom
  • What We Do (Signals+)
  • Investor RelationsExternalLink
  • Quality & Reliability
  • Sales and Distribution
  • What's New on Analog.com
  • Contact Us

Find Help

  • Support
  • Resources
  • WikiExternalLink
  • Analog Dialogue
  • ADI Developer PortalExternalLink

myAnalog

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

Go to myAnalog
  • Instagram page
  • Twitter page
  • Linkedin page
  • Youtube page
  • Facebook
  • Legal and Risk
  • Accessibility
  • Privacy Policy
  • Privacy Settings
  • Cookie Settings

©2026 Analog Devices, Inc. All Rights Reserved

analog-devices

About Analog Devices

Down Up
  • Who We Are
  • Careers
  • Newsroom
  • What We Do (Signals+)
  • Investor RelationsExternalLink
  • Quality & Reliability
  • Sales and Distribution
  • What's New on Analog.com
  • Contact Us

Find Help

Down Up
  • Support
  • Resources
  • WikiExternalLink
  • Analog Dialogue
  • ADI Developer PortalExternalLink

myAnalog

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

Go to myAnalog
Instagram page Facebook Twitter page Linkedin page Youtube page
  • Legal and Risk
  • Accessibility
  • Privacy Policy
  • Privacy Settings
  • Cookie Settings

©2026 Analog Devices, Inc. All Rights Reserved