Tool 02

Active Filter Design

Low-pass, high-pass, band-pass and band-stop. Enter a passband/stopband spec, pick a response and a topology, and get the order, the transfer function, real component values and a simulated Bode plot.

01

Specification

k = 0.2857

For a low-pass, fp is the passband edge below which the filter passes, and fs the stopband edge above it (fs > fp).

02

Order

n = 4
k=fpfs=1000035000=0.2857k = \dfrac{f_p}{f_s} = \dfrac{10000}{35000} = 0.2857
nlog ⁣[10Amin/10110Amax/101]2log(1/k)=3.6779n \geq \dfrac{\log\!\left[\dfrac{10^{A_{min}/10}-1}{10^{A_{max}/10}-1}\right]}{2\log(1/k)} = 3.6779
Show where this formula comes from

The order n is the smallest number of poles that satisfies both ends of the spec at once. The whole design is built on one magnitude formula (derived from scratch at the top of the Stages panel); for a low-pass:

H(jω)2=11+ε2(ωωp)2n,ε=10Amax/101=0.9976\left|H(j\omega)\right|^2 = \dfrac{1}{1 + \varepsilon^2 \left(\dfrac{\omega}{\omega_p}\right)^{2n}}, \qquad \varepsilon = \sqrt{10^{A_{max}/10} - 1} = 0.9976

At fp it loses exactly Amax dB by construction (that is how ε is defined). The only condition left is the stopband: at fs it must lose at least Amin dB, and that condition contains n. There the fraction ωs/ωp equals 1/k:

10log10 ⁣(1+ε2(1k)2n)Amin10\log_{10}\!\left(1 + \varepsilon^2 \left(\tfrac{1}{k}\right)^{2n}\right) \ge A_{min}

Undo the log, move ε^2 across, then take the log again to bring n down from the exponent; each step is reversible because everything is positive:

ε2(1k)2n10Amin/101  2nlog ⁣(1k)log ⁣[10Amin/101ε2]\varepsilon^2 \left(\tfrac{1}{k}\right)^{2n} \ge 10^{A_{min}/10} - 1 \ \Rightarrow\ 2n\,\log\!\left(\tfrac{1}{k}\right) \ge \log\!\left[\dfrac{10^{A_{min}/10} - 1}{\varepsilon^2}\right]

Dividing by 2log(1/k) and writing ε^2 out in terms of Amax gives the order formula, with this design's numbers:

nlog ⁣[10Amin/10110Amax/101]2log(1/k)=log ⁣[9999.000.9953]2log(3.5000)=4.00201.0881=3.6779  n=4n \ge \dfrac{\log\!\left[\dfrac{10^{A_{min}/10}-1}{10^{A_{max}/10}-1}\right]}{2\log(1/k)} = \dfrac{\log\!\left[\dfrac{9999.00}{0.9953}\right]}{2\log(3.5000)} = \dfrac{4.0020}{1.0881} = 3.6779 \ \Rightarrow\ n = 4

Rounding up is what buys the margin: with n a whole number the filter usually loses a bit more than Amin at fs, never less. The Bode plot panel checks both edges again with the rounded components.

2 second-order stages, cascaded. Each stage is built as its own unity-DC-gain block, so the product of the stages meets the spec with no extra gain stage needed.

03

Stages

ωc = 62.9k rad/s

Denormalized with s → s/ωc (low-pass; ωc = 2π·fp·ε^(-1/n) for Butterworth, 2π·fp for Chebyshev, derived below). Each row is one realizable second-order block:

H(s)=ωn2s2+ωnQs+ωn2H(s) = \dfrac{\omega_n^2}{s^2 + \frac{\omega_n}{Q}s + \omega_n^2}
Show where the response formula and the poles come from

Every filter here starts from the same question: what does "a low-pass of order n" look like as a formula? The ideal is a brick wall, gain 1 up to fp and 0 above it. No circuit made of n capacitors and inductors (or op-amp stages) can do that, so the design has to pick the best approximation with n poles. The spec only talks about |H| in dB, so it is the magnitude that gets designed, not the phase.

