Post Go back to editing

214xx IIR Accelerator

Thread Summary

The user seeks a flexible method to switch biquad filters in and out of channels and TCBs in the IIR accelerator. The solution involves setting up TCBs ahead of time, using the accelerator in single channel mode with interrupts, and dynamically changing the chain pointer to manage channel and biquad configurations. The 'save state' feature can help maintain biquad state information when re-enabling the accelerator. The IIR accelerator supports up to 24 TCBs, and cascading TCBs is possible to apply more biquads to a specific channel.
AI Generated Content

Hi folks,

I have a bit of a conundrum trying to implement a few sets of cascaded biquads. I have tried out the IIR accelerator, using 4 audio input channels and 8 output channels and chaining the lot, which worked well. I want to make my system configurable though, so that I can switch biquads in and out of channels and channels in and out of the chain.

I have not yet tried switching biquads in and out of a specific TCB on the fly, but I am thinking this can be done by updating the coefficients buffer and the coefficient buffer length register CC/CL.

The tricky part, as I see it, is switching TCBs in and out of a chain. I suppose it could be possible to come up with an algorithm to determine what the next TCB chain pointer is based on an arbitrary configuration and update the chain pointer register of a TCB, but maybe I am missing a simpler solution. I was thinking, maybe I could configure 12 TCBs without chaining and trigger a one-shot for each channel, or bypass the accelerator for that channel if the filtering is disabled. With this approach, I'm not sure how easy/difficult this would be in terms of triggering 12 separate shots of IIR accelerator (if that's even possible?).

One other question; the IIR accelerator supports up to 24 channels. My understanding of this is that you can have up to 24 TCBs. Is it possible to cascade TCBs so that you could apply more than one TCB to a specific channel? The objective would be to increase the number of biquads on a specific channel.

Thanks

Brian

  • Hi Brian,

    I have some thoughts mostly along the similar lines you already mentioned. I think, you can try the following approach:

    1. Setup the TCBs for all the channels well ahead.

    2. Use the accelerator in single channel mode and configure it to generate interrupt after the processing is complete.

    3. Inside the ISR, you can be flexible as per your requirements for example:

         - If you want to process the next channel -> just change the chain pointer to the next channel TCB, disable and re-enable the accelerator.

         -If you want to process the same channel for further cascaded biquads, you can again change the chain pointer accordingly (assuming that the TCB for the next set of biquads is already setup).

        -If you want to bypass processing the accelerator for a particular channel, you can either choose to stop the processing or skip to the next channel.

    Since you are disabling and re-enabling the accelerator, you may want to use the "save state" feature of the IIR accelerator so that you can re-start the processing of a particular channel where you left last time without losing the biquad state information.

    Hope this helps. Please let me know if you have further questions.

    Thanks,

    Mitesh

  • This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

    Thank you,
    EZ Admin