Bandwidth design considerations#

In this section, we will study the dynamic behavior of negative feedback amplifiers and see the way in which the dynamic behavior of the controller contributes to that of the feedback amplifier. To do so, the negative feedback amplifier will be modeled as a linear time-invariant dynamic system.

With the aid of the asymptotic gain model, the source-to-load transfer of a negative feedback amplifier can be written as

(138)#\[A_{f}(s)=A_{f\infty}(s)S(s), \label{eq-source-load-laplace}\]

in which \(s\) is the Laplace variable.

With proper selection of the loop gain reference variable, the asymptotic gain \(A_{f\infty}(s)\) equals the ideal gain of the amplifier. During the conceptual design of the amplifier, any desired filter characteristic can be given to the ideal gain. This is done by designing feedback networks that establish the required dynamic behavior. Hence, at first glance, it seems difficult to give a definition of the bandwidth of a negative feedback amplifier, because it can have many intended filter characteristics. However, with the aid of the servo function \(S(s),\) we are able to decouple the desired filter characteristics from bandwidth limitations caused by controller imperfections. These limitations are described by the servo function:

  1. A high loop gain over the frequency range of interest results in a servo function whose magnitude approaches unity at these frequencies.

  2. A lack of loop gain at high frequencies and/or at low frequencies manifests itself in a high-frequency and/or low-frequency roll-off of the servo function.

Hence, the bandwidth of an approximate unity-gain servo function can be used as a figure of merit for the dynamic performance of a negative feedback amplifier. A servo function with a large bandwidth implies that the transfer of the negative feedback amplifier approximates its ideal transfer over a large frequency range.

Midband frequency range and bandwidth#

If we want to achieve a small error over the frequency range of interest, we need a large loop gain at these frequencies. The frequency range over which the loop gain is much larger than unity will be referred to as the midband frequency range. The loop gain at these frequencies will be referred to as the midband loop gain \(L_{MB}\). In this frequency range, the midband inaccuracy equals \(\delta_{MB}\cong\frac{1}{L_{MB}}\); this follows from ((133)). Outside the midband frequency range, the error with respect to the asymptotic gain increases due to a lack of loop gain: \(\left\vert L(j\omega)\right\vert <1\), and the controller is no longer capable of reducing errors. We will define the bandwidth of a negative feedback amplifier as follows:

Definition

The bandwidth of the negative feedback amplifier is defined as the distance between the lowest frequency \(\omega_{\ell}\) and the highest frequency \(\omega_{h}\) at which the servo function drops -3dB below its midband frequency value. Otherwise, the bandwidth of a negative feedback amplifier is the -3dB bandwidth of the servo function.

With this definition, we have decoupled the intended filter characteristic of the amplifier from the bandwidth limitation caused by controller limitations. If \(\left\vert L(j\omega)\right\vert \gg1\), the bandwidth of a negative feedback amplifier defines the frequency range over which the gain of the feedback amplifier approaches its ideal gain.

In cases in which \(L(s)\) has no zeros, the midband frequency loop gain \(L_{MB}\) equals the \(DC\) value of the loop gain \(L_{DC}\), and the servo function \(F_{s}(s)\) has a low-pass filter characteristic. We will first study the design considerations for this case and later study situations in which there are zeros in the loop gain.

All-pole loop gain functions#

For all-pole loop gain functions that have no poles at \(s=0\), \(L(s)\) can be expressed in its DC value \(L_{DC}\) and its poles. A loop gain function with \(n\) poles \(p_{i}\) can then be written as

\[L(s)=\frac{L_{DC}}{\prod\limits_{i=1}^{n}\left( 1-\frac{s}{p_{i}}\right) }.\]

With the aid of ((108)), the servo function can then be obtained as

(139)#\[S(s)=\frac{-L_{DC}}{\prod\limits_{i=1}^{n}\left( 1-\frac{s}{p_{i}}\right) -L_{DC}}. \label{eq-error-laplace}\]

We will write this expression as the product of a DC term and a unity-gain dynamic transfer:

(140)#\[S(s)=\frac{-L_{DC}}{1-L_{DC}}\frac{1}{1+...+\left( -1\right) ^{n}\frac{s^{n}}{\left( 1-L_{DC}\right) \prod_{i=1}^{n}p_{i}}}. \label{eq-FservoLPprod}\]

The DC term describes the static inaccuracy with respect to the asymptotic gain. The static inaccuracy has already been discussed in section Accuracy design considerations. The unity-gain dynamic transfer function has our interest and particularly the highest coefficient of \(s\) of the denominator. This term describes the roll-off at the highest frequencies. From ((140)), we see that this coefficient equals the reciprocal value of the product of the poles and the DC return difference \(\left( 1-L_{DC}\right) \). With \(-L_{DC}\gg1,\) it approximates the product of the DC loop gain and the poles. In the following section, we will derive a relation between this so-called loop gain-poles product and the bandwidth of the servo function.

Low-pass cut-off and loop gain-poles product#

The aim of the design of the high-frequency behavior is to let the servo function \(S(s)\) approximate unity over as wide a frequency range as possible and have a smooth transition to roll-off at high frequencies, while all poles of \(S(s)\) have a negative real part. Hence, we will assume that a Maximum Flat Magnitude (MFM) or Butterworth filter characteristic has to be established for the servo function.

MFM response#

The bandwidth \(\omega_{n}\) of a system with an \(n-th\) order MFM characteristic shows a very simple relation to the \(n\) system poles \(p_{1}\cdots p_{n}\):

(141)#\[\omega_{n}=\sqrt[n]{%{\displaystyle\prod\limits_{i=1}^{n}} \left\vert p_{i}\right\vert }. \label{eq-bw-mfm}\]

The poles of MFM systems can be found by taking the \(n\) poles with a negative real part from the \(2n\) poles spaced equally over a circle centered at the origin of the complex plane. The pole positions of first, second and third order Butterworth filters are shown in Fig. 348.

