Skip to main content

Designing a constant delay filter (2nd order example)

Short answer

Design: specify delay τ0, normalize, choose Bessel polynomial, denormalize. Example for τ0 = 1 ms yields T(s) = 3×10^6/(s^2+3000s+3×10^6); Sallen-Key: R1=R2=5 kΩ, C1=0.1333 μF, C2=0.1 μF.

What is a constant delay filter? How can you design a constant delay filter? Explain with example of second order filter.

Constant delay filter

A constant delay filter (Bessel-Thomson filter) is a low-pass filter whose group delay τ(ω)=−dθ/dω\tau(\omega) = -d\theta/d\omega is (nearly) constant over the passband, i.e. its phase is linear, θ(ω)≈−ωτ0\theta(\omega) \approx -\omega\tau_0. The ideal is T(s)=e−sτ0T(s) = e^{-s\tau_0}: every frequency is delayed by the same τ0\tau_0, so the output is an undistorted, delayed copy of the input. Since e−sτ0e^{-s\tau_0} is not rational, it is approximated by an all-pole function whose delay is maximally flat at ω=0\omega = 0.

Design procedure

  1. Specify the required delay τ0\tau_0 at DC and the allowed delay error (e.g. delay within 1% up to a frequency ω1\omega_1), plus any magnitude requirement.
  2. Normalize to τ0=1\tau_0 = 1 s: the normalized frequency is ωτ0\omega\tau_0.
  3. Choose the order nn from Bessel delay/magnitude curves so that the delay and loss at ω1τ0\omega_1\tau_0 are within limits.
  4. Take the Bessel polynomial Bn(s)B_n(s) (from the recursion Bn=(2n−1)Bn−1+s2Bn−2B_n = (2n-1)B_{n-1} + s^2B_{n-2}, or derived by the maximally-flat-delay method below): T(s)=Bn(0)/Bn(s)T(s) = B_n(0)/B_n(s).
  5. Denormalize with s→sτ0s \to s\tau_0.
  6. Realize the factors with active biquads (Sallen-Key, MFB) or a passive ladder, then impedance-scale to practical values.

Example: second-order filter

Take a second-order all-pole low-pass function normalized for a delay of 1 s at DC:

T(s)=b0s2+b1s+b0T(s) = \frac{b_0}{s^2 + b_1 s + b_0}

Phase and delay. With s=jωs = j\omega:

θ(ω)=−tan⁡−1b1ωb0−ω2,τ(ω)=−dθdω=b1(b0+ω2)(b0−ω2)2+b12ω2\theta(\omega) = -\tan^{-1}\frac{b_1\omega}{b_0 - \omega^2}, \qquad \tau(\omega) = -\frac{d\theta}{d\omega} = \frac{b_1(b_0 + \omega^2)}{(b_0-\omega^2)^2 + b_1^2\omega^2}

Expanding the denominator:

τ(ω)=b1b0+b1ω2b02+(b12−2b0)ω2+ω4\tau(\omega) = \frac{b_1 b_0 + b_1\omega^2}{b_0^2 + (b_1^2 - 2b_0)\omega^2 + \omega^4}

Conditions for maximally flat delay equal to 1. τ(ω)\tau(\omega) stays at 1 for as many powers of ω\omega as possible if the numerator matches the denominator term by term:

ω0:b1b0=b02  ⇒  b1=b0ω2:b1=b12−2b0  ⇒  b0=b02−2b0  ⇒  b0=3\begin{aligned} \omega^0:&\quad b_1 b_0 = b_0^2 \;\Rightarrow\; b_1 = b_0 \\ \omega^2:&\quad b_1 = b_1^2 - 2b_0 \;\Rightarrow\; b_0 = b_0^2 - 2b_0 \;\Rightarrow\; b_0 = 3 \end{aligned}

So b0=b1=3b_0 = b_1 = 3 and

T(s)=3s2+3s+3,τ(ω)=9+3ω29+3ω2+ω4T(s) = \frac{3}{s^2 + 3s + 3}, \qquad \tau(\omega) = \frac{9 + 3\omega^2}{9 + 3\omega^2 + \omega^4}

The delay is 11 s at ω=0\omega = 0 and deviates only by the ω4\omega^4 term, i.e. it is maximally flat. The poles are s=−1.5±j0.866s = -1.5 \pm j0.866 (ω0=3=1.732\omega_0 = \sqrt{3} = 1.732, Q=1/3=0.577Q = 1/\sqrt{3} = 0.577). The denominator s2+3s+3s^2+3s+3 is the second-order Bessel polynomial. For a delay of τ0\tau_0 seconds, replace ss by sτ0s\tau_0:

T(s)=3/τ02s2+(3/τ0)s+3/τ02T(s) = \frac{3/\tau_0^2}{s^2 + (3/\tau_0)s + 3/\tau_0^2}

Numerical example: design a second-order constant delay filter with τ0=1\tau_0 = 1 ms.

T(s)=3×106s2+3000s+3×106,ω0=3×106=1732.05 rad/s,Q=1732.053000=0.5774T(s) = \frac{3\times10^6}{s^2 + 3000s + 3\times10^6},\qquad \omega_0 = \sqrt{3\times10^6} = 1732.05\ \text{rad/s},\quad Q = \frac{1732.05}{3000} = 0.5774

Realize it with a unity-gain Sallen-Key low-pass section with R1=R2=RR_1 = R_2 = R, feedback capacitor C1C_1 and grounded capacitor C2C_2. For this circuit Q=12C1/C2Q = \frac{1}{2}\sqrt{C_1/C_2} and ω0=1/(RC1C2)\omega_0 = 1/(R\sqrt{C_1C_2}):

C1/C2=4Q2=4/3;choose C2=0.1 μF⇒C1=0.1333 μFR=1ω0C1C2=11732.05×1.1547×10−7=5 kΩ\begin{aligned} C_1/C_2 &= 4Q^2 = 4/3; \quad \text{choose } C_2 = 0.1\ \mu\text{F} \Rightarrow C_1 = 0.1333\ \mu\text{F} \\ R &= \frac{1}{\omega_0\sqrt{C_1C_2}} = \frac{1}{1732.05 \times 1.1547\times10^{-7}} = 5\ \text{k}\Omega \end{aligned}

Answer: R1=R2=5R_1 = R_2 = 5 kΩ, C1=0.1333 μC_1 = 0.1333\ \muF, C2=0.1 μC_2 = 0.1\ \muF, unity-gain buffer; delay ≈1\approx 1 ms over the passband.

✓ Answer checked by Claude Sonnet 5.5

All Filter Design chapter 2 questions →