A circuit with n energy-storing parts has a transfer function H(s) whose denominator is a polynomial of degree n. Its magnitude squared on the frequency axis is H(jω) times its mirror image H(-jω), and in that product every odd power of ω cancels, so |H|^2 is always a ratio of polynomials in ω^2. For a low-pass with no zeros (all poles, no numerator terms) and a gain of exactly 1 at DC, the most general form has n unknown positive coefficients:

H(jω)2=11+a1ω2+a2ω4++anω2n\left|H(j\omega)\right|^2 = \dfrac{1}{1 + a_1\,\omega^2 + a_2\,\omega^4 + \cdots + a_n\,\omega^{2n}}

The a coefficients are the only freedom left, and the two classic responses are two different ways of spending it.

Butterworth (1930) spends it on flatness at DC: make the passband as flat as possible near ω = 0. Flat means that the derivatives of |H|^2 at ω = 0 are zero. Each coefficient set to zero kills two more derivatives, so choosing a_1 = a_2 = ... = a_(n-1) = 0 makes the first 2n-1 derivatives vanish, the most an n-th degree polynomial allows. That is the "maximally flat" response, and only the last coefficient survives:

H(jω)2=11+anω2n\left|H(j\omega)\right|^2 = \dfrac{1}{1 + a_n\,\omega^{2n}}

a_n only sets the frequency scale, and the spec sets it: the passband edge fp is by definition the frequency where the loss reaches Amax, i.e. where |H|^2 = 1/(1+ε^2). Writing a_n = ε^2/ωp^(2n) makes that true by construction, and gives the formula in its final form:

H(jω)2=11+ε2(ωωp)2n\left|H(j\omega)\right|^2 = \dfrac{1}{1 + \varepsilon^2 \left(\dfrac{\omega}{\omega_p}\right)^{2n}}

ε (epsilon) is the one number the passband spec turns into. At ω = ωp the bracket is 1, so the loss there is 10log(1+ε^2), and requiring that to equal Amax gives:

10log10 ⁣(1+ε2)=Amax  ε=10Amax/101=103/101=0.997610\log_{10}\!\left(1 + \varepsilon^2\right) = A_{max} \ \Rightarrow\ \varepsilon = \sqrt{10^{A_{max}/10} - 1} = \sqrt{10^{3/10} - 1} = 0.9976

Two sanity checks: at DC the bracket is 0 and the gain is exactly 1; far above ωp the ω^(2n) term dominates and the loss grows by 20n dB per decade, which is why a higher order gives a steeper wall.

A magnitude formula is not a circuit yet: a circuit is built from poles. Replacing ω by s/j turns |H(jω)|^2 back into H(s) times its mirror H(-s), and the j^(2n) becomes (-1)^n:

H(s)H(s)=11+ε2(sjωp)2n=11+(1)nε2(sωp)2nH(s)\,H(-s) = \dfrac{1}{1 + \varepsilon^2 \left(\dfrac{s}{j\omega_p}\right)^{2n}} = \dfrac{1}{1 + (-1)^n\,\varepsilon^2 \left(\dfrac{s}{\omega_p}\right)^{2n}}

Its 2n poles are the solutions of (s/ωp)^(2n) = (-1)^(n+1)/ε^2. Taking the 2n-th root of a number of size 1/ε^2 gives 2n solutions that all have the same size and angles spaced π/n apart: they sit on a circle of radius ω0, mirrored about both axes. Half of them have a negative real part (stable): those belong to H(s), the other half to H(-s). Measuring the angle θ from the imaginary axis, the stable ones are:

ω0=ωpε1/n,si=ω0(sinθi+jcosθi),θi=(2i+1)π2n,i=0,1,,n1\omega_0 = \omega_p\, \varepsilon^{-1/n}, \qquad s_i = \omega_0\left(-\sin\theta_i + j\cos\theta_i\right), \qquad \theta_i = \dfrac{(2i+1)\pi}{2n}, \quad i = 0, 1, \ldots, n-1

