VCVS filter calculation with finite GBW.

Many thanks to Christophe Basso to have showed me the factorisation technique which is the key of this work.

TODO: add some comparison with the existing stuff: lack of compensation equations for the simple case, compensation scheme from TI efficient but with additionnal components.

Introduction

Active operational amplifier filters, called VCVS in the jargon, are a convenient way to implement low frequency filtering, particularly when operational amplifiers are already used for amplification.

Design equations are readily available but often don’t take into account the needed correction for finite GBW of the operational amplifier.

Texas Instruments SBAA236 application note provides a compensation scheme using additional components, very efficient but overkill for lots of applications.

This page presents simple equations for analysis and synthesis of VCVS filters with finite GBW operational amplifiers.

Transfer function

Full expression

Replace R_1 and R_3 by equivalent circuit: V_\text{TH} = V_\text{IN} \cdot \frac{R_3}{R_1 + R_3}, R_\text{TH} = \frac{R_1 \cdot R_3}{R_1 + R_3}.

The voltage at point x, V_x, can be calculated using Millman theorem:

\begin{multline*} V_x = \frac{ \frac{V_\text{TH}}{R_\text{TH}}+\frac{V^-}{\frac{1}{C \cdot s}} + \frac{V_\text{out}}{\frac{1}{C \cdot s}} }{ \frac{1}{R_\text{TH}} + \frac{1}{\frac{1}{C \cdot s}}+\frac{1}{\frac{1}{C \cdot s}} } = \frac{ \frac{1}{R_\text{TH}} \cdot V_\text{TH} + C \cdot s \cdot V^- + C \cdot s \cdot V_\text{out} }{ \frac{1}{R_\text{TH}} + 2 \cdot C \cdot s } \end{multline*}

The V^- voltage can be calculated in the same way:

\begin{multline*} V^- = \frac{ \frac{V_x}{\frac{1}{C \cdot s}} + \frac{V_\text{out}}{R_2} }{ \frac{1}{\frac{1}{C \cdot s}} + \frac{1}{R_2} } = \frac{ C \cdot s \cdot V_x + \frac{1}{R_2} \cdot V_\text{out} }{ C \cdot s + \frac{1}{R_2} } = \frac{ R_2 \cdot C \cdot s \cdot V_x + V_\text{out} }{ 1 + R_2 \cdot C \cdot s } \end{multline*}

Combining both equations:

V^- = \frac{R_2 \cdot C \cdot s}{1 + R_2 \cdot C \cdot s} \cdot \left[ \frac{ \frac{1}{R_\text{TH}} \cdot V_\text{TH} + C \cdot s \cdot V^- + C \cdot s \cdot V_\text{out} }{ \frac{1}{R_\text{TH}} + 2 \cdot C \cdot s } \right] + \frac{1}{1 + R_2 \cdot C \cdot s} \cdot V_\text{out}

Multiplying both sides of the equation by \left[ 1 + R_2 \cdot C \cdot s \right] \cdot \left[ \frac{1}{R_\text{TH}} + 2 \cdot C \cdot s \right]:

\left[ 1 + R_2 \cdot C \cdot s \right] \cdot \left[ \frac{1}{R_\text{TH}} + 2 \cdot C \cdot s \right] \cdot V^- = R_2 \cdot C \cdot s \cdot \left[ \frac{1}{R_\text{TH}} \cdot V_\text{TH} + C \cdot s \cdot V^- + C \cdot s \cdot V_\text{out} \right] + \left[ \frac{1}{R_\text{TH}} + 2 \cdot C \cdot s \right] \cdot V_\text{out}

Multiplying by R_\text{TH} to outline the time constant units:

\left[ 1 + R_2 \cdot C \cdot s \right] \cdot \left[ 1 + 2 \cdot R_\text{TH} \cdot C \cdot s \right] \cdot V^- = R_2 \cdot C \cdot s \cdot \left[ V_\text{TH} + R_\text{TH} \cdot C \cdot s \cdot V^- + R_\text{TH} \cdot C \cdot s \cdot V_\text{out} \right] + \left[ 1 + 2 \cdot R_\text{TH} \cdot C \cdot s \right] \cdot V_\text{out}

