ΣSigmaStudio Ask AI Русский Log in

Using Two FIR Operations to the same signal. There is a way to save DM0 memory allocation?

SigmaDSP & SigmaStudio T.Thimotti Feb 16, 2021 00:00 6 replies Original on forum ↗
Subscribe
T.Thimotti Question
Feb 16, 2021 00:00

Hello,

Here goes the big picture:

I have Left and Right Input Signals.
Two IR Table.
Left and Right Out.

Right Out = Gain*(Right Signal with Table 1) + Gain*(Right Signal with Table 2)
Left Out = Gain*(Left Signal with Table 1) + Gain*(Left Signal with Table 2)

This way I waste DM0. There is a way to the FIR algorithm use the same sampled signal from the other?

I'm using ADAU1452, and I want dual FIR with 9600 samples.

Audio Signal Processors

adau1452

SigmaDSP Audio Processors

pastedimage1613477534388v1.png
pastedimage1613477534388v1.png
pastedimage1613477650919v2.png
pastedimage1613477650919v2.png
Ken.M Reply
Feb 16, 2021 00:00

Take a look at the "FIR Filter Pool" block (Filters > FIR > FIR Filter Pool). The purpose of this block is to reuse FIR filter coefficients to save memory. An input can be filters with any set of stored coefficients. This seems like exactly what you need.

T.Thimotti Reply
Feb 16, 2021 00:00

Using FIR Filter Pool I learn how to use the same signal to different Filters. But, the Filter Pool uses the double of memory for filter allocation. Why this happens?

And trying another topology:

I got DM0 full, there is a way to manage memory allocation of FIR Algorithm?
With properly memory management, this algorithm will fit my ADAU1452.

pastedimage1613508694461v1.png
pastedimage1613508694461v1.png
pastedimage1613508803485v2.png
pastedimage1613508803485v2.png
Ken.M Reply
Feb 16, 2021 00:00

Sorry. I wasn't clear. The filter pool has two modes. It can either optimize for MIPS, taking full advantage of SIMD operations, or it can optimize memory. Right click to choose the other option:

There is no way of placing either the regular FIR block or FIR filter pool in one memory bank or another because any FIR filter optimized for MIPS will use both DM0 and DM1 to take full advantage of the dual MAC architecture.

Ken

pastedimage1613509983421v1.png
pastedimage1613509983421v1.png
T.Thimotti Reply
Feb 16, 2021 00:00

Thank you.
Just one more thing that I didn't understand.
Why Pool Filter ocupe two times more memory than regular FIR?

1000 for Sampled Signal.
1000 for Table.

1000 for Sample Signal.
2000 for Table.

Why this happen? (the case above)

----------------------------------------------------------------------------------------------------------------------------

Ken.M said:
There is no way of placing either the regular FIR block or FIR filter pool in one memory bank or another because any FIR filter optimized for MIPS will use both DM0 and DM1 to take full advantage of the dual MAC architecture.

Answers like that is great for my learning process. Thank you.

pastedimage1613510951494v1.png
pastedimage1613510951494v1.png
pastedimage1613511068159v2.png
pastedimage1613511068159v2.png
Ken.M Reply
Feb 16, 2021 00:00

It's a little hard to explain, but it has to do with the way that memory is addressed by the core to keep the two MACs always fed with data/coefficients. Note that you only have that much overhead if you have a single input and single output, which defeats the purpose of that block. When you add more inputs and/or outputs, you'll start to see the savings,

T.Thimotti Reply
Feb 16, 2021 00:00

Thanks!

And I notice that:

The Fir do a auto management between Dm0 and Dm1 as the input increases.
Looks like have 3000 on Dm0 and 2000 on Dm1 of Sampled Signal.

pastedimage1613512117555v1.png
pastedimage1613512117555v1.png