../_images/Butterworth.svg

Fig. 348 Pole positions of first, second and third order Butterworth filters.#

The unity-gain MFM transfers of the first-order, second-order and third-order are:

(142)#\[H_{1}(s)=\frac{1}{1+s/\omega_{n}}, \label{eq-butterworth-1}\]
(143)#\[H_{2}(s)=\frac{1}{1+s\sqrt{2}/\omega_{n}+s^{2}/\omega_{n}^{2}}, \label{eq-butterworth-2}\]
(144)#\[H_{3}(s)=\frac{1}{1+2s/\omega_{n}+2s^{2}/\omega_{n}^{2}+s^{3}/\omega_{n}^{3}}. \label{eq-butterworth-3}\]

In order to achieve an MFM characteristic for the servo function, the poles of \(S(s)\) have to be manipulated into Butterworth positions. We will assume that the poles of \(S(s)\)\ can\ be divided into two groups:

  1. Dominant poles

    The dominant poles are the poles that can be manoeuvred into Butterworth positions; they will determine the bandwidth of the servo function.

  2. Non-dominant poles

    The non-dominant poles are assumed to have no significant influence on the high-frequency behavior, since their frequency is far beyond the \(-3\)dB cut-off frequency of the servo function.

Hence, according to equations ((140)) and ((141)), the bandwidth \(\omega_{n}\) of a negative feedback amplifier with an \(n-th\) order MFM characteristic can be obtained as:

\[\omega_{n}=\sqrt[n]{\left\vert \left( 1-L_{DC}\right) \prod_{i=1}^{n} p_{i}\right\vert }.\]

With \(\left\vert L_{DC}\right\vert \gg1\), we see that the bandwidth of a negative feedback amplifier is determined by the product of the DC loop gain and the dominant poles of the loop gain. Since this is larger than the bandwidth of the loop gain itself, we see that negative feedback is capable of reducing the errors as a result of the speed limitations introduced by the controller.

In order to establish an MFM characteristic, the servo function must be an all-pole function, and the dominant poles of the servo function, have to be manipulated into the desired filter positions. Before discussing frequency compensation techniques for manipulating these poles into Butterworth positions, we will introduce techniques for separating the high-frequency poles of \(L(s)\) into dominant and non-dominant poles.

Other filter types#

The design method for high frequency behavior is also valid for other filter characteristics, e.g. Gaussian or Chebyshev filters. For filters with a Gaussian response, such as Bessel Filters, \(\omega_{n}\) is smaller, and for filters with an MFM response. For a Chebyshev response, \(\omega_{n}\) is larger than that obtained from (141). In all cases, however, the loop gain-poles product can be taken as a design parameter for the bandwidth of a negative feedback amplifier.

Dominant poles#

We will now present a way to determine whether poles are dominant or non-dominant. Fig. 349 shows an example of the asymptotes of the magnitude characteristics of the asymptotic gain \(A_{f\infty}(\omega)\), the source-to-load transfer \(A_{f}(\omega)\), the loop gain \(L(\omega)\) and the servo function \(S(\omega)\) of a negative feedback amplifier. The intended frequency characteristic of the amplifier’s source-to-load transfer is that of \(A_{f\infty}(\omega)\). In this figure, the loop gain \(L(\omega)\) has been given three poles, \(p_{1}\), \(p_{2}\) and \(p_{3}\), of which the corresponding frequencies are denoted as \(\omega_{p1}\), \(\omega_{p2}\) and \(\omega_{p3}\), respectively.

The high-frequency MFM \(-3\)dB frequency \(\omega_{h}\) of the negative feedback amplifier is the frequency at which the asymptote of the magnitude characteristic of the servo function intersects with its DC value. This frequency equals \(\omega_{2}\). This figure clearly shows the second order low-pass character of the magnitude characteristic. Obviously, the third pole does not belong to the dominant group.

../_images/asymp-loopgain-error-frequency-function.svg

Fig. 349 Example of the frequency characteristics of the asymptotic gain, the loop gain and servo function of a negative feedback amplifier.#

This can be seen as follows. If only \(p_{1}\) was assumed dominant, the servo function would have had a bandwidth of \(\omega_{1}\). This assumption would have been wrong, because \(\omega_{p2}<\omega_{1}\). If all three poles were to have been assumed dominant, the servo bandwidth would have been \(\omega_{3}\). This assumption would also have been wrong, because at \(\omega_{3}\), the servo function has already dropped below its DC value.

The procedure for finding the order of the system (the number of dominant poles) is thus as follows:

  1. Rank the high-frequency poles of \(L(s)\) with increasing frequency: start with the most dominant pole

    and end with the pole with the highest frequency; here, \(\left\vert p_{1}\right\vert <\left\vert p_{2}\right\vert <\left\vert p_{3}\right\vert \).

  2. Calculate the \(-3\) dB frequency\ for increasing order of the system: for the amplifier from this example, we find

    \[\begin{split}\omega_{1} & =\left\vert \left( 1-L_{DC}\right) p_{1}\right\vert ,\\ \omega_{2} & =\sqrt{\left\vert \left( 1-L_{DC}\right) p_{1}p_{2} \right\vert },\\ \omega_{3} & =\sqrt[3]{\left\vert \left( 1-L_{DC}\right) p_{1}p_{2} p_{3}\right\vert }.\end{split}\]
  3. The order \(n\) is the number for which \(\omega_{n}\) has the smallest value.

Alternatively, we may say that a pole is dominant if its frequency is below the frequency of intersection of its corresponding asymptote of the magnitude characteristic of the loop gain, and unity (see Fig. 349).

Design conclusion#

We are now able to relate the bandwidth of a negative feedback amplifier to properties of the controller and formulate design requirements for the controller.

Definition

In order to obtain the desired low-pass cut-off frequency of a negative feedback amplifier, the controller should raise the product of the loop gain and the dominant poles to a sufficiently large value.