Developping and regrouping terms according to their voltage:

\begin{align*} &\left[ 1 + \left( 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C \right) \cdot s + 2 \cdot R_\text{TH} \cdot R_2 \cdot C^2 \cdot s^2 \right] \cdot V^- \\ & \quad = R_2 \cdot C \cdot s \cdot V_\text{TH} + R_\text{TH} \cdot R_2 \cdot C^2 \cdot s^2 \cdot V^- \\ & \qquad + \left[ 1 + 2 \cdot R_\text{TH} \cdot C \cdot s + R_\text{TH} \cdot R_2 \cdot C^2 \cdot s^2 \right] \cdot V_\text{out} \end{align*}

Regrouping V- on the left side (the change is put in bold for clarity):

\begin{align*} &\left[ 1 + \left( 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C \right) \cdot s + \pmb{1} \cdot R_\text{TH} \cdot R_2 \cdot C^2 \cdot s^2 \right] \cdot V^- \\ & \quad = R_2 \cdot C \cdot s \cdot V_\text{TH} + \left[ 1 + 2 \cdot R_\text{TH} \cdot C \cdot s + R_\text{TH} \cdot R_2 \cdot C^2 \cdot s^2 \right] \cdot V_\text{out} \end{align*}

Plugging op-amp gain (don’t forget the sign!):

\begin{align*} & - \left[ 1 + \left( 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C \right) \cdot s + R_\text{TH} \cdot R_2 \cdot C^2 \cdot s^2 \right] \cdot \frac{V_\text{out}}{\omega_\text{BW} \cdot s} \\ & \quad = R_2 \cdot C \cdot s \cdot V_\text{TH} + \left[ 1 + 2 \cdot R_\text{TH} \cdot C \cdot s + R_\text{TH} \cdot R_2 \cdot C^2 \cdot s^2 \right] \cdot V_\text{out} \end{align*}

Outlining the polynomial of s:

\begin{align*} & - \left[ \frac{1}{\omega_\text{BW}} \cdot s + \frac{ 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C }{\omega_\text{BW}} \cdot s^2 + \frac{R_\text{TH} \cdot R_2 \cdot C^2}{\omega_\text{BW}} \cdot s^3 \right] \cdot V_\text{out} \\ & \qquad = R_2 \cdot C \cdot s \cdot V_\text{TH} + \left[ 1 + 2 \cdot R_\text{TH} \cdot C \cdot s + R_\text{TH} \cdot R_2 \cdot C^2 \cdot s^2 \right] \cdot V_\text{out} \end{align*}

Putting all the V_out on the left:

\begin{align*} & - \left[ 1 + \left( \frac{1}{\omega_\text{BW}} + 2 \cdot R_\text{TH} \cdot C \right) \cdot s + \left( \frac{ 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C }{\omega_\text{BW}} + R_\text{TH} \cdot R_2 \cdot C^2 \right) \cdot s^2 + \frac{R_\text{TH} \cdot R_2 \cdot C^2}{\omega_\text{BW}} \cdot s^3 \right] \cdot V_\text{out} \\ & \qquad = R_2 \cdot C \cdot s \cdot V_\text{TH} \end{align*}

From which the transfer function can be calculated:

\begin{align*} V_\text{out} = \frac{ - R_2 \cdot C \cdot s }{ 1 + \left( \frac{1}{\omega_\text{BW}} + 2 \cdot R_\text{TH} \cdot C \right) \cdot s + \left( \frac{ 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C }{\omega_\text{BW}} + R_\text{TH} \cdot R_2 \cdot C^2 \right) \cdot s^2 + \frac{R_\text{TH} \cdot R_2 \cdot C^2}{\omega_\text{BW}} \cdot s^3 } \cdot V_\text{TH} \end{align*}

Test expression with infinite GBW

When GBW infinite, the following expression reduces to:

\begin{align*} V_\text{out} = \frac{ - R_2 \cdot C \cdot s }{ 1 + 2 \cdot R_\text{TH} \cdot C \cdot s + R_\text{TH} \cdot R_2 \cdot C^2 \cdot s^2 } \cdot V_\text{TH} \end{align*}