The radius ω0 is also the frequency where exactly 3 dB is lost (put ω = ω0 in the response: the bracket becomes ε^2 ε^(-2) = 1, so |H|^2 = 1/2). Only when Amax = 3.0103 dB is ε = 1 and ω0 = ωp; here ε = 0.9976, so the pole circle sits at 1.0006 times past fp. The stages below work in the normalized prototype, ω0 = 1, which is the "unit circle" they refer to; the real frequency scale is put back in by the denormalization step of each stage. Each pair of poles at ± θ_i becomes one second-order stage; for odd n the pole at θ = 90° (s = -1) has no partner and becomes the first-order stage.

Stagef0 = ωn/2πQ
110.0 kHz1.3066
210.0 kHz0.5412
Show the math for every stage

Stage 1

Every second-order stage realizes one pair of poles from the pole formula at the top of this panel, in the normalized prototype (frequencies in units of the cutoff rather than Hz). A pair of poles is the same thing as a second-degree denominator, so the stage has the form:

H(s)=1s2+as+bH(s) = \dfrac{1}{s^2 + as + b}

a and b are the two numbers this step has to find. Stage 1 takes the pole pair at the 1st angle of the formula:

θ=(2×0+1)π2×4=0.3927 rad=22.50°\theta = \dfrac{(2 \times 0 + 1)\pi}{2 \times 4} = 0.3927\ \text{rad} = 22.50°

σ (sigma) and ω (omega) are the pole's real and imaginary parts, the point σ + jω in the s-plane. Its distance from the imaginary axis, σ, is what damps the stage; ω is roughly where its resonance sits. On the Butterworth unit circle:

σ=sin(θ)=0.3827,ω=cos(θ)=0.9239\sigma = -\sin(\theta) = -0.3827, \qquad \omega = \cos(\theta) = 0.9239

A pole never comes alone: σ + jω always pairs with its mirror image σ - jω (a real circuit cannot have just one), and multiplying out (s - pole)(s - mirror) gives exactly the s^2 + as + b this stage is trying to build:

(sσjω)(sσ+jω)=s22σs+(σ2+ω2)(s-\sigma-j\omega)(s-\sigma+j\omega) = s^2 - 2\sigma\, s + (\sigma^2+\omega^2)
a=2σ=0.7654a = -2\sigma = 0.7654
b=σ2+ω2=sin2θ+cos2θ=1b = \sigma^2 + \omega^2 = \sin^2\theta + \cos^2\theta = 1

b is the squared distance of the pole from the origin, and every Butterworth pole sits on the unit circle, so b is exactly 1 for every stage of every order; only a changes from stage to stage.

Denormalizing puts the real frequency scale back in: replacing s by s/ωc stretches the prototype so that its cutoff of 1 rad/s lands at ωc. Multiplying top and bottom by ωc^2 gives a denominator in the standard second-order form, from which the two numbers a circuit stage is built around, the corner frequency ωn and the quality factor Q, are read off by matching coefficients. (The constant on top is dropped: every stage here is built with unity gain in its passband, so only the denominator matters.)

1(sωc)2+a(sωc)+b=ωc2s2+aωcs+bωc2ωn2s2+ωnQs+ωn2\dfrac{1}{\left(\frac{s}{\omega_c}\right)^2 + a\left(\frac{s}{\omega_c}\right) + b} = \dfrac{\omega_c^2}{s^2 + a\,\omega_c\, s + b\,\omega_c^2} \quad\longleftrightarrow\quad \dfrac{\omega_n^2}{s^2 + \frac{\omega_n}{Q}\, s + \omega_n^2}
ωn2=bωc2  ωn=ωcb,ωnQ=aωc  Q=ba\omega_n^2 = b\,\omega_c^2 \ \Rightarrow\ \omega_n = \omega_c\sqrt{b}, \qquad \dfrac{\omega_n}{Q} = a\,\omega_c \ \Rightarrow\ Q = \dfrac{\sqrt{b}}{a}

For a Butterworth response the pole circle derived at the top of this panel has radius ω0 = ωp ε^(-1/n), not ωp itself (they only coincide for Amax = 3.0103 dB). That radius is what the normalized prototype gets scaled by, so this is the step where Amax reaches the component values; for a smaller Amax the poles move outward:

ωc=ω0=2πfpε1/n=2π×10000×0.99761/4=62831.85×1.0006=62869.16 rad/s  (f3dB=10.0kHz)\omega_c = \omega_0 = 2\pi f_p \, \varepsilon^{-1/n} = 2\pi \times 10000 \times 0.9976^{-1/4} = 62831.85 \times 1.0006 = 62869.16\ \text{rad/s}\ \ (f_{3\,dB} = 10.0 kHz)
ωn=ωcb=62869.16×1.0000=62869.16 rad/s  (f0=10.0kHz)\omega_n = \omega_c \sqrt{b} = 62869.16 \times \sqrt{1.0000} = 62869.16\ \text{rad/s}\ \ (f_0 = 10.0 kHz)
Q=ba=1.00000.7654=1.3066Q = \dfrac{\sqrt{b}}{a} = \dfrac{\sqrt{1.0000}}{0.7654} = 1.3066

Stage 2

Every second-order stage realizes one pair of poles from the pole formula at the top of this panel, in the normalized prototype (frequencies in units of the cutoff rather than Hz). A pair of poles is the same thing as a second-degree denominator, so the stage has the form:

H(s)=1s2+as+bH(s) = \dfrac{1}{s^2 + as + b}

a and b are the two numbers this step has to find. Stage 2 takes the pole pair at the 2nd angle of the formula:

θ=(2×1+1)π2×4=1.1781 rad=67.50°\theta = \dfrac{(2 \times 1 + 1)\pi}{2 \times 4} = 1.1781\ \text{rad} = 67.50°

σ (sigma) and ω (omega) are the pole's real and imaginary parts, the point σ + jω in the s-plane. Its distance from the imaginary axis, σ, is what damps the stage; ω is roughly where its resonance sits. On the Butterworth unit circle:

σ=sin(θ)=0.9239,ω=cos(θ)=0.3827\sigma = -\sin(\theta) = -0.9239, \qquad \omega = \cos(\theta) = 0.3827

A pole never comes alone: σ + jω always pairs with its mirror image σ - jω (a real circuit cannot have just one), and multiplying out (s - pole)(s - mirror) gives exactly the s^2 + as + b this stage is trying to build:

(sσjω)(sσ+jω)=s22σs+(σ2+ω2)(s-\sigma-j\omega)(s-\sigma+j\omega) = s^2 - 2\sigma\, s + (\sigma^2+\omega^2)
a=2σ=1.8478a = -2\sigma = 1.8478
b=σ2+ω2=sin2θ+cos2θ=1b = \sigma^2 + \omega^2 = \sin^2\theta + \cos^2\theta = 1

b is the squared distance of the pole from the origin, and every Butterworth pole sits on the unit circle, so b is exactly 1 for every stage of every order; only a changes from stage to stage.

Denormalizing puts the real frequency scale back in: replacing s by s/ωc stretches the prototype so that its cutoff of 1 rad/s lands at ωc. Multiplying top and bottom by ωc^2 gives a denominator in the standard second-order form, from which the two numbers a circuit stage is built around, the corner frequency ωn and the quality factor Q, are read off by matching coefficients. (The constant on top is dropped: every stage here is built with unity gain in its passband, so only the denominator matters.)

1(sωc)2+a(sωc)+b=ωc2s2+aωcs+bωc2ωn2s2+ωnQs+ωn2\dfrac{1}{\left(\frac{s}{\omega_c}\right)^2 + a\left(\frac{s}{\omega_c}\right) + b} = \dfrac{\omega_c^2}{s^2 + a\,\omega_c\, s + b\,\omega_c^2} \quad\longleftrightarrow\quad \dfrac{\omega_n^2}{s^2 + \frac{\omega_n}{Q}\, s + \omega_n^2}
ωn2=bωc2  ωn=ωcb,ωnQ=aωc  Q=ba\omega_n^2 = b\,\omega_c^2 \ \Rightarrow\ \omega_n = \omega_c\sqrt{b}, \qquad \dfrac{\omega_n}{Q} = a\,\omega_c \ \Rightarrow\ Q = \dfrac{\sqrt{b}}{a}

For a Butterworth response the pole circle derived at the top of this panel has radius ω0 = ωp ε^(-1/n), not ωp itself (they only coincide for Amax = 3.0103 dB). That radius is what the normalized prototype gets scaled by, so this is the step where Amax reaches the component values; for a smaller Amax the poles move outward:

ωc=ω0=2πfpε1/n=2π×10000×0.99761/4=62831.85×1.0006=62869.16 rad/s  (f3dB=10.0kHz)\omega_c = \omega_0 = 2\pi f_p \, \varepsilon^{-1/n} = 2\pi \times 10000 \times 0.9976^{-1/4} = 62831.85 \times 1.0006 = 62869.16\ \text{rad/s}\ \ (f_{3\,dB} = 10.0 kHz)
ωn=ωcb=62869.16×1.0000=62869.16 rad/s  (f0=10.0kHz)\omega_n = \omega_c \sqrt{b} = 62869.16 \times \sqrt{1.0000} = 62869.16\ \text{rad/s}\ \ (f_0 = 10.0 kHz)
Q=ba=1.00001.8478=0.5412Q = \dfrac{\sqrt{b}}{a} = \dfrac{\sqrt{1.0000}}{1.8478} = 0.5412
04

Components

multiple feedback

Stage 1

ComponentValue
R110.0 kΩ
R28.20 kΩ
R310.0 kΩ
C16.80 nF
C2470 pF
f0 actual9.83 kHz (-1.75%)
Q actual1.3047 (-0.14%)

1% error on any one component moves Q by roughly 0.80% (root-sum-square across all of them).

VinVoutR1 10.0 kΩR2 8.20 kΩC1 6.80 nFR3 10.0 kΩC2 470 pF

Pick different C1 and C2 values if the ones above do not match what is in stock; the resistors above are recalculated to fit.

Show the math for this stage's components

The MFB (multiple-feedback) low-pass has one internal node, call it S: R1 from the input to S, C1 from S to ground, R2 from S to the op-amp's inverting input, R3 from the output back to S, and C2 from the inverting input to the output. The non-inverting input is grounded, so with negative feedback the inverting input is a virtual ground (0 V, no current into it). Two current balances (KCL) describe the whole circuit, one at S and one at the inverting input:

at S:VinVSR1=sC1VS+VSR2+VSVoutR3,at the (-) input:VSR2=sC2Vout\text{at S:}\quad \dfrac{V_{in} - V_S}{R_1} = sC_1 V_S + \dfrac{V_S}{R_2} + \dfrac{V_S - V_{out}}{R_3}, \qquad \text{at the (-) input:}\quad \dfrac{V_S}{R_2} = -sC_2\, V_{out}

The second equation gives V_S in terms of V_out; substituting it into the first and collecting powers of s gives the transfer function, already in the s^2 + as + b shape of the Stages panel:

H(s)=cs2+as+b,a=1C1 ⁣(1R1+1R2+1R3),b=1R2R3C1C2,c=1R1R2C1C2H(s) = \dfrac{c}{s^2 + as + b},\quad a = \dfrac{1}{C_1}\!\left(\dfrac{1}{R_1}+\dfrac{1}{R_2}+\dfrac{1}{R_3}\right),\quad b = \dfrac{1}{R_2 R_3 C_1 C_2},\quad c = -\dfrac{1}{R_1 R_2 C_1 C_2}

So a and b play the same role as the a and b already found for this stage, just written in terms of R1, R2, R3, C1 and C2 instead of pole positions. This stage's target is f0 = 10.0 kHz (ωn = 62869.16 rad/s), Q = 1.3066; matching a and b to that target is what picks the component values:

a=ωnQ=62869.161.3066=48117.97a = \dfrac{\omega_n}{Q} = \dfrac{62869.16}{1.3066} = 48117.97
b=ωn2=62869.162=3.9525×109b = \omega_n^2 = 62869.16^2 = 3.9525 \times 10^{9}

Five parts, two equations: three choices are free. Choosing R1 = R3 forces the DC gain c/b to exactly -1 (the stage inverts, which does not matter for a low-pass magnitude), and picking C1 and C2 leaves two equations in two unknowns, R1 and R2. Writing x = 1/R1 = 1/R3 and y = 1/R2, the a equation says 2x + y = aC1 and the b equation says xy = bC1C2; eliminating y gives one quadratic in x:

2x2(aC1)x+bC1C2=02x^2 - (aC_1)\,x + bC_1C_2 = 0

A quadratic only has a real solution when its discriminant is positive, which here means C1/C2 >= 8Q^2. This tool searches a preferred capacitor series for a pair that clears that bar and lands both resistors in a sane 200 ohm to 2 megohm range:

C1=6.80nF,  C2=470pF  (ratio 14.5:1, needs8Q2=13.7:1)C_1 = 6.80 nF,\ \ C_2 = 470 pF\ \ \left(\text{ratio } 14.5\text{:1, needs} \geq 8Q^2 = 13.7\text{:1}\right)
Δ=(aC1)28bC1C2=6.0030×109\Delta = (aC_1)^2 - 8bC_1C_2 = 6.0030 \times 10^{-9}
x=aC1+Δ4=1.0117×104    R1=R3=1x=9.88kΩx = \dfrac{aC_1 + \sqrt{\Delta}}{4} = 1.0117 \times 10^{-4}\ \ \Rightarrow\ \ R_1 = R_3 = \dfrac{1}{x} = 9.88 kΩ
R2=1y=1aC12x=8.01kΩR_2 = \dfrac{1}{y} = \dfrac{1}{aC_1 - 2x} = 8.01 kΩ

Real resistors only come in standard values, so R1 and R2 get rounded to the nearest E24 value: 10.0 kΩ and 8.20 kΩ. Plugging those rounded values back into a and b (not the target ones) gives what this stage will actually do, which is what the "actual" row above and the Bode plot further down are built from:

f0=9.83kHz,Q=1.3047f_0' = 9.83 kHz,\quad Q' = 1.3047

Stage 2

ComponentValue
R16.80 kΩ
R211.0 kΩ
R36.80 kΩ
C13.30 nF
C21.00 nF
f0 actual10.1 kHz (+1.24%)
Q actual0.5455 (+0.80%)

1% error on any one component moves Q by roughly 0.85% (root-sum-square across all of them).

VinVoutR1 6.80 kΩR2 11.0 kΩC1 3.30 nFR3 6.80 kΩC2 1.00 nF

Pick different C1 and C2 values if the ones above do not match what is in stock; the resistors above are recalculated to fit.

Show the math for this stage's components

The MFB (multiple-feedback) low-pass has one internal node, call it S: R1 from the input to S, C1 from S to ground, R2 from S to the op-amp's inverting input, R3 from the output back to S, and C2 from the inverting input to the output. The non-inverting input is grounded, so with negative feedback the inverting input is a virtual ground (0 V, no current into it). Two current balances (KCL) describe the whole circuit, one at S and one at the inverting input:

at S:VinVSR1=sC1VS+VSR2+VSVoutR3,at the (-) input:VSR2=sC2Vout\text{at S:}\quad \dfrac{V_{in} - V_S}{R_1} = sC_1 V_S + \dfrac{V_S}{R_2} + \dfrac{V_S - V_{out}}{R_3}, \qquad \text{at the (-) input:}\quad \dfrac{V_S}{R_2} = -sC_2\, V_{out}

The second equation gives V_S in terms of V_out; substituting it into the first and collecting powers of s gives the transfer function, already in the s^2 + as + b shape of the Stages panel:

H(s)=cs2+as+b,a=1C1 ⁣(1R1+1R2+1R3),b=1R2R3C1C2,c=1R1R2C1C2H(s) = \dfrac{c}{s^2 + as + b},\quad a = \dfrac{1}{C_1}\!\left(\dfrac{1}{R_1}+\dfrac{1}{R_2}+\dfrac{1}{R_3}\right),\quad b = \dfrac{1}{R_2 R_3 C_1 C_2},\quad c = -\dfrac{1}{R_1 R_2 C_1 C_2}

So a and b play the same role as the a and b already found for this stage, just written in terms of R1, R2, R3, C1 and C2 instead of pole positions. This stage's target is f0 = 10.0 kHz (ωn = 62869.16 rad/s), Q = 0.5412; matching a and b to that target is what picks the component values:

a=ωnQ=62869.160.5412=116167.06a = \dfrac{\omega_n}{Q} = \dfrac{62869.16}{0.5412} = 116167.06
b=ωn2=62869.162=3.9525×109b = \omega_n^2 = 62869.16^2 = 3.9525 \times 10^{9}

Five parts, two equations: three choices are free. Choosing R1 = R3 forces the DC gain c/b to exactly -1 (the stage inverts, which does not matter for a low-pass magnitude), and picking C1 and C2 leaves two equations in two unknowns, R1 and R2. Writing x = 1/R1 = 1/R3 and y = 1/R2, the a equation says 2x + y = aC1 and the b equation says xy = bC1C2; eliminating y gives one quadratic in x:

2x2(aC1)x+bC1C2=02x^2 - (aC_1)\,x + bC_1C_2 = 0

A quadratic only has a real solution when its discriminant is positive, which here means C1/C2 >= 8Q^2. This tool searches a preferred capacitor series for a pair that clears that bar and lands both resistors in a sane 200 ohm to 2 megohm range:

C1=3.30nF,  C2=1.00nF  (ratio 3.3:1, needs8Q2=2.3:1)C_1 = 3.30 nF,\ \ C_2 = 1.00 nF\ \ \left(\text{ratio } 3.3\text{:1, needs} \geq 8Q^2 = 2.3\text{:1}\right)
Δ=(aC1)28bC1C2=4.2611×108\Delta = (aC_1)^2 - 8bC_1C_2 = 4.2611 \times 10^{-8}
x=aC1+Δ4=1.4744×104    R1=R3=1x=6.78kΩx = \dfrac{aC_1 + \sqrt{\Delta}}{4} = 1.4744 \times 10^{-4}\ \ \Rightarrow\ \ R_1 = R_3 = \dfrac{1}{x} = 6.78 kΩ
R2=1y=1aC12x=11.3kΩR_2 = \dfrac{1}{y} = \dfrac{1}{aC_1 - 2x} = 11.3 kΩ

Real resistors only come in standard values, so R1 and R2 get rounded to the nearest E24 value: 6.80 kΩ and 11.0 kΩ. Plugging those rounded values back into a and b (not the target ones) gives what this stage will actually do, which is what the "actual" row above and the Bode plot further down are built from:

f0=10.1kHz,Q=0.5455f_0' = 10.1 kHz,\quad Q' = 0.5455
05

Bode plot

43.6 dB at fs
simulated response (rounded components) Amax / Amin / fp / fs targets

Meets the spec: 43.6 dB of attenuation at fs, at least 40 dB required.

Passband edge: 3.00 dB at fp, at most 3 dB allowed.

06

Download

A standalone JavaScript file with this exact design: the same order, pole-placement, denormalization and component-search code as this page, parameterized at the top so it can be edited and rerun with node filter-design.js. It also prints the same report shown above, plus notes on simulating, building and testing the result.

07

Next steps

This tool only gets to a paper design. Before trusting it on a bench:

  1. Simulate before you build. Every number above comes from an ideal op-amp: infinite gain-bandwidth, no slew rate limit. Drop the design into LTSpice (or any SPICE simulator) with the real op-amp model you plan to use (e.g. a TL082 .subckt) and rerun an AC sweep. Check that the model's gain-bandwidth is at least 10-20x your highest stage's f0 times that stage's gain - below that, the real op-amp starts rolling off before your filter does, and the passband/stopband numbers stop being accurate.
  2. Build and test one stage at a time. Confirm each stage's measured f0 and Q against this design's actual values before wiring the next stage on, instead of assembling the whole cascade and hoping.
  3. Match impedances between stages. The output impedance of one stage should stay well below the input impedance of the next (Zout << Zin), otherwise the second stage loads the first and both f0 and Q drift from what was computed. This matters most between the last filter stage and whatever it feeds.
  4. Measure a real Bode plot. Compare it to the simulated response above: a handful of points swept from fp/10 to fs*10 with a function generator and a scope (or an audio analyzer) is enough to catch a wiring mistake or a component that is the wrong value.
  5. If the measured response drifts, check sensitivity first. The sensitivity numbers above say how much a single component being off by 1% moves Q - that is usually the first place to look before assuming the design itself is wrong.