Although the asymptotic description provides a method for finding the requirements for the controller’s contribution to the loop gain-poles product, the magnitude characteristic of the servo function can deviate considerably from the asymptotic values. We have already seen that an MFM characteristic requires the poles of the servo function to be in Butterworth positions. Usually, the dominant poles of the servo function will not have their desired positions and frequency compensation techniques have to be applied to bring these poles into their desired positions. Independent design of the bandwidth and the frequency response requires that application of frequency compensation techniques does not affect the product of the loop gain and the poles. Such techniques will be discussed in Chapter Frequency compensation. Before we discuss these techniques, we need to study the influence of zeros in the loop gain on the bandwidth of the servo function. This will be done in the following sections.

We will conclude this section with two examples in which we will derive requirements for the properties of an operational amplifier that determine the bandwidth of a transimpedance amplifier in which it has been used as a controller. In the first example, we will derive the design equations manually. In the second example, we will use numeric values and demonstrate the use of SLICAP.

Example

In this example, we will derive requirements for the gain-bandwidth product of an operational amplifier that will be used as a controller in a transimpedance amplifier. The transimpedance amplifier is shown in Fig. 350A. It converts the current of a capacitive source into a voltage across a resistive load. The small-signal equivalent model of the single-pole operational amplifier is shown in Fig. 350B. The complete small-signal model of the circuit is depicted in Figure.Fig. 351.

../_images/transImpOpamp.svg

Fig. 350 A: Transimpedance amplifier that converts the current from a capacitive source into a voltage across a resistive load. B: Model of the operational amplifier used in (A).#

With the aid of the asymptotic gain model, we are able to find a relation between the bandwidth of the transimpedance amplifier and properties of the operational amplifier. To do so, we select the voltage gain \(A_{v}\) of the operational amplifier as the loop gain reference. With this selection, the asymptotic gain equals the ideal gain of the amplifier:

\[A_{f\infty}=-R_{f}.\]

The error with respect to this ideal transfer is now completely determined by the servo function, while, in its turn, the servo function is completely defined by the loop gain.

../_images/transImpSmallSignal.svg

Fig. 351 Small-signal model of the transimpedance amplifier from Fig. 350 with the operational amplifier model from Fig. 350B.#

An expression for the loop gain can be found from network inspection:

\[L=-\frac{A_{0}}{1+s\frac{A_{0}}{2\pi G_{B}}}\frac{R_{\ell}}{R_{\ell}+R_{o} }\frac{1}{1+s\left( \left( R_{o}{|| R}_{\ell}\right) +R_{f}\right) \left( C_{s}+C_{d}+\frac{C_{c}}{2}\right) }.\]

The DC loop gain \(L_{DC}\) equals

\[L_{DC}=-A_{0}\frac{R_{\ell}}{R_{\ell}+R_{o}}.\]

The two poles of the loop gain are found to be

\[\begin{split}p_{1} & =-\frac{2\pi G_{B}}{A_{0}}~\text{[rad/s]}\\ p_{2} & =-\frac{1}{\left( \left( R_{o}{|| R}_{\ell}\right) +R_{f}\right) \left( C_{s}+C_{d}+\frac{C_{c}}{2}\right) }~\text{[rad/s].}\end{split}\]

If both poles are dominant, the amplifier can be realized with a second order MFM response with bandwidth \(B_{\omega}\) that can be obtained from the product of the DC loop gain and the poles:

(145)#\[B_{\omega}=\sqrt{\frac{2\pi G_{B}R_{\ell}}{R_{\ell}+R_{o}}\frac{1}{\left( \left( R_{o}{|| R}_{\ell}\right) +R_{f}\right) \left( C_{s} +C_{d}+\frac{C_{c}}{2}\right) }}~\text{[rad/s].} \label{eq-bwtransimp}\]

From ((145)), we can derive a relation between the circuit parameters and the achievable bandwidth \(B_{f}\) (in [Hz]) of the transimpedance amplifier:

\[G_{B}\frac{R_{\ell}}{R_{\ell}+R_{o}}\frac{1}{\left( \left( R_{o}{|| R}_{\ell}\right) +R_{f}\right) \left( C_{s}+C_{d}+\frac{C_{c}}{2}\right) }\geq2\pi B_{f}^{2}~\text{[Hz].}\]

The unknown parameters in this equation are \(G_{B}\), \(R_{o}\), \(C_{d}\) and \(C_{c}\). The other parameters \(C_{s}\), \(R_{f}\) and \(R_{\ell},\) as well as the required bandwidth \(B_{f}\), follow from the specification of the amplifier.

The maximum contribution that the operational amplifier can deliver to the loop gain-poles product of the transimpedance amplifier is \(G_{B}\). This occurs if

\[\begin{split}C_{d}+\frac{C_{c}}{2} & \ll C_{s},\\ R_{o} & \ll R_{\ell},\\ R_{o} & \ll R_{f}.\end{split}\]

If these conditions are met, the relation between the achievable bandwidth \(B_{f}\) and the gain-bandwidth product \(G_{B}\) of the operational amplifier simplifies to

(146)#\[B_{f}=\sqrt{\frac{G_{B}}{2\pi R_{f}C_{s}}}~\text{[Hz],} \label{eq-BWGB}\]

and we find a design limit for the gain-bandwidth product of the amplifier:

(147)#\[G_{B}\geq2\pi R_{f}C_{s}B_{f}^{2}~\text{[Hz].} \label{eq-BWGBf}\]

\(G_{B}=2\pi R_{f}C_{s}B_{f}^{2}\) is a lower limit for the gain-bandwidth product. Any device with a smaller value would be a show-stopper.

Until now, we have assumed that both poles are dominant. This is not necessarily true. If we require a small bandwidth, e.g., smaller than the frequency of \(p_{2}\), this pole may be kept away from the dominant pole. The expression for the loop gain then changes to:

\[L=-\frac{A_{0}}{1+s\frac{A_{0}}{2\pi G_{B}}}\frac{R_{\ell}}{R_{\ell}+R_{o}}.\]

The lower limit for \(G_{B}\) then follows from

\[G_{B}>\frac{R_{\ell}+R_{o}}{R_{\ell}}B_{f}.\]

However, this first order approximation is only valid if the second pole is not dominant thus,

\[B_{f}\ll\frac{1}{2\pi\left( \left( R_{o}{|| R}_{\ell}\right) +R_{f}\right) \left( C_{s}+C_{d}+\frac{C_{c}}{2}\right) },\]

and if the gain-bandwidth product is sufficiently small

\[G_{B}\ll\frac{R_{\ell}+R_{o}}{R_{\ell}}\frac{1}{2\pi\left( \left( R_{o}{|| R}_{\ell}\right) +R_{f}\right) \left( C_{s}+C_{d}+\frac{C_{c}}{2}\right) }.\]
../_images/colorCode.svg

In the next example, we will use numeric values and demonstrate the use of SLICAP for determination of controller properties that contribute to the low-pass cut-off of the amplifier.

Example

We will start with the definition of the target specifications of the transimpedance amplifier from the previous example. We will consider its dynamic behavior only. The target specifications that are relevant for the dynamic behavior are:

  1. Source capacitance: \(5\)pF

  2. Load resistance: \(2\)k\(\Omega\)

  3. Transimpedance gain: \(100\)k\(\Omega\)

  4. Signal frequency range: \(500\)kHz

The circuit for the generation of the netlist is depicted in Fig. 352.

../_images/transImpSmallSignalSlicap.svg

Fig. 352 Circuit diagram of the transimpedance amplifier for evaluation with SLiCAP.#

The SLICAP netlist:

 1transimpedance
 2* file: transimpedance.cir
 3* SLiCAP circuit file
 4I1 0 1 {I_s}
 5C1 1 0 {C_s}
 6C2 1 0 {C_d}
 7C3 1 0 {C_c/2}
 8R1 1 2 {R_f}
 9R2 2 0 {R_ell}
10E1 2 0 0 1 EZ value={A_0/(1+s*A_0/2/pi/G_B)} zs={R_o}
11.param C_s=5p R_f=100k R_ell=2k
12.end
13

Below is the part of the listing of the script file that performs the checking of the circuit and the definition of the simulation variables, such as the simulation type, the gain type, the data type, the source, the load and the loop gain reference. The simulation type has been set to numeric, so all parameter values defined with the .param statement in the circuit file will be substituted into the element expressions.

 1#!/usr/bin/env python3
 2# -*- coding: utf-8 -*-
 3# file: transimpedance.py
 4
 5from SLiCAP import *
 6
 7fileName = 'transimpedance'
 8prj = initProject(fileName)
 9i1 = instruction()
10i1.setCircuit(fileName + '.cir')
11htmlPage('Example controller GB product requirements')
12i1.setSimType('numeric')
13i1.setDataType('laplace')
14i1.setSource('I1')
15i1.setDetector('V_2')

Lines 16-19 of the script evaluate the loop gain. The function coeffsTransfer in line 21 returns the coefficients of the numerator and the denominator of its argument: a Laplace rational function. From these coefficients we will calculate the loop gain-poles product. This script is intended to work with an all-pole loop gain that has a finite nonzero DC value. Hence, the coefficient of \(s^{0}\) in the denominator should not be zero and the numerator should only have a nonzero coefficient for \(s^{0}\). This is checked in line 21-27. Line 29-31 print DC loop gain on the html page. The loop gain-poles product is calculated in line 35, and displayed on the html page (line 37 -40):

 1
 2i1.setLGref('E1')
 3i1.setGainType('loopgain')
 4result = i1.execute()
 5#
 6gain, numerCoeffs, denomCoeffs = coeffsTransfer(result.laplace)
 7if len(numerCoeffs) > 1:
 8  text2html('Zeros found, GB determination method not valid.')
 9else:
10  text2html('Found the nonzero DC loop gain.')
11if denomCoeffs[0] == 0:
12  text2html('Found poles in the origin, GB determination method not valid.')
13#
14LP = sp.symbols('LP')
15text2html('The DC loop gain equals:')
16eqn2html('L_DC', gain)
17
18if len(denomCoeffs) == 1:
19  text2html('No poles found, GB determination method not valid.')
20LPproduct = -gain/denomCoeffs[-1]
21
22text2html('The loop gain-poles product is found as:')
23eqn2html(LP, LPproduct)
24order = len(denomCoeffs) - 1
25text2html('The order of the LP product is: ' + str(order))

This LP product is evaluated as the ratio of the coefficient of \(s^{0}\) of the numerator and the highest order coefficient of \(s\) of the denominator. The order of the loop gain is found as the number of coefficients of the denominator minus one.

With the expression for the LP product and the requirement for the bandwidth, we are able to derive requirements for the unknown variables.

We will now calculate a show-stopper value for the gain-bandwidth product \(GB\) of the operational amplifier. The lowest possible gain-bandwidth product is found if all other contributions to the bandwidth limitation of the amplifier are set to zero. This is the case if \(R_{o}=0\), \(C_{d}=0\), and \(C_{c}=0\).

1B_f = 500e3
2R_o, C_d, C_c, G_B, GB_min, A_0 = sp.symbols('R_o, C_d, C_c, G_B, GB_min, A_0')
3
4GB_minAll = sp.solve(LPproduct -(B_f*2*sp.pi)**order, G_B)[0]
5text2html('The required bandwidth  = ' + str(B_f/1000) + 'kHz')
6text2html('With this value, the show stopper value of the gain-bandwidth product $G_B$ is:')
7GB_minNum = GB_minAll.subs([(R_o, 0), (C_d, 0), (C_c, 0)])
8eqn2html('GB_min', GB_minNum/1e6, units="MHz")

