DSPRelated.com
Forums

Efficient digital interpolation filter

Started by LC_Poon 5 years ago5 replieslatest reply 5 years ago239 views

I came across this paper entitled "Design of Efficient Digital Interpolation Filters and Sigma-Delta Modulator for Audio DAC" where the author oversamples an input frequency, fsig = 1kHz with ratio L = 128 and update frequency, fsi = 64kHz. The interpolation filter specification is given by: passband ripple = 0.001dB for frequency <0.45*fsi and stopband attenuation = 174dB for frequency > 0.55*fsi.

For single-stage system, the Butterworth filter order is given by:

[S1_B_N, S1_B_Wn] = buttord(0.45/128, 0.55/128, 0.001, 174);

Matlab gives S1_B_N = 121 for the expression above.

For two-stage system, L1 = 2 and L2 = 64, I am using the equations below to get Butterworth filter order:

L1 = 2;

L2 = 64;

fp1 = 0.45/L1;

fs1 = 0.55/L1;

fp2 = 0.45/128;

fs2 = (L1-0.55)/128;

[S2_B_N1, S2_B_Wn1] = buttord(fp1, fs1, p_dB/2, s_dB);

[S2_B_N2, S2_B_Wn2] = buttord(fp2, fs2, p_dB/2, s_dB);

Matlab gives S2_B_N1 = 111 and S2_B_N2 = 21 as compared to author's result of S2_B_N1 = 77 and S2_B_N2 = 21. Please advise if I missed out sth,

[ - ]
Reply by kazAugust 6, 2019

frequency points might need to be doubled due to convention of matlab for frequency being normalised to Nyquist (not Fs)

[ - ]
Reply by LC_PoonAugust 6, 2019

I accidentally found out that buttord(0.45, 0.55, p_dB/2, s_dB) gives N1 = 77 for L1 = 2 and L2 = 64 but when I considered L1 = 16 and L2 = 8, the author's result for N1 = 120 and N2 = 7. I still do not understand the equation used to derive the filter order.

[ - ]
Reply by kazAugust 6, 2019

You didn't follow me???

L1 = 16;

L2 = 8;

fp1 = 0.45*2/L1;

fs1 = 0.55*2/L1;

fp2 = 0.45/(L1*L2);

fs2 = (L1-0.55)/(L1*L2);

[S2_B_N1, S2_B_Wn1] = buttord(fp1, fs1, .001, 174);

[S2_B_N2, S2_B_Wn2] = buttord(fp2, fs2, .001, 174);

[ - ]
Reply by LC_PoonAugust 6, 2019
Thanks for your codes, it works. BTW, why passband ripple not divided by 2?

[ - ]
Reply by Rick LyonsAugust 6, 2019

Hello LC_Poon.

You’re asking us to help explain why your computed numbers don’t agree with the computed numbers given in a paper that we cannot read. We don’t have a copy that ‘Efficient Digital Interpolation Filters’ paper!

I went on the IEEEXplore web site but was unable to download a copy of that paper (authored by Ameur and Loulou). So I’m not able to provide any help to you.

In any case, the numbers you quote seem very strange, very extreme, to me. Who needs a filter whose maximum passband ripple is one thousandth of a dB? What kind of system requires a filter whose stopband attenuation is 174 dB?

Also, I’ve never heard of anyone trying to implement a 77th-order IIR filter. Does anyone do that?