Sigma Prosessor
I meet difficulty about Sigma Studio,The Prossesor is ADAU1446 and the block Crossovre is used in our design,The question is when we select Butterworth 12 there are 20 Byte data,but when we select Butterworth 18 there are 32 Byte data and Butterworth 24 there are 40 Byte data like the graph .I want to know how to generate these data ,
look forward to hearing from you soon
Audio Signal Processors
adau1446
sigma
studio
SigmaDSP Audio Processors
crossover
Show More
Hi,
we have a SigmaDSP category for questions relating to SigmaDSP and Sigma studio. I have moved this discussion from the Software Modules, Starter Kits and Software Development Kits category to the SigmaDSP category. Please continue the discussion here, and post any future SigmaDSP/SigmaStudio questions in this category.
regards,
Craig.
Are you looking for information on how to generate the parameters that are written from SigmaStudio when you change the crossover settings? These parameters are just biquad filter coefficients. Each coefficient is written as a 32-bit word to the ADAU1446's parameter RAM. There is a different data length written for the different crossover types because that is changing the filter order. A 12 dB/octave Butterworth filter is implemented with 5 coefficients (5 coefficients * 4 bytes/word = 20 bytes total), while a 24 dB/octave Butterworth is implemented with 10 coefficients (10 * 4 = 40). These filter coefficients are just setting the low pass or high pass filters as you see in the crossover graph. You can use the crossover tool to directly generate these coefficients, or you can generate your own coefficients using SigmaStudio's filter table generator, found under the Tools menu.
Thanks very much for your reply,Now we want to use the MCU control DSP ADAU1446, so I want to know how to calculate the corresponding coefficient?
Are you intending to calculate these coefficients on the fly in your microcontroller? If so, the filter equations for all of the basic filter types is included in the SigmaStudio help file. If you want to calculate these coefficients yourself, you can use these equations. The other method is to calculate the filter coefficients that you will need in your design, and save these in a table in your uC memory. This method will likely allow you to use a cheaper uC, as it won't have to handle complicated processing like coefficient calculation at run-time.
At first,Thanks for your reply,As you say,I only find the 1st and 2nd order filter the equations in the help file,But the block Crossover include 2nd, 3rd, 4th, 6th, and 8th and have different number of coefficients. Is there equations for 2nd, 3rd, 4th, 6th, and 8th filter .
All of the filters are based on the basic 1st and 2nd order filters. To implement higher-order filters, these 1st/2nd order filters are just implemented in series. For example, to make a 4th order filter, SigmaStudio is just running two 2nd order filters with identical coefficients in series. This same idea is used to generate all filters with order higher than 2.
Oh! I see .how could i know the Linkwitz-Riley 12 /Linkwitz-Riley 24/Linkwitz-Riley 36/Linkwitz-Riley 48 Respectively is how many order?
Eagerly looking forward to your reply!
Now,when i design an 1st order filter ,I find a serious problem the value i get from the equation in the help file is defferent from the value which i get from the Sigma Studio,How could i solve the problem,Like the pictrue If possible, you can try!
Each increase of 1 in the filter's order increases the roll-off by 6 dB/octave. So, a 2nd order filter has 12 dB/octave roll off, a 3rd order is 18 dB/octave, etc.
Now,i find a new problem ,when i design a 1st order filter,the value of coefficient which I get from the equation in the help file is defferent from the value which i get from the Sigma Studio,How could i solve the problem,Like the pictrue shown, If possible, you can try!
Look forward to your reply,
Jeradl thank you very much!
Could i make friend with you,I 'm glad to meet you ! I come from china ,and you ?
Could you explain the details of what differences you are seeing between the coefficient values generated by SigmaStudio, and those you are calculating yourself? The equations in the SigmaStudio help file are the same that the tool uses to generate the coefficients that it writes to the hardware, so I don't expect that you should see a difference. It would be helpful if you could point to a specific example of where you see a difference.
For example,a 1st order filter,We set for 1000HZ frequency,gain of 0dB and as the lowpass filter,I got the coefficient are respectively 0.121918916702271 ,0, 0.878081083297729
In helping a document
The General 1st-Order block has two algorithms options.
Common variables:
ω0 = 2*pi*f0/Fs
gainLinear = 10^(gain/20)
Lowpass
Transfer Function
Coefficients
a1 = 2.7^-ω0
b0 = gainLinear * (1.0 - a1)
b1 = 0
f0=1000Hz;Fs=48000Hz;gain=0;
So w0=2*pi*1000/48000=0.130899693899574718269276;gainlinear=10^(0/20)=1;
a1=2.7^-w0=2.7^-0.130899693899574718269276=1.1388470067969598079945487283746;
a1=1/a1=0.87808107149750427306800276251186;
b0= gainLinear * (1.0 - 1/a1)=0.1219189285024957269319972374; b1=0;
In the actual implementation on the DSP, when the coefficients are stored in parameter RAM, a1 needs to be inverted. This is done in software, automatically, before the parameters are written to memory.
For example,a general 2nd order filter,we set for 1000Hz frequency, gain of 0dB,Q of 1.41, and as the lowpass filter,i got the coefficient are respectively EQ1940Single10B1=0.00408828258514404;
EQ1940Single11B1=0.00817668437957764;
EQ1940Single12B1=0.00408828258514404;
EQ1940Single11A1=1.8951700925827;
EQ1940Single12A1=-0.911523461341858;
But in helping a docment:
Lowpass
ω0 = 2*pi*f0/Fs
gainLinear = 10^(gain/20)
Transfer Function
Coefficients
alpha = sin(ω0)/(2*Q)
a0 = 1 + alpha
a1 = -2*cos(ω0)
a2 = 1 - alpha
b0 = (1 - cos(ω0)) * gainLinear / 2
b1 = 1 - cos(ω0) * gainLinear
b2 = (1 - cos(ω0)) * gainLinear / 2
For all of the above filters, the coefficients are divided by a0, normalizing them and making a0 = 1 so that only 5 coefficients must be stored. In the actual implementation on the DSP, when the coefficients are stored in parameter RAM, a1 and a2 need to be inverted. This is done automatically, in software, before the parameters are written to memory.
Among them
gain=0dB;fs=1000Hz;Fs=48000Hz; Q=1.41;
So w0=2*pi*1000/48000=0.130899693899574718269276; gainlinear=1;
alpha=sin(0.130899693899574718269276)/(2*1.41)=0.0008101520074285072310965239913;
a0=1+0.0008101520074285072310965239913=1.0008101520074285072310965239913;
a1=-2*cos(0.130899693899574718269276)=-1.9999947804650706869450798840089; 1/a1=-0.50000130488713778026095773346491;
a2=1-0.0008101520074285072310965239913=0.999189847992571492768903476009;1/a2=1.0008108088858750397659847761385;
b0=(1-cos(0.130899693899574718269276))/2=--0.0000013048837323282637300289978;
b1=2*b0=-0.000002609767464656527460057994;b2=b0;
Easily we could find the difference between the coefficient values generated by SigmaStudio, and those you calculate accoeding to the equation of helping document.
Egerly look forward to your reply.thanks very much!
Please log in to reply.