For an ideal VCVS filter with infinite GBW opamps1:

\begin{align*} V_\text{out} = \frac{ \frac{A^{'}}{Q \cdot \omega_0} s }{ 1 + \frac{1}{Q \cdot \omega_0} \cdot s + \frac{1}{\omega_0^2} \cdot s^2 } \cdot V_\text{TH} \end{align*}

Note this gain is called A^{'} and not A because it does not include the \frac{V_\text{TH}}{V_\text{in}}.

\begin{align*} V_\text{out} = \frac{ \frac{A^{'}}{Q \cdot \omega_0} s }{ 1 + \frac{1}{Q \cdot \omega_0} \cdot s + \frac{1}{\omega_0^2} \cdot s^2 } \cdot V_\text{TH} = \frac{ - R_2 \cdot C \cdot s }{ 1 + 2 \cdot R_\text{TH} \cdot C \cdot s + R_\text{TH} \cdot R_2 \cdot C^2 \cdot s^2 } \cdot V_\text{TH} \end{align*} \begin{align*} \cases{ \frac{A^{'}}{Q \cdot \omega_0} = - R_2 \cdot C \\ \frac{1}{Q \cdot \omega_0} = 2 \cdot R_\text{TH} \cdot C \\ \frac{1}{\omega_0^2} = R_\text{TH} \cdot R_2 \cdot C^2 } \end{align*}

The … are equations that will be filled in a future release of this page.

\left\{ \begin{align*} & A^{'} = \frac{- R_2}{2 \cdot R_\text{TH}} \qquad A = \frac{R_3}{R_1+R_3} \cdot \frac{R_1+R_3}{R_1\cdot R_3} \cdot \frac{R_2}{2} = \frac{-R_2}{R_1} && \text{OK} \\ & Q = \frac{1}{2 \cdot R_\text{TH} \cdot C\cdot \omega_0} = ... = \pi \cdot f_0 \cdot R_C \cdot C && \text{OK} \\ & \omega_0 = ... \qquad f_0 = ... = \frac{1}{2 \cdot \pi \cdot C} \cdot \sqrt{\frac{R_1 + R_3}{R_1 \cdot R_2 \cdot R_3}} && \text{OK} \end{align*} \right.

Consistent with the equations for infinite GBW2.

Parameters for finite GBW

Since this VCVS has another pole due to the finite GBW of the opamps, the transfer function is as follows:

\begin{align*} V_\text{out} = \frac{ \frac{A^{'}}{Q \cdot \omega_0} s }{ \left[ 1 + \frac{1}{Q \cdot \omega_0} \cdot s + \frac{1}{\omega_0^2} \cdot s^2 \right] \cdot \left[ 1 + \frac{1}{\omega_p} \cdot s \right] } \cdot V_\text{TH} \end{align*}

Assuming the pole is far enough from the center frequency, its effect can be neglected, and the gain has still the same value:

\frac{A^{'}}{Q \cdot \omega_0} = - R_2 \cdot C; \qquad A^{'} = \frac{- R_2}{2 \cdot R_\text{TH}}

However, the denominator needs to be factorized before the other parameters can be expressed.

Factorisation

Seeked factorisation

Coefficients of denominator:

D(s) = 1 + b_1 \cdot s + b_2 \cdot s^2 + b_3 \cdot s^3

Seek factorisation as such, using time constants instead of angular frequencies to make calculations easier:

\begin{align*} D(s) &= \left( 1 + \frac{\tau_0}{Q} \cdot s + \tau_0^2 \cdot s^2 \right) \cdot \left( 1 + \tau_p \cdot s \right) \\ D(s) &= 1 + \left( \frac{\tau_0}{Q} + \tau_p \right) \cdot s + \left( \tau_0^2 + \frac{\tau_0 \cdot \tau_p}{Q} \right) \cdot s^2 + \tau_0^2 \cdot \tau_p \cdot s^3 \end{align*}

To allow solving, hypothesis \tau_0^2 \gg \frac{\tau_0 \cdot \tau_p}{Q}:

\cases{ \tau_0^2 \cdot \tau_p = b_3 \\ \tau_0^2 = b_2 \\ \frac{\tau_0}{Q} + \tau_p = b_1 } \cases{ \tau_p = \frac{b_3}{b_2} \\ \tau_0^2 = b_2 \\ \frac{\tau_0}{Q} = b_1 - \frac{b_3}{b_2} }

Anticipating a simplification to come, these equations can be rewritten as follows:

\cases{ \tau_p = \frac{b_3}{\tau_0^2} \\ \tau_0^2 = b_2 \\ \frac{\tau_0}{Q} = b_1 - \frac{b_3}{\tau_0^2} }

Applying to components values

Plugging components values:

D(s) = 1 + \left( 2 \cdot R_\text{TH} \cdot C + \frac{1}{\omega_\text{BW}} \right) \cdot s + \left( R_\text{TH} \cdot R_2 \cdot C^2 + \frac{ 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C }{\omega_\text{BW}} \right) \cdot s^2 + \frac{R_\text{TH} \cdot R_2 \cdot C^2}{\omega_\text{BW}} \cdot s^3

\cases{ \tau_p = \frac{R_\text{TH} \cdot R_2 \cdot C^2}{\omega_\text{BW} \cdot \tau_0^2} \\ \tau_0^2 = R_\text{TH} \cdot R_2 \cdot C^2 + \frac{ 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C }{\omega_\text{BW}} \\ \frac{\tau_0}{Q} = 2 \cdot R_\text{TH} \cdot C + \frac{1}{\omega_\text{BW}} - \frac{R_\text{TH} \cdot R_2 \cdot C^2}{\omega_\text{BW} \cdot \tau_0^2} }

\frac{1}{\omega_\text{BW}} - \frac{R_\text{TH} \cdot R_2 \cdot C^2}{\omega_\text{BW} \cdot \tau_0^2} = \frac{\tau_0^2 - R_\text{TH} \cdot R_2 \cdot C^2}{\omega_\text{BW} \cdot \tau_0^2} = \frac{2 \cdot R_\text{TH} \cdot C + R_2 \cdot C}{\omega_\text{BW}^2 \cdot \tau_0^2}

Leading to:

\cases{ \tau_p = \frac{R_\text{TH} \cdot R_2 \cdot C^2}{\omega_\text{BW} \cdot \tau_0^2} \\ \tau_0^2 = R_\text{TH} \cdot R_2 \cdot C^2 + \frac{ 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C }{\omega_\text{BW}} \\ \frac{\tau_0}{Q} = 2 \cdot R_\text{TH} \cdot C + \frac{2 \cdot R_\text{TH} \cdot C + R_2 \cdot C}{\omega_\text{BW}^2 \cdot \tau_0^2} }

Synthesis formulas

First-order approximation:

\cases{ \tau_0^2 = R_\text{TH} \cdot R_2 \cdot C^2 + \frac{ 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C }{\omega_\text{BW}} \\ \frac{\tau_0}{Q} \approx 2 \cdot R_\text{TH} \cdot C }

Next, second equation becomes:

R_\text{TH} \cdot C \approx \frac{\tau_0}{2 \cdot Q}

And first equation:

\begin{gather*} R_\text{TH} \cdot R_2 \cdot C^2 = \tau_0^2 - \frac{ 2 \cdot R_\text{TH} \cdot C + R_2 \cdot C }{\omega_\text{BW}} = \tau_0^2 - \frac{ 2 \cdot R_\text{TH} \cdot C }{\omega_\text{BW}} - \frac{ R_2 \cdot C }{\omega_\text{BW}} \\ \frac{\tau_0}{2 \cdot Q} \cdot R_2 \cdot C = \tau_0^2 - \frac{2}{\omega_\text{BW}} \cdot \frac{\tau_0}{2 \cdot Q} - \frac{ R_2 \cdot C }{\omega_\text{BW}} \\ \left[ \frac{\tau_0}{2 \cdot Q} + \frac{1}{\omega_\text{BW}} \right] \cdot R_2 \cdot C = \tau_0 \cdot \left[ 1 - \frac{1}{Q \cdot \omega_\text{BW} \cdot \tau_0} \right] \end{gather*}

Rewriting to highlight the infinite GBW value and the correction term:

\begin{gather*} \frac{\tau_0}{2 \cdot Q} \cdot \left[ 1 + \frac{2 \cdot Q}{\omega_\text{BW} \cdot \tau_0} \right] \cdot R_2 \cdot C = \tau_0 \cdot \left[ 1 - \frac{1}{Q \cdot \omega_\text{BW} \cdot \tau_0} \right] \\ R_2 \cdot C = \left. 2 \cdot Q \cdot \tau_0 \cdot \left[ 1 - \frac{1}{Q \cdot \omega_\text{BW} \cdot \tau_0} \right] \middle/ \left[ 1 + \frac{2 \cdot Q}{\omega_\text{BW} \cdot \tau_0} \right]\right. \end{gather*}

A previous version of this article presented a further first order approximation of this equation using the hypothesis \frac{2 \cdot Q}{\omega_\text{BW} \cdot \tau_0} \ll 1. This hypothesis is inaccurate in though cases, like the example to come using an LM324, and bring no additional value. Sorry for the inconvenience.

Gathering all pieces:

\cases{ R_2 \cdot C = \left. 2 \cdot Q \cdot \tau_0 \cdot \left[ 1 - \frac{1}{Q \cdot \omega_\text{BW} \cdot \tau_0} \right] \middle/ \left[ 1 + \frac{2 \cdot Q}{\omega_\text{BW} \cdot \tau_0} \right]\right. \\ R_\text{TH} \cdot C = \frac{\tau_0}{2 \cdot Q} }

\cases{ R_2 = \left. \frac{2 \cdot Q \cdot \tau_0}{C} \cdot \left[ 1 - \frac{1}{Q \cdot \omega_\text{BW} \cdot \tau_0} \right] \middle/ \left[ 1 + \frac{2 \cdot Q}{\omega_\text{BW} \cdot \tau_0} \right]\right. \\ R_\text{TH} = \frac{\tau_0}{2 \cdot Q \cdot C} }

Parasitic pole equation

One the components values are calculated, the parasitic pole frequency can be calculated as follows:

\begin{gather*} \tau_p = \frac{R_\text{TH} \cdot R_2 \cdot C^2}{\omega_\text{BW} \cdot \tau_0^2} \\ R_2 = \left. \frac{2 \cdot Q \cdot \tau_0}{C} \cdot \left[ 1 - \frac{1}{Q \cdot \omega_\text{BW} \cdot \tau_0} \right] \middle/ \left[ 1 + \frac{2 \cdot Q}{\omega_\text{BW} \cdot \tau_0} \right]\right. \\ \qquad = \left. \frac{1}{\pi \cdot \text{BW} \cdot C} \cdot \left[ 1 - \frac{\text{BW}}{\text{GBW}} \right] \middle/ \left[ 1 + \frac{2 f_0^2}{\text{BW} \cdot \text{GBW}} \right]\right. \\ R_\text{TH} = \frac{\tau_0}{2 \cdot Q \cdot C} = \frac{\text{BW}}{4 \cdot \pi \cdot f_0^2 \cdot C} \\ R_\text{TH} \cdot R_2 = \left. \frac{1}{4 \cdot \pi^2 \cdot f_0^2 \cdot C^2} \cdot \left[ 1 - \frac{\text{BW}}{\text{GBW}} \right] \middle/ \left[ 1 + \frac{2 f_0^2}{\text{BW} \cdot \text{GBW}} \right] \right. \\ \tau_p = \left. \frac{1}{\omega_\text{BW}} \cdot \left[ 1 - \frac{\text{BW}}{\text{GBW}} \right] \middle/ \left[ 1 + \frac{2 f_0^2}{\text{BW} \cdot \text{GBW}} \right] \right. \\ f_p = \left. \text{GBW} \cdot \left[ 1 + \frac{2 f_0^2}{\text{BW} \cdot \text{GBW}} \right] \middle/ \left[ 1 - \frac{\text{BW}}{\text{GBW}} \right] \right. \end{gather*}

Conditions for realisability

The previously done hypothesis allows to calculate the needed values of the components. However, they are not necessarily realisable, for instance when the equations give negative values. The conditions for realisability are as follows:

\cases{ R_2 = \left. \frac{2 \cdot Q \cdot \tau_0}{C} \cdot \left[ 1 - \frac{1}{Q \cdot \omega_\text{BW} \cdot \tau_0} \right] \middle/ \left[ 1 + \frac{2 \cdot Q}{\omega_\text{BW} \cdot \tau_0} \right]\right. \geq 0 \\ R_\text{TH} = \frac{\tau_0}{2 \cdot Q \cdot C} \geq 0 }

The second equation is always true. The first reduces to the following condition:

\begin{gather*} 1 - \frac{1}{Q \cdot \omega_\text{BW} \cdot \tau_0} \geq 0 \end{gather*}

Leading to this condition:

\omega_\text{BW} \geq \frac{Q}{\tau_0}

Which can be interpreted as the gain-bandwidth of the operational amplifier must be higher than the filter frequency multiplied by a factor depending of the quality factor Q.

Hypothesis verification

Factorosation hypothesis

Remind the hypothesis:

\tau_0^2 \gg \frac{\tau_0 \cdot \tau_p}{Q}

Equivalent to:

\frac{\tau_p}{Q \cdot \tau_0} \ll 1

It is difficult to have an exact expression for τ_p, but a bound allows to check the hypothesis:

\tau_p = \frac{R_\text{TH} \cdot R_2 \cdot C^2}{\tau_0^2 \cdot \omega_\text{BW}} = \frac{\tau_0^2 - \frac{2 \cdot R_\text{TH} \cdot C + R_2 \cdot C}{\omega_\text{BW}}}{\tau_0^2 \cdot \omega_\text{BW}} < \frac{\tau_0^2}{\tau_0^2 \cdot \omega_\text{BW}} = \frac{1}{\omega_\text{BW}}

\frac{\tau_p}{Q \cdot \tau_0} < \frac{1}{Q \cdot \omega_\text{BW} \cdot \tau_0}

So, a sufficient condition to satisfy the hypothesis is:

\frac{1}{Q \cdot \omega_\text{BW} \cdot \tau_0} \ll 1

This condition is similar to the realisability condition, albeit with some margin to take.

Circuit simplification hypothesis

Remind the hypothesis:

2 \cdot R_\text{TH} \cdot C \gg \frac{2 \cdot R_\text{TH} \cdot C + R_2 \cdot C}{\omega_\text{BW}^2 \cdot \tau_0^2}

Equivalent to:

\left( 1 + \frac{R_2}{R_\text{TH}} \right) \cdot \left(\frac{f_0}{\text{GBW}}\right)^2 \ll 1

Although a formal check should be done, this condition is likely be largely true in most cases due to the squarring of the small term.

\left(\frac{f_0}{\text{GBW}}\right)^2 \leq Q \cdot \left(\frac{f_0}{\text{GBW}}\right)

Example

In the project which gave me the opportunity to write this article, I simply used a 10 MHz GBW op-amp. However, to test GBW compensation equations, a lower GBW op-amp is a much better test. Indeed, it was this test which allows me to detect and fix a mistake in the previous version.

JLCPCB offers a reduced price on the PCBAs using a reduced list of components. Components from this list are listed below:

  • NE5532DR     output 2 V to Vcc - 2 V, not convenient for 5 V operation
  • TL072CDT     6 V min Vcc
  • LM393DR2G    not an op-amp but a comparator
  • OP07CDR     6 V min Vcc
  • LM358DR2G     0 V to Vcc - 2 V, half LM324
  • LM324DT     0 V to Vcc - 2 V

The LM324 is selected.

Different values of its GBW are present in the various datasheets, but we’ll stick to the most common value of 1.2 MHz.

The following example filter was designed for a 40 kHz center frequency and a Q of 4 (10 kHz bandwidth). Schematic and simulation results are shown below:

As usual, files can be downloaded on my github repository.

  1. https://electronics.stackexchange.com/questions/735869/cannot-find-the-derivation-for-gain-and-q-in-a-mfb-bandpass-filter-with-fixed-ga 

  2. https://www.changpuak.ch/electronics/downloads/sloa088.pdf