This minimum requirement for the \(GB\) product is calculated in lines 42-49 of the script. It consists of two parts. In line 45 we find a symbolic expression for \(GB\) as a function of the other parameters of the operational amplifier and the required bandwidth from solving:

\[LP_{n}-\left( 2\pi B_{f}\right) ^{n}=0.\]

In line 48 we subsitute \(R_{o}=0\), \(C_{d}=0\), and \(C_{c}=0\) in this expression. This yields the lower limit \(GB_{\min}\) of \(GB\).

Fig. 353 shows the html page generated by this script.

../_images/SLiCAPtransimpedanceGB.svg

Fig. 353 Result of the execution of the SLiCAP script.#

../_images/colorCode.svg

We will now select an operational amplifier based on the results of the previous example. Operational amplifiers with zero input capacitance are not available, so we need to select one with a larger GB product than the show-stopper value. As far as its dynamic performance is concerned, the OPA627 looks promising. It has a differential-mode input capacitance of \(8\)pF, a common-mode input capacitance of \(7\)pF, an output resistance of about \(55\Omega\) and a gain-bandwidth product of \(16\)MHz. Its magnitude and phase plot show a somewhat more complicated behavior than a simple first-order roll-off, but we will ignore this because the extra phase shift above \(10\)MHz may not be at all relevant if the servo bandwidth turns out to be much less.

In the next example, we will verify the design with the OPA627 device with SLICAP.

Example

\label{ex-transimpedanceOPA627}

The script for the device selection and the verification are listed below. Lines 51-63 perform the substitution of the parameters of the OPA627, and the calculation of the bandwidth that can be achieved with this device. The results are displayed on the html page; see Fig. 354.

 1htmlPage('Device selection and verification')
 2i1.defPar('A_0', '1M')
 3i1.defPar('C_d', '8p')
 4i1.defPar('C_c', '7p')
 5i1.defPar('R_o', 55)
 6i1.defPar('G_B', '16M')
 7i1.defPar('I_s', 1)
 8params2html(i1.circuit)
 9
10Bf = 1/(2*sp.pi)*LPproduct**(1/order)
11BfOPA627 = sp.N(Bf.subs([(R_o, 55), (C_d, 8e-12), (C_c, 7e-12), (G_B,16e6),  (A_0, 1e6)]), 4)
12text2html('The achievable low-pass cut-off frequency $f_h$ with the OPA627 in [MHz] is:')
13eqn2html('f_h', BfOPA627*1e-6)

Lines 64-77 create the Bode plots for all transfer functions of the asymptotic gain model. These plots are shown in Fig. 355.

../_images/SLiCAPtrimpDeviceSel.svg

Fig. 354 Result of the execution of the SLiCAP script.#

 1htmlPage('Bode plots')
 2L = i1.execute()
 3i1.setGainType('asymptotic')
 4A = i1.execute()
 5i1.setGainType('servo')
 6S = i1.execute()
 7i1.setGainType('direct')
 8D = i1.execute()
 9i1.setGainType('gain')
10G = i1.execute()
11figMag = plotSweep('TrimpMag', 'Magnitude characteristics', [L, A, S, D, G], 10e3, 10e6, 200, funcType = 'mag', show = True)
12fig2html(figMag, 800)
13figPhase = plotSweep('TrimpPhase', 'Phase characteristics', [L, A, S, D, G], 10e3, 10e6, 200, funcType = 'phase', show = True)
14fig2html(figPhase, 800)

The plots clearly show the low-pass cut-off at the predicted frequency. However, the magnitude characteristic of the gain shows significant peaking and is far from maximally flat. This was not yet our aim. Before we corcern ourselves about the frequency stability and the filter type of the response, we need to establish a sufficiently large bandwidth!

../_images/colorCode.svg

In the previous examples, we have demonstrated the way in which the gain bandwidth requirements for the controller can be derived from the specification of the transimpedance amplifier. Initial target values can be derived with SLICAP, and after a device has been selected, the performance can be verified. In this case, this has been done with the aid of Bode plots.

The next step in the design of the amplifier is the design of the frequency stability and the filter response type. These topics will be discussed in Chapter Frequency compensation. However, before dealing with these topics, we need to study the way in which the above results can be applied if we do not have all-pole loop gain functions, or if we have poles at \(s=0\), which would yield an infinite DC loop gain.

../_images/SLiCAPtrimpBodePage.svg

Fig. 355 Result of the execution of the SLiCAP script.#

In section High-pass cut-off and DC loop gain, we will study the high-pass cut-off that arises if we have DC blocking elements in the loop of a feedback amplifier. In section Low-pass cut-off with poles and zeros, we will formulate the general case for relating the low-pass cut-off of the servo function to the loop gain with poles and zeros. In section High-pass cut-off with poles and zeros, we will do this for the high-pass cut-off. In section Procedure for determination of the servo bandwidth, we combine the methods found in sections Low-pass cut-off with poles and zeros and High-pass cut-off with poles and zeros and derive a clear procedure for relating the low-pass and the high-pass cut-off of the servo function to the properties of the loop gain function. The algorithm developed in this section has been implemented in SLICAP.

High-pass cut-off and DC loop gain#

In the previous section, we studied the relation between the low-pass cut-off frequency of a negative feedback amplifier and the DC value and the poles of the loop gain. We have seen that, due to a lack of loop gain at high frequencies, the servo function drops below unity. This causes a low-pass behavior with respect to the desired ideal gain of the amplifier. In this section, we will study the influence of a lack of loop gain below certain frequencies. Such effects may be caused by capacitive branches in series with the signal path or inductive branches in parallel with the signal path in the loop equivalent circuit. If the loop gain drops below unity for decreasing frequencies, the servo function obtains a high-pass character.

DC blocking elements in the loop#

DC blocking elements in the loop cause a loss of loop gain at low frequencies. DC blocking elements are capacitors in series with the signal path or inductors in parallel with the signal path, they introduce zeros at zero frequency in the loop gain. In order to study their effect, we assume a loop gain function with \(q\) DC blocking elements in the loop and no other dynamic elements. In such cases the loop transfer can be written as:

\[L(s)=\frac{b_{q}s^{q}}{\prod\limits_{i=1}^{q}\left( 1-\frac{s}{p_{i}}\right) }\]

The factor \(b_{q}\) can be written as the product of a DC term which is the product of the DC gain \(A_{DC}\) provided by the controller, a DC attenuation factor \(\alpha_{DC}\) due to resistive networks in the loop transfer, and a product of \(q\) time constants introduced by the\ \(q\) DC blocking elements in the loop:

(148)#\[b_{q}=A_{DC}\alpha_{DC}\prod\limits_{i=1}^{q}\tau_{i} \label{eq-BeeQu}\]

As stated earlier, all other elements that introduce low-pass transfer (speed limitations) have been ignored.

../_images/loopgain-servo-functionHighPass.svg

Fig. 356 High-pass character of the servo function due to 3 DC blocking elements in the loop transfer circuit.#

The loop gain now has \(q\) zeros in the origin and \(q\) poles. The order of the high-pass cut-off equals the number of zeros minus the number of poles below the frequency of intersection of the asymptote of the magnitude characteristic of the loop gain and unity. If the frequency of the pole is in a frequency range where the loop gain is smaller than unity, it reduces this order. We will call such a pole dominant because it affects the high-pass cut-off. This is illustrated in Fig. 356.

With \(r\) dominant poles, the loop gain at the frequency of intersection appoximates:

\[L(s)=\frac{b_{q}s^{q}}{\prod\limits_{i=1}^{r}\left( 1-\frac{s}{p_{i}}\right) }.\]

In the vicinity of the frequency of intersection, this can be approximated by its asymptote:

\[L(s)=b_{q}s^{q-r}\prod\limits_{i=1}^{r}-p_{i}.\]

The servo function is then obtained as

\[S(s)=\frac{-b_{q}s^{q-r}\prod\limits_{i=1}^{r}-p_{i}}{1-\left( -1\right) ^{r}b_{q}s^{q-r}\prod\limits_{i=1}^{r}p_{i}}.\]

This function has the structure of a unity-gain high-pass filter of order \(q-r\). If all poles are in MFM positions, it has a \(-3\)dB cut-off frequency \(\omega_{\min}\) that can be found as:

\[\omega_{\min}=\sqrt[q-r]{\frac{1}{\left\vert b_{q}\prod\limits_{i=1}^{r} p_{i}\right\vert }}.\]

If we substitute ((148)) in this equation, we see that the low-frequency cut-off can be brought to an arbitrarily low value by increasing the DC gain of the controller:

(149)#\[\omega_{\min}=\sqrt[q-r]{\frac{1}{\left\vert A_{DC}\alpha_{DC}\left( \prod\limits_{i=1}^{q}\tau_{i}\right) \left( \prod\limits_{i=1}^{r} p_{i}\right) \right\vert }}. \label{eq-omegaMin}\]

Design conclusion#

From ((149)), we may conclude:

Definition

A high-pass cut-off frequency \(\omega_{\min}\) of the servo function, caused by DC blocking elements in the loop transfer, can be kept below its specified value if the controller provides a sufficiently large DC gain.

The design of the high-pass cut-off frequency, will be elucidated in the example below.

Example

\label{example-IntegratorHighPass}

In this example, we will design the high-pass cut-off frequency of a current integrator. Integration of electrical current is often required in charge detection or charge control amplifiers. In this example, we will only focus on one performance aspect: high-pass cut-off due to a lack of loop gain at low frequencies.

../_images/qAmpSimpleHighPass.svg

Fig. 357 Charge amplifier: A: The amplifier concept for a grounded resistive current source and a grounded resistive load B: The amplifier in which the ideal controller has been replaced with a voltage-controlled voltage source with DC gain \(A_0\).#

High-pass behavior results in droop or tilt in the step response (see section Modeling of the small-signal dynamic behavior). Such droop or tilt may pose requirements to the high-pass cut-off frequency of charge amplifiers.

Fig. 357A shows the concept of the charge amplifier under study. It converts the charge of a grounded source into a voltage for a grounded load. The source is resistive and has a source resistance \(R_{s}\). The load is also resistive and has a resistance \(R_{\ell}\). Fig. 357B shows the circuit in which the ideal controller (a nullor) has been replaced with a voltage-controlled voltage source with a DC gain \(A_{0}\). Since we are only studying the high-pass cut-off, low-pass behavior of the controller has not been modeled.

We will assume the following requirements for the charge amplifier:

  1. The peak value of the charge delivered by the source is \(10\)pC. This peak charge should evoke a peak load voltage of \(2\)V.

    From this, we can calculate the value of the integration capacitance: \(C_{i}=5\)pF.

  2. The source resistance is \(50\)k\(\Omega\) and the load resistance is \(2\)k\(\Omega\).

  3. The high-pass cut-off frequency \(f_{\ell}\) of this circuit should be below \(1\)kHz.

Below the SLICAP netlist of the circuit from Fig. 357B.

 1simpleQamp
 2* file: simpleQamp.cir
 3* SLiCAP circuit file
 4I1 0 1 {I_s}
 5R1 1 0 {R_s}
 6C1 1 2 {C_i}
 7R2 2 0 {R_ell}
 8E1 2 0 0 1 {A_0}
 9.param C_i=5p R_s=50k R_ell=2k
10.end
11

The design task that we will try to fulfill in this example is: find a minimum value for the DC gain of the controller to meet the requirement for \(f_{\ell}\).

