How can I make an ADAU1701 crossover filter with dynamic uC control of frequency and filter type (BW12, BW18, BW24, BW66, BW48 and LR12, LR16, LR24, LR36 and LR48) but using the few instructions as possible?
Hi. I need your help.
I’m working on a project where one ADAU1701 is controlled by an 8 bits uC c8051F020 on I2C.
Everything is right. But…
I’m running almost out of instructions: 978 (out of 1024) and I need to create a crossover filter low and high (one for each of the four DAC’s outs), where the frequency and type of filter can be changed on real time by the uC.
I realize that for ADAU1701 crossover modules, I can change dynamically the frequency but not the filter type. Then: crossover module is not for my project.
I know the equations for all type of filters involved in crossover module. How can I make the crossover I’m needing by using the ADAU1701 available filters having into account the scarce instructions i have?
Thanks
Oscar
Audio Signal Processors
SigmaDSP Audio Processors
crossover
adau1701
Hi Oscar:
2nd order filter take either 5 or 9 instructions (single precisions / double precision). You can use 2 second order filters for each one of your channels. IF you have a 2 way system, that would mean you need ~40 instructions max (when using single precision). I so suggest you use single precision filters. This is very close to the number of instructions you have available.
Other optimizations might be possible on your signal flow however you would need to share it with ADI or contract a 3rd party to optimize it.
Regards
Miguel
Miguel. I know that LR 36 is 2 cascaded 3rd order butterworths. 3rd order butterworth is implemented by cascading a “HigherOrder” + 1st order
Can i make a “HigherOrder” using 2 second order filters?
Thanks
yes, you will need to factor the coefficients in 2nd order sections, Also be cautious of the fixed point nature of the DSP when distributing the gain between both 2nd order sections.
Please log in to reply.