A simple and straightforward way to do this is to calculate the servo function. This function describes the behavior of the transfer with respect to the ideal behavior. The script below (lines 1 to 20) prints the expression for the servo function with \(A_{0}\) as variable to the output html page.

 1#!/usr/bin/env python3
 2# -*- coding: utf-8 -*-
 3# file: simpleQamp.py
 4
 5from SLiCAP import *
 6
 7fileName = 'simpleQamp'
 8prj = initProject(fileName)
 9i1 = instruction()
10i1.setCircuit(fileName + '.cir')
11htmlPage('High-pass cut-off design')
12i1.setSource('I1')
13i1.setDetector('V_2')
14i1.setLGref('E1')
15i1.setSimType('numeric')
16i1.setGainType('servo')
17i1.setDataType('laplace')
18result = i1.execute()
19exprGain = result.laplace
20eqn2html('S', exprGain);

The next part of the script (lines 22-30), calculates the minimum requirement for \(A_{0}\). This script only works if there are no low-pass effects modeled! It calculates the high-pass cut-off frequency \(\omega_{\min}\) from the first coefficient \(a_{0}\) and the last coefficient \(a_{q}\) of the denominator polynomial of the servo function:

\[\omega_{\min}^{q}=\frac{a_{0}}{a_{q}}.\]

It then solves

\[\omega_{\min}^{q}-\left( 2\pi f_{\ell}\right) ^{q}=0.\]

The output of this script is shown in Fig. 358.

../_images/SLiCAPhigh-pass-cut-off.svg

Fig. 358 Result of the execution of the SLiCAP script.#

1gain, numerCoeffs, denomCoeffs = coeffsTransfer(exprGain)
2order          = len(denomCoeffs) - 1
3omegaLow       = denomCoeffs[0]/denomCoeffs[-1]
4f_l            = 1e3
5A0min          = sp.solve(omegaLow - (2*sp.pi*f_l)**(1/order))[0]
6A_min = sp.Symbol('A_min')
7text2html('In order to meet the requirement for $f_{\\ell}$ we need a minimum value $A_{\\min}$ for the DC gain $A_0$ of the controller:');
8eqn2html(A_min, A0min);
9i1.defPar('A_0', A0min);

The Bode plots are shown in Fig. 359. They are generated in lines 32-46.

 1L = i1.execute()
 2i1.setGainType('asymptotic')
 3A = i1.execute()
 4i1.setGainType('direct')
 5D = i1.execute()
 6i1.setGainType('gain')
 7G = i1.execute()
 8figMag = plotSweep('magQamp', 'Magnitude characteristics', [A, L, S, D, G], 10, 10e6, 200, funcType='mag', show=True)
 9fig2html(figMag, 800)
10figPhase = plotSweep('phaseQamp', 'Magnitude characteristics', [A, L, S, D, G], 10, 10e6, 200, funcType='phase', show=True)
11fig2html(figPhase, 800);

The plots of the asymptotic gain clearly show the integrating character of the charge amplifier. The plots of the loop gain show a lack of loop gain at low frequencies. This is due to the high-pass filter in the loop formed by the integration capacitor and the source resistance. The gain of the integrator closely matches the asymptotic gain at frequencies above \(1\)kHz. The loop gain reaches its maximum of \(635.6\) above the frequency of the pole caused by the integration capacitor and the source resistance.

../_images/colorCode.svg

The analysis performed in the example above, requires all low-pass effects not to have been modeled. This can be done by using different circuit models during the design of the high-pass transfer and of the low-pass transfer. In amplifier design, such an approach is usually possible because the frequency regions of high-pass and low-pass transfer are well separated. Only when designing narrow-band active filters would this way of working not be possible.

../_images/SLiCAPhigh-passBode.svg

Fig. 359 Result of the execution of the SLiCAP script.#

Low-pass cut-off with poles and zeros#

In section Low-pass cut-off and loop gain-poles product, we have studied the low-pass cut-off frequency of the servo function for all-pole loop gain transfers with a finite DC loop gain. In this, we will derive a general expression for the low-pass cut-off frequency \(\omega_{h}\) of the servo function. To this end, we assume a loop gain with \(k\) poles at \(s=0\) and \(\ell\) zeros at \(s=0,\) and a total number of poles and zeros of \(n\) and \(m\), respectively. The loop gain function can then be written as

(150)#\[L(s)=\frac{b_{\ell}s^{\ell}}{a_{k}s^{k}}\frac{\prod\limits_{j=\ell+1} ^{m}\left( 1-\frac{s}{z_{j}}\right) }{\prod\limits_{i=k+1}^{n}\left( 1-\frac{s}{p_{i}}\right) }, \label{eq-LPwithOrigins}\]

in which \(b_{\ell}\) and \(a_{k}\) are the trailing coefficients of \(s\) of the numerator polynomial and of the denominator polynomial of the loop gain, respectively.

We obtain a low-pass character of the loop gain if the number of poles exceeds the number of zeros, thus if \(n>m\) in expression (150). If so, the magnitude characteristic has a falling slope at the highest frequencies and the loop gain may be approximated by its asymptote as:

(151)#\[L=\frac{C_{n-m}}{\omega^{n-m}}, \label{eq-highestfreqLoopgain}\]

where the coefficient \(C_{n-m}\) can be written as

(152)#\[C_{n-m}=\left\vert \frac{b_{\ell}}{a_{k}}\frac{%{\displaystyle\prod\limits_{i=k+1}^{n}} p_{i}}{%{\displaystyle\prod\limits_{j=\ell+1}^{m}} z_{j}}\right\vert . \label{eq-highestfreqLoopgainCoeff}\]

The low-pass cut-off of the servo function occurs at approximately unity loop gain. Hence, with the aid of ((151)), we obtain:

\[\omega^{n-m}\approx C_{n-m}.\]

With the aid of ((152)), we obtain the value of the low-pass cut-off frequency \(\omega_{h}\) for a feedback circuit of which the loop gain has \(m\) dominant zeros and \(n\) dominant poles, with \(n>m\). Dominant poles and zeros are those that have a frequency smaller than \(\omega_{h}\), as discussed in section Low-pass cut-off and loop gain-poles product

\[\omega_{h}\approx\sqrt[n-m]{\left\vert \frac{b_{\ell}}{a_{k}}\frac{%{\displaystyle\prod\limits_{i=k+1}^{n}} p_{i}}{%{\displaystyle\prod\limits_{j=\ell+1}^{m}} z_{j}}\right\vert }.\]

High-pass cut-off with poles and zeros#

At low frequencies, zeros may cause the loop gain to drop below its midband value. In such cases the servo function obtains a high-pass character with a high-pass cut-off at \(\omega_{\ell}\). This cut-off frequency can be found in a similar way as the low-pass cut-off frequency \(\omega_{h}.\) We now only account for the \(p\) zeros and the \(q\) poles with frequencies smaller than \(\omega_{\ell}\) and use the asymptotic approximation according to ((151)) with \(p>q\). In this way we obtain:

\[\omega_{\ell}\approx\sqrt[p-q]{\left\vert \frac{b_{\ell}}{a_{k}}\frac{%{\displaystyle\prod\limits_{i=k+1}^{p}} p_{i}}{%{\displaystyle\prod\limits_{j=\ell+1}^{q}} z_{j}}\right\vert }.\]

Procedure for determination of the servo bandwidth#

With the results of the theory from sections Low-pass cut-off with poles and zeros and High-pass cut-off with poles and zeros, we are able to design a procedure for the determination of the bandwidth of the servo function with an arbitrary number of poles and zeros. The outline of the method is:

  1. From the rational expression of the loop gain, determine the ratio of the trailing coefficients of the numerator polynomial and the denominator polynomial: \(\frac{b_{\ell}}{a_{k}}\).

  2. Determine the \(m\) zeros (the solutions of the numerator polynomial) and the \(n\) poles (the solutions of the denominator polynomial).

  3. Find the corner frequencies and the order of the loop gain function for frequencies above each corner. This can be done as follows:

    1. Calculate the \(m+n\) corner frequencies; these are the absolute values of the poles and the zeros.

    2. Assign order\ \(=+1\) to a pole frequency and order \(=-1\) to a zero frequency

    3. Rank the frequencies and their corresponding orders in ascending order of frequencies.

    4. Make a new list with unique frequencies \(\omega_{i}\) and corresponding orders \(o_{i}\). These orders are the sum of the orders of the original corner frequencies that had the same value. Hence, two poles with the same frequency result in one corner frequency with order \(+2\). A pole-zero pair results in one corner frequency with order \(0\), etc.

    5. Replace the order of the corner frequencies with the order of the loop gain function. The order of the loop gain function above a corner frequency is the sum of the orders of all corner frequencies up to that corner frequency. Hence, if we first have a pole, then another pole and then a zero, we have the orders: \(1,2,\ 1\).

  4. Determine the coefficients \(C_{i}\) (see ((152))) of the asymptotes for each corner frequency. This is done as follows:

    1. At the first corner frequency, we have \(C_{1}=\frac{b_{\ell}}{a_{k}}\). If the first corner frequency is not zero, we have to multiply this by the first corner frequency \(\omega_{1}\).

    2. At following corner frequencies \(\omega_{i},\) we have \(C_{i} =C_{i-1}\times\omega_{i}^{(o_{i}-o_{i-1})}.\)

  5. Determine the cut-off frequencies \(\omega_{\ell}\) and \(\omega_{h}\).

    To this end, we evaluate the intersection points \(\Omega\) of the asymptotes of the loop gain function and unity for each corner frequency, starting at the lowest frequency and proceeding with increasing frequencies. These intersection points are obtained as

    \[\Omega_{i}=C_{i}^{\frac{1}{o_{i}}},\]

    in which \(o_{i}\) is the order at the corner frequency \(\omega_{i}.\) This intersection point can be a valid cut-off frequency if its value is larger than that of the corresponding corner frequency. It is assigned to the high-pass cut-off \(\omega_{\ell}\) if the order at the corresponding corner frequency is negative and to the low-pass cut-off frequency \(\omega_{h}\) if it is positive:

    \[\begin{split}\omega_{\ell} & =\Omega_{i}~\text{if }o_{i}>0\wedge\Omega_{i}>\omega_{i};\\ \omega_{h} & =\Omega_{i}~\text{if }o_{i}<0\wedge\Omega_{i}>\omega_{i}.\end{split}\]

    Each time a new valid cut-off frequency is found, the old value will be overwritten, resulting in correct values of \(\omega_{\ell}\) and \(\omega_{h}\) of the servo function.

This function has been implemented in SLICAP.

The function findServoBandwidth returns:

  • The high-pass cut-off frequency \(\omega_{\ell}\) and the order at this cut-off frequency

  • The low-pass cut-off frequency \(\omega_{h}\) of the servo function and the order at this frequency

  • The maximum asymptotic value of the loop gain and the first frequency of occurrence.

Design conclusions#

In the preceding sections, we have studied the relationship between the achievable bandwidth of the feedback amplifier and the gain and pole-zero pattern of the loop gain function. We have seen that the gain and the pole-zero pattern of the loop gain function is governed by the dynamic behavior of the source, the load, the feedback network and the controller. At this stage, the design of the controller has our interest, and we found that the controller must contribute to the loop gain-poles product such that it provides a sufficiently high low-pass cut-off. If the loop gain drops below unity at low frequencies, the DC loop gain can be used to achieve a sufficiently low high-pass cut-off.

In many cases, we are interested in a smooth step response and a smooth magnitude and phase response of the amplifier. Such responses can be established with all-pole transfers. Since zeros in the loop gain transfer appear in the servo function, zeros should be avoided in the frequency range of interest. Hence, in many situations, the controller should contribute an all-pole characteristic to the loop gain. Zeros in the loop gain arise from inevitable influences of the source, the load and the feedback networks.