Phantom zero compensation#

The root locus method , presented in section Root locus analysis, showed us that while increasing the loop gain, the poles of the servo function may obtain a very large imaginary part or even move into the right half plane. The method also showed that poles tend to move towards zeros. Hence, insertion of left half-plane zeros in the loop may be beneficial to the stability. However, zeros inserted into the loop transfer function are also zeros in the source load transfer. This directly follows from the expression for the servo function in which the loop transfer function appears in the numerator. Since an MFM roll-off requires the realization of an all-pole function, it appears as if frequency compensation by insertion of zeros in the loop is not an option. However, there is a way out of this using phantom zeros.

The phantom zero concept#

A phantom zero owes its name to the fact that it is not visible in the source-load transfer. A phantom zero can have a beneficial effect on the stability, while it does not appear in the source-load transfer. The concept of the phantom zero can be understood from the expression for the gain \(A_{f}(s)\) of a negative feedback amplifier:

(155)#\[A_{f}(s)=A_{f\infty}(s)\frac{-L(s)}{1-L(s)}. \label{eq-negFBtransfer}\]

Definition

A phantom zero is a zero in the loop gain \(L(s)\) that coincides with a pole in the asymptotic gain \(A_{f\infty}(s)\).

Such a zero does not appear as a zero in the source-load transfer, but it changes the numerator \(1-L(s)\) of the servo function. Let us, for example, insert a phantom zero \(z_{1}\) into \(L(s)\) and modify expression ((155)) accordingly. Hence, we need to add a zero \(z_{1}\) into the loop gain and a pole \(z_{1}\) into the asymptotic gain \(A_{f\infty }(s)\). Expression ((155)) then changes to

\[A_{f}(s)=\frac{A_{f\infty}(s)}{\left( 1-s/z_{1}\right) }\frac{-L(s)\left( 1-s/z_{1}\right) }{1-L(s)\left( 1-s/z_{1}\right) },\]

which can be simplified to:

\[A_{f}(s)=A_{f\infty}(s)\frac{-L(s)}{1-L(s)\left( 1-s/z_{1}\right) }.\]

This clearly shows that the phantom zero only changes the denominator (and thus the poles) of the servo function. It does not change the numerator of \(A_{f}(s)\).

In the following sections, we will study the conditions for phantom zero compensation of feedback amplifiers with a loop gain with two and three poles. SLICAP examples will be given with simplified circuits of voltage amplifiers in which both the controller and the feedback network have been modeled with the aid of voltage-controlled voltage sources. At a later stage, we will discuss the compensation of amplifiers with passive feedback networks with the aid of phantom zeros.

Second order compensation#

The dynamic part \(F_{2}(s)\) of the servo function with a second-order MFM characteristic will have the form

(156)#\[F_{2}(s)=\frac{1}{1+s\sqrt{2}/\omega_{h}+s^{2}/\omega_{h}^{2}}, \label{ex-hf-second-order}\]

in which \(\omega_{h}\) is the \(-3\) dB low-pass cut-off frequency.

Loop gain with two poles#

Let us consider a loop gain \(L(s)\) with two dominant poles \(p_{1}\) and \(p_{2}\) above midband frequencies, and a midband loop gain \(L_{MB}\). The loop gain \(L(s)\) can then be written as:

(157)#\[L(s)=\frac{L_{MB}}{\left( 1-s/p_{1}\right) \left( 1-s/p_{2}\right) }. \label{ex-dualPoleLoopgain}\]

With the aid of ((108)) and ((157)), the second order servo function \(S_{2}(s)\) can be obtained as

(158)#\[S_{2}(s)=\frac{-L_{MB}}{1-L_{MB}}\frac{1}{1-s\frac{p_{1}+p_{2}}{\left( 1-L_{MB}\right) p_{1}p_{2}}+s^{2}\frac{1}{\left( 1-L_{MB}\right) p_{1} p_{2}}}. \label{eq-2ndOrderServo}\]

After equating the coefficients of ((156)) and ((158)), we find that a second order MFM characteristic is obtained if

(159)#\[p_{1}+p_{2}=-\sqrt{2}\omega_{h}, \label{eq-sumOf2ndOrderPoles}\]

in which the low-pass cut-off frequency \(\omega_{h}\) equals

(160)#\[\omega_{h}^{2}=\left( 1-L_{MB}\right) p_{1}p_{2}. \label{ex-butterworth2bw}\]

In the following example, we use SLICAP to study the root locus of a second-order voltage follower that has an MFM response without compensation.

Example

Fig. 378 shows a second order feedback system with poles \(p_{1}\) and \(p_{2}\) and DC loop gain \(L_{DC}\).

The SLICAP netlist of the circuit, including the definitions of the values of the poles and the DC controller gain, is shown below:

 1" Root Locus 2nd order voltage follower"
 2* File: RLvFollower-2.cir
 3* SLiCAP netlist file
 4V1 1 0 {V_s}
 5R1 1 2 {R_s}
 6E1 3 0 2 3 {A_0/(1-s/p_1)/(1-s/p_2)}
 7R2 3 0 {R_ell}
 8* For pole-zero analysis all parameters must have a numeric value
 9.param A_0=1M 
10+ p_1={-2*pi/sqrt(2)} 
11+ p_2={-2*pi*1M*sqrt(2)} 
12+ R_ell=1 R_s=1 V_s=1
13.end

Because of the unity-gain feedback, the DC loop gain equals the controller gain: \(L_{DC}=-10^{6}\). The loop gain has a dominant pole at \(-\frac{1}{\sqrt{2}}\)Hz and a second pole at \(-10^{6}\sqrt{2}\)Hz.

The low-pass cut-off frequency can be calculated with the aid of ((160)). We obtain: \(f_{h}=1\)MHz. The sum of the poles is determined by \(p_{2},\) and condition ((159)) has been satisfied. The voltage follower should have an MFM characteristic without compensation.

The script for plotting the root locus is listed below.

 1#!/usr/bin/env python3
 2# -*- coding: utf-8 -*-
 3# File: RLvFollower_2.py
 4
 5from SLiCAP import *
 6
 7fileName = 'RLvFollower_2'
 8prj = initProject(fileName) 
 9i1 = instruction()        
10i1.setCircuit(fileName + '.cir')
11i1.setSource('V1')              # Signal source is V1
12i1.setDetector('V_3')           # Voltage detector at node (3)
13i1.setLGref('E1')               # Loop gain reference variable = E1
14i1.setGainType('servo')         # Source to load transfer
15i1.setSimType('numeric')        # Numeric simulation
16i1.setDataType('poles')         # Calculate the poles
17i1.setStepVar('A_0')            # Step the DC controller gain for RL plot
18i1.setStepMethod('lin')
19i1.setStepStart(0)
20i1.setStepStop('1M')
21i1.setStepNum(100)
22i1.stepOn()
23RL = i1.execute()
24i1.stepOff()
25i1.setGainType('gain')
26polesGain = i1.execute()
27i1.setGainType('loopgain')
28polesLoopGain = i1.execute()
29plots = [RL, polesLoopGain, polesGain]
30htmlPage('Root locus')
31fig_PZ = plotPZ('RL_' + fileName, fileName, plots, xmin=-2, xmax=0, ymin=-1, ymax=1, xscale='M', yscale='M', show=True)
32fig2html(fig_PZ, 600)

The root locus plot is shown in Fig. 379. The root loci start at the poles of the loop gain. The endpoints for \(A_{0}=10^{6}\) are the pole positions of the servo function. Since there are no poles or zeros present in the asymptotic gain, the poles of the gain equal those of the servo function. The poles of the loop gain, as well as the DC value of the loop gain, have been designed such that the system has an MFM response. The poles of the gain are in Butterworth positions (see Fig. 348).

Lines 33-36 of the script displays the DC value and the poles and zeros of the gain in the PYTHON command window. Lines 37-47 print the phase margin and the frequency at which the magnitude of loop gain equals unity.

 1# Calculate the phase margin
 2i1.setDataType('laplace')
 3i1.setGainType('loopgain')
 4L = i1.execute()
 5loopGain = L.laplace
 6pmResults = phaseMargin(loopGain)
 7
 8uF = pmResults[1]
 9pM = pmResults[0]
10
11print('Loop gain: phase margin = {:3.2f}deg at f = {:8.2e}Hz'.format(pM, uF))

The results are shown below.

 1DC value of gain:  1.00e+0
 2
 3Poles of gain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -7.07e+5        -7.07e+5         1.00e+6   7.07e-1
 8 1        -7.07e+5         7.07e+5         1.00e+6   7.07e-1
 9
10Found no zeros.
11
12Loop gain: phase margin = 65.53deg at f = 6.44e+05Hz

Lines 49-61 generate the Bode plots of the asymptotic gain, the loop gain, the servo function and the gain of this voltage follower. The dB magnitude plots of these transfer functions are shown in Fig. 380.

../_images/BodeVfollower-2.svg

Fig. 380 SLiCAP simulation result.#

 1# Generate Bode plots
 2htmlPage('Bode plots');
 3i1.setGainType('servo');
 4S = i1.execute();
 5i1.setGainType('gain');
 6G = i1.execute();
 7i1.setGainType('asymptotic');
 8A = i1.execute();
 9plots = [A, L, S, G];
10BodeMag  = plotSweep('dBmag_' + fileName, fileName, plots, 1e4, 1e8, 200, funcType='dBmag',  show=True)
11BodePhas = plotSweep('Phase_' + fileName, fileName, plots, 1e4, 1e8, 200, funcType='phase', show=True)
12fig2html(BodeMag, 800)
13fig2html(BodePhas,800)

Since the asymptotic gain equals unity, and the direct transfer equals zero, the gain equals the servo function. The curve for the servo function has become invisible, because it has been overwritten by the gain curve.

The magnitude characteristic of the gain shows a second order MFM low-pass behavior with a \(-3\)dB frequency at \(1\)MHz. The loop gain equals \(0\)dB at \(640\)kHz. Please notice that negative feedback requires a negative midband frequency value of the loop gain. For this reason the phase plot of the loop gain starts at \(180\) degrees! The phase margin is \(66\) degrees.

../_images/colorCode.svg

Loop gain with two poles and one phantom zero#

The sum of the poles of the servo function can be changed by adding one zero to the loop gain. In doing so, the expression for the loop gain ((157)) changes to

(161)#\[L(s)=L_{MB}\frac{1-s/z}{\left( 1-s/p_{1}\right) \left( 1-s/p_{2}\right) }. \label{ex-dualPolePlusZero}\]

Let \(p_{a}\) and \(p_{b}\) be the poles of the servo function, thus allowing their sum to be found from the coefficient of \(s\) in the denominator of the servo function. Substitution of ((161)) in ((108)) shows that the sum of the poles of the servo function has been changed by the zero:

\[p_{a}+p_{b}=p_{1}+p_{2}-\frac{p_{1}p_{2}}{z}L_{MB}.\]

With the aid of ((156)), it follows that an MFM characteristic is obtained if

\[-\left( p_{1}+p_{2}\right) +\frac{p_{1}p_{2}}{z}L_{MB}=\sqrt{2}\omega_{h}.\]

With \(-L_{MB}>1,\) a second order MFM characteristic can be established if

(162)#\[z=-\frac{\omega_{h}^{2}}{\sqrt{2}\omega_{h}+p_{1}+p_{2}}. \label{ex-phantomz-2nd-order}\]

Hence, a second order feedback system can be given an MFM characteristic with one negative phantom zero if

(163)#\[-\left( p_{1}+p_{2}\right) <\sqrt{2}\omega_{h}, \label{eq-sumOfPoles2compConditions}\]

where \(\omega_{h}=\sqrt{\left\vert \left( 1-L_{MB}\right) p_{1} p_{2}\right\vert }\).

Example

Fig. 381 shows a voltage amplifier with a controller with two poles and one zero in the transfer of the feedback network. Since the ideal gain of this circuit is the reciprocal value of the transfer of the feedback network, this zero establishes a pole in the ideal gain. The transfer of the feedback network is also part of the loop gain. Thus, the zero in the feedback circuit is also a zero of the loop gain. Hence, it is a phantom zero, and it is not observable in the gain of the amplifier. With E1 the as loop gain reference variable, we are able to evaluate the asymptotic gain and the loop gain.

The asymptotic gain \(A_{f\infty}\) equals

\[A_{f\infty}=\frac{1}{A(1-s/z_{1})}.\]

The loop gain\ \(L(s)\) equals

\[L(s)=\frac{-A_{0}A(1-s/z_{1})}{(1-s/p_{1})(1-s/p_{2})}.\]

Let us assume the following numerical values:

\[\begin{split}p_{1} & =-1~\text{Hz,}\\ p_{2} & =-100~\text{Hz,}\nonumber\\ A_{0} & =10^{6}~\text{[-],}\nonumber\\ A & =\frac{1}{100}~\text{[-].}\nonumber\end{split}\]

The achievable second order bandwidth \(B_{2}\) equals

\[\sqrt{1\cdot100\cdot\frac{1}{100}\cdot10^{6}}=1000~\text{[Hz].}\]

The sum of the poles satisfies ((163)), so according to ((162)), MFM compensation can be achieved with a phantom zero which needs to be located at

\[z=-\frac{10^{6}}{1000\sqrt{2}-101}=-761.49~\text{[Hz].}\]

The netlist of this circuit is:

 1"Root Locus 2nd order voltage amplifier"
 2* File: RLvAmp-2.cir
 3* SLiCAP netlist file
 4V1 1 0 {V_s}
 5R1 1 2 {R_s}
 6E1 3 0 2 4 {A_0/(1-s/p_1)/(1-s/p_2)}
 7E2 4 0 3 0 {A*(1-s/z_1)}
 8R2 3 0 {R_ell}
 9* For pole-zero analysis all parameters must have a numeric value
10.param A_0 = 1M A = 10m
11+ p_1 = {-2*pi} 
12+ p_2 = {-2*pi*100} 
13+ z_1 = {-2*pi*761.49}
14+ R_ell = 1 R_s=1 V_s=1
15.end

The script for plotting the root locus is:

 1#!/usr/bin/env python3
 2# -*- coding: utf-8 -*-
 3# File: RLvAmp_2.py
 4
 5from SLiCAP import *
 6
 7fileName = 'RLvAmp_2'
 8prj = initProject(fileName) 
 9i1 = instruction()        
10i1.setCircuit(fileName + '.cir')
11i1.setSource('V1')              # Signal source is V1
12i1.setDetector('V_3')           # Voltage detector at node (3)
13i1.setLGref('E1')               # Loop gain reference variable = E1
14i1.setGainType('servo')         # Source to load transfer
15i1.setSimType('numeric')        # Numeric simulation
16i1.setDataType('poles')         # Calculate the poles
17i1.setStepVar('A_0')            # Step the DC controller gain for RL plot
18i1.setStepMethod('lin')
19i1.setStepStart(0)
20i1.setStepStop('1M')
21i1.setStepNum(100)
22i1.stepOn()
23RL = i1.execute()
24i1.stepOff()
25i1.setGainType('gain')
26polesGain = i1.execute()
27i1.setGainType('loopgain')
28polesLoopGain = i1.execute()
29i1.setDataType('zeros')
30zerosLoopGain = i1.execute()
31plots = [RL, zerosLoopGain, polesLoopGain, polesGain]
32htmlPage('Root locus')
33fig_PZ = plotPZ('RL_' + fileName, fileName, plots, xmin=-2, xmax=0, ymin=-1, ymax=1, xscale='k', yscale='k', show=True)
34fig2html(fig_PZ, 600)

The root locus plot is shown in Fig. 382. The root loci start at the poles of the loop gain. The endpoints for \(A_{0}=10^{6}\) are the pole positions of the servo function. The zero in the loop gain coincides with the pole in the asymptotic gain. Its effect on the root locus can clearly be observed.

Lines 35-38 of the above script display the DC value, the poles, and the zeros of the gain in the PYTHON command window. Lines 39-49 print the phase margin and the frequency at which the magnitude of the loop gain equals unity.

 1# Calculate the phase margin
 2i1.setDataType('laplace')
 3i1.setGainType('loopgain')
 4L = i1.execute()
 5loopGain = L.laplace
 6pmResults = phaseMargin(loopGain)
 7
 8uF = pmResults[1]
 9pM = pmResults[0]
10
11print('Loop gain: phase margin = {:3.2f}deg at f = {:8.2e}Hz'.format(pM, uF))

The results are shown in the PYTHON command window. According to our expectations, the two poles are in MFM positions and the low-pass cut-off frequency is found at \(1\)kHz.

 1DC value of gain:  1.00e+2
 2
 3Poles of gain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -7.07e+2        -7.07e+2         1.00e+3   7.07e-1
 8 1        -7.07e+2         7.07e+2         1.00e+3   7.07e-1
 9
10Found no zeros.
11
12Loop gain: phase margin = 66.61deg at f = 1.47e+03Hz

Lines 51-63 create the Bode plots of the asymptotic gain, the loop gain, the servo function, and the gain of this voltage follower:

 1# Generate Bode plots
 2htmlPage('Bode plots');
 3i1.setGainType('servo');
 4S = i1.execute();
 5i1.setGainType('gain');
 6G = i1.execute();
 7i1.setGainType('asymptotic');
 8A = i1.execute();
 9plots = [A, L, S, G];
10BodeMag  = plotSweep('dBmag_' + fileName, fileName, plots, 1, 1e4, 200, funcType='dBmag',  show=True)
11BodePhas = plotSweep('Phase_' + fileName, fileName, plots, 1, 1e4, 200, funcType='phase', show=True)
12fig2html(BodeMag, 800)
13fig2html(BodePhas,800)

The dB magnitude plots and phase of these transfer functions is shown in Fig. 383. The phantom zero can clearly be observed as a zero in the loop gain and a pole in the asymptotic gain. Its influence in the servo function can also be observed by an increase of the magnitude around \(1\)kHz. The gain has an all-pole MFM characteristic. Please notice that negative feedback requires a negative midband frequency value of the loop gain. For this reason, the phase plot of the loop gain starts at \(180\) degrees! The plot clearly shows the influence of the phantom zero on the phase margin. The phantom zero shifts the unity-gain frequency of the loop gain upwards and increases the phase margin. The MFM-compensated amplifier has a phase margin of \(67\) degrees.

../_images/BodeVamplifier-2.svg

Fig. 383 SLiCAP simulation result.#

../_images/colorCode.svg

Third order compensation#

The dynamic part of a third order MFM servo function \(S_{3}(s)\) has the form:

(164)#\[S_{3}(s)=\frac{1}{1+2s/\omega_{h}+2s^{2}/\omega_{h}^{2}+s^{3}/\omega_{h}^{3}}, \label{ex-MFM3}\]

in which \(\omega_{h}\) is the \(-3\) dB low-pass cut-off frequency.

Loop gain with three poles#

We will consider an all-pole loop gain with three poles \(p_{1},\) \(p_{2},\) and \(p_{3}\):

(165)#\[L(s)=L_{MB}\frac{1}{\left( 1-s/p_{1}\right) \left( 1-s/p_{2}\right) (1-s/p_{3})}. \label{ex-triplePoleLoopgain}\]

After substitution of ((165)) in ((108)), we obtain the expression for the servo function as

\[S_{3}(s)=\frac{-L_{MB}}{1-L_{MB}}\frac{1}{1-s\frac{p_{1}p_{2}+p_{1}p_{3} +p_{2}p_{3}}{\left( 1-L_{MB}\right) p_{1}p_{2}p_{3}}+s^{2}\frac{p_{1} +p_{2}+p_{3}}{\left( 1-L_{MB}\right) p_{1}p_{2}p_{3}}-s^{3}\frac{1}{\left( 1-L_{MB}\right) p_{1}p_{2}p_{3}}}\]

With the aid of ((164)), we find that all the poles are in MFM positions if:

(166)#\[\begin{split}p_{1}p_{2}+p_{1}p_{3}+p_{2}p_{3} & =2\omega_{h}^{2} \label{eq-3orderMFMcondNoComp-1}\\ & \text{and}\nonumber\\ p_{1}+p_{2}+p_{3} & =-2\omega_{h}. \label{eq-3orderMFMcondNoComp-2}\end{split}\]

in which \(\omega_{h}=\sqrt[3]{\left\vert \left( 1-L_{MB}\right) p_{1} p_{2}p_{3}\right\vert }\).

Example

A third order feedback system with poles \(p_{1},p_{2}\) and \(p_{3}\) obtains an MFM response without compensation if the conditions from ((166)) and (eq-3orderMFMcondNoComp-2) are satisfied. If we add the condition that the poles of the loop gain should not have a positive real part, we find only one valid solution. It has one pole in the origin \(p_{1}=0\) and two complex poles \(p_{2,3}=-\omega_{n}\pm j\omega _{n}\). The loop gain can be written as

\[L(s)=\frac{-\omega_{h}^{3}}{s\left( s^{2}+2s\omega_{h}+2\omega_{h} ^{2}\right) }.\]

This will be demonstrated for the voltage follower from Fig. 384. The voltage follower described in the SLICAP netlist below has been given an MFM bandwidth of \(1\)MHz:

 1" Root Locus 3nd order voltage follower"
 2* File: RLvFollower-3.cir
 3* SLiCAP netlist file
 4V1 1 0 {V_s}
 5R1 1 2 {R_s}
 6E1 3 0 2 3 {8*pi^3*f_h^2*A_0/s/(s^2+s*4*pi*f_h+8*pi^2*f_h^2)}
 7R2 3 0 {R_ell}
 8* For pole-zero analysis all parameters must have a numeric value
 9.param f_h = 1M R_ell=1 R_s=1 V_s=1 A_0=1M
10.end

The script RLvFollower_3.py for plotting the root locus is similar to RLvFollower_2.py. It only uses the circuit from Fig. 384 instead of that from Fig. 380.

The root locus plot is shown in Fig. 385. The root loci start at the poles of the loop gain. The endpoints for \(A_{0}=10^{6}\) are the pole positions of the servo function. Since there are no poles or zeros present in the asymptotic gain, the poles of the gain equal those of the servo function. The poles of the loop gain, as well as the loop gain poles product have been designed such that the system has a 3-rd order MFM response. The poles of the gain are in Butterworth positions (see Fig. 348).

Below is the output generated by RLvFollower_3.py as it is displayed in the PYTHON command window. This confirms our expectations.

 1DC value of gain:  1.00e+0
 2
 3Poles of gain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -5.00e+5        -8.66e+5         1.00e+6   1.00e+0
 8 1        -5.00e+5         8.66e+5         1.00e+6   1.00e+0
 9 2        -1.00e+6        0.00e+00         1.00e+6
10
11Found no zeros.
12
13Loop gain: phase margin = 60.49deg at f = 4.96e+05Hz

The dB magnitude plots and the phase plots of the transfer functions of the asymptotic gain model are shown in Fig. 386. Since the asymptotic gain equals unity, and the direct transfer equals zero, the gain equals the servo function. The curve for the servo function has become invisible, because it has been overwritten by the gain curve. Please notice that negative feedback requires a negative midband frequency value of the loop gain. For this reason the phase plot of the loop gain with a pole in the origin starts at \(90\) degrees! The phase margin of the loop gain is \(60\)deg and the unity-gain frequency of the loop gain is \(500\)kHz.

../_images/BodeVfollower-3.svg

Fig. 386 SLiCAP simulation result.#

../_images/colorCode.svg

Loop gain with three poles and one phantom zero#

We will now investigate the conditions under which a third-order system can be compensated with one phantom zero. A loop transfer function with one zero \(z_{1}\) and three poles \(p_{1},\) \(p_{2},\) and \(p_{3}\) can be written as

(167)#\[L(s)=L_{MB}\frac{1-s/z_{1}}{\left( 1-s/p_{1}\right) \left( 1-s/p_{2} \right) (1-s/p_{3})}. \label{ex-triplePole-OneZeroLoopgain}\]

After substitution of ((167)) in ((108)), it can be seen that the coefficient of \(s^{2}\) in the denominator depends on \(z_{1}\). A third-order MFM response for the servo function now requires the following two conditions to be satisfied:

\[\begin{split}p_{1}+p_{2}+p_{3} & =-2\omega_{h},\\ p_{1}p_{2}+p_{1}p_{3}+p_{2}p_{3}-\frac{L_{MB}p_{1}p_{2}p_{3}}{z_{1}} & =2\omega_{h}^{2}.\end{split}\]

Assuming \(-L_{MB}>1,\) a third-order MFM characteristic can be accomplished if:

(168)#\[z_{1}=\frac{\omega_{h}^{3}}{p_{1}p_{2}+p_{1}p_{3}+p_{2}p_{3}-2\omega_{h}^{2}}. \label{eq-3orderOneZeroMFM}\]

From this, we see that a third-order system can be given an MFM characteristic with one negative real phantom zero if

(169)#\[\begin{split}p_{1}p_{2}+p_{1}p_{3}+p_{2}p_{3} & <2\omega_{h}^{2} \label{eq-3orderMFMsingleZeroComp-1}\\ & \text{and if}\nonumber\\ p_{1}+p_{2}+p_{3} & =-2\omega_{h} \label{eq-3orderMFMsingleZeroComp-2}\end{split}\]

in which \(\omega_{h}=\sqrt[3]{\left\vert \left( 1-L_{MB}\right) p_{1} p_{2}p_{3}\right\vert }\).

Example

Fig. 387 shows the circuit of a third-order voltage amplifier that has been compensated with one phantom zero. The circuit is equivalent to the one from Fig. 381, only the expressions for the voltage-controlled voltage sources have been changed. The pole positions have been chosen to comply with ((169)) and (eq-3orderMFMsingleZeroComp-2):

\[p_{1}=-10~\text{Hz, }p_{2}=-590~\text{Hz, }p_{3}=-1400~\text{Hz.}\]

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

\[L_{DC}=-A_{0}A=-120,\]

from which we obtain an MFM bandwidth \(f_{h}\):

\[f_{h}=\sqrt[3]{121\cdot10\cdot590\cdot1400}=1000.\]

The sum of the poles equals \(-2000\), which is \(-2f_{h}\). This satisfies (eq-3orderMFMsingleZeroComp-2). The sum of the products of two poles is less than two times the squared bandwidth. This satisfies condition ((169)). The amplifier can thus obtain an MFM characteristic by inserting one negative real phantom zero. The position of the zero follows from ((168)):

\[z_{1}=\frac{10^{9}}{10\cdot590+10\cdot1400+590\cdot1400-2\cdot10^{6} }=-866.48 \text{Hz.}\]

The netlist of this circuit is shown below:

 1"Root Locus 3nd order voltage amplifier, one zero"
 2* File: RLvAmp-3_1.cir
 3* SLiCAP netlist file
 4V1 1 0 {V_s}
 5R1 1 2 {R_s}
 6E1 3 0 2 4 {A_0/(1-s/p_1)/(1-s/p_2)/(1-s/p_3)}
 7E2 4 0 3 0 {A*(1-s/z_1)}
 8R2 3 0 {R_ell}
 9* For pole-zero analysis all parameters must have a numeric value
10.param A_0 = 12k A = 10m
11+ p_1 = {-2*pi*10} 
12+ p_2 = {-2*pi*590} 
13+ p_3 = {-2*pi*1400} 
14+ z_1 = {-2*pi*866.48}
15+ R_ell = 1 R_s=1 V_s=1
16.end

The script RLvAmp_3_1.py is similar to RLvAmp_2.py. It plots the root locus, but uses the circuit from Fig. 387 instead of that from Fig. 381.

The root locus plot generated by this script is shown in Fig. 388. It clearly shows a third-order response with the poles in MFM positions. The phantom zero in the loop gain is not observable in the gain, because it coincides with a pole in the asymptotic gain.

Below is the output generated by the script RLvAmp_3_1.py as it is displayed in the PYTHON command window. It confirms our expectations.

 1Poles of gain:
 2
 3 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 4--  --------------  --------------  --------------  --------
 5 0        -4.95e+2        -8.63e+2         9.95e+2   1.00e+0
 6 1        -4.95e+2         8.63e+2         9.95e+2   1.00e+0
 7 2        -1.01e+3        0.00e+00         1.01e+3
 8
 9Found no zeros.
10
11Loop gain: phase margin = 49.24deg at f = 8.29e+02Hz

The phase margin of this MFM-compensated third-order amplifier is \(49\) degrees.

The dB magnitude plots and the phase plots of the transfer functions of the asymptotic gain model are shown in Fig. 389. Please notice that negative feedback requires a negative midband frequency value of the loop gain. For this reason, the phase plot of the loop gain starts at \(180\) degrees!

../_images/colorCode.svg

Loop gain with three poles and two phantom zeros#

A loop transfer function with three poles \(p_{1},\) \(p_{2},\) and \(p_{3}\) and two zeros \(z_{1}\) and \(z_{2}\) can be written as

\[L(s)=L_{MB}\frac{\left( 1-s/z_{1}\right) \left( 1-s/z_{2}\right) }{\left( 1-s/p_{1}\right) \left( 1-s/p_{2}\right) (1-s/p_{3})}.\]

From this expression, we can calculate the frequency-dependent part of the servo function. We then obtain expressions for the first order and the second order coefficients of \(s\) of the denominator of the servo function. We may then conclude that the poles will be in MFM positions if

(170)#\[\begin{split}p_{1}p_{2}+p_{1}p_{3}+p_{2}p_{3}-L_{MB}p_{1}p_{2}p_{3}\left( \frac{1}{z_{1} }+\frac{1}{z_{2}}\right) & =2\omega_{h}^{2},\label{eq-prodZeros}\\ p_{1}+p_{2}+p_{3}-\frac{p_{1}p_{2}p_{3}L_{MB}}{z_{1}z_{2}} & =-2\omega_{h}. \label{eq-sumZeros}\end{split}\]

From ((170)) and ((170)), we obtain values for the product and the sum of the phantom zeros:

(171)#\[\begin{split}z_{1}z_{2} & =\frac{\omega_{h}^{3}}{p_{1}+p_{2}+p_{3}+2\omega_{h} },\label{eq-3rdOrderCompProdZeros}\\ z_{1}+z_{2} & =\frac{p_{1}p_{2}+p_{1}p_{3}+p_{2}p_{3}-2\omega_{h}^{2}}{p_{1}+p_{2}+p_{3}+2\omega_{h}}. \label{eq-3rdOrderCompSumZeros}\end{split}\]

With two phantom zeros that have a negative real part, a third order MFM transfer can be realized if

(172)#\[\begin{split}p_{1}p_{2}+p_{1}p_{3}+p_{2}p_{3} & <2\omega_{h}^{2} ,\label{eq-3orderMFM2zerosComp-1}\\ -\left( p_{1}+p_{2}+p_{3}\right) & <2\omega_{h}, \label{eq-3orderMFM2zerosComp-2}\end{split}\]

in which \(\omega_{h}=\sqrt[3]{\left\vert \left( 1-L_{MB}\right) p_{1} p_{2}p_{3}\right\vert }\).

../_images/BodeVamplifier-3-1.svg

Fig. 389 SLiCAP simulation result.#

The phantom zeros can then be calculated from (170) and eq-sumZeros using

(173)#\[z_{1,2}=\frac{1}{2}\left( z_{1}+z_{2}\right) \pm\frac{1}{2}\sqrt{\left( z_{1}+z_{2}\right) ^{2}-4z_{1}z_{2}}. \label{eq-3rdOrderZerosFromSumProd}\]

In the following example, we will demonstrate the compensation of a third order system with two phantom zeros.

Example

Fig. 390 shows the circuit of a third order voltage amplifier that has been compensated with two phantom zeros. The circuit is equivalent to the one from Fig. 381, only the expressions for the voltage-controlled voltage sources have been changed. The pole positions have been chosen to comply with ((172)) and (eq-3orderMFM2zerosComp-2):

\[p_{1}=-20~\text{Hz, }p_{2}=-50~\text{Hz, }p_{3}=-1250~\text{Hz.}\]

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

\[L_{DC}=-A_{0}A=-799,\]

from which we obtain an MFM bandwidth \(f_{h}\):

\[f_{h}=\sqrt[3]{800\cdot20\cdot50\cdot1250}=1000~\text{Hz.}\]

The sum of the poles equals \(-1320\)Hz, which satisfies (eq-3orderMFMsingleZeroComp-2). The sum of the products of two poles equals \(88.5\times10^{3}\), which satisfies condition ((169)). The amplifier can thus be given an MFM characteristic by inserting two phantom zeros that have a negative real part. The product of the zeros follows from ((171)):

\[z_{1}z_{2}=\frac{1000^{3}}{-1320+2\cdot1000}=1.\, 47\times 10^{6}~\text{Hz}^{\text{2}}.\]

The sum of the zeros follows from (eq-3rdOrderCompSumZeros):

\[z_{1}+z_{2}=\frac{88.5\times10^{3}-2\cdot1000^{2}}{-1320+2\cdot1000} =-2811~\text{Hz.}\]

With the aid of ((173)), we obtain

\[\begin{split}z_{1} & =-695~\text{Hz,}\\ z_{2} & =-2116~\text{Hz.}\end{split}\]

The netlist of this circuit is shown below.

 1"Root Locus 3nd order voltage amplifier, two zeros"
 2* File: RLvAmp-3_2.cir
 3* SLiCAP netlist file
 4V1 1 0 {V_s}
 5R1 1 2 {R_s}
 6E1 3 0 2 4 {A_0/(1-s/p_1)/(1-s/p_2)/(1-s/p_3)}
 7E2 4 0 3 0 {A*(1-s/z_1)*(1-s/z_2)}
 8R2 3 0 {R_ell}
 9* For pole-zero analysis all parameters must have a numeric value
10.param A_0 = 1M A = 799u
11+ p_1 = {-2*pi*20} 
12+ p_2 = {-2*pi*50} 
13+ p_3 = {-2*pi*1250} 
14+ z_1 = {-2*pi*(695)}
15+ z_2 = {-2*pi*(2116)}
16+ R_ell = 1 R_s=1 V_s=1
17.end

The script RLvAmp_3_2.py for plotting the root locus is similar to RLvAmp_2.py. It only uses the circuit from Fig. 390 rather than that from Fig. 387.

The root locus plot generated by this script is shown in Fig. 391. It clearly shows a third order response with the poles in MFM positions. The phantom zeros in the loop gain are not observable in the gain, because they coincide with poles in the asymptotic gain.

Below is the output generated by the scrip as it is displayed in the PYTHON command window.

 1DC value of gain:  1.25e+3
 2
 3Poles of gain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -4.99e+2        -8.66e+2         9.99e+2   1.00e+0
 8 1        -4.99e+2         8.66e+2         9.99e+2   1.00e+0
 9 2        -1.00e+3        0.00e+00         1.00e+3
10
11Found no zeros.
12
13Loop gain: phase margin = 47.98deg at f = 1.13e+03Hz

The bandwidth, as well as the response type, are as expected.

The dB magnitude plots of the transfer functions of the asymptotic gain model are shown in Fig. 392. Please notice that negative feedback requires a negative midband frequency value of the loop gain. For this reason, the phase plot of the loop gain starts at \(180\) degrees!

../_images/BodeVamplifier-3-2.svg

Fig. 392 SLiCAP simulation result.#

../_images/colorCode.svg

In the following example, we will demonstrate the frequency compensation in the case in which the loop gain has three poles in the origin. This may be of practical interest for systems that have the poles of the loop gain relatively close to the origin. The example shows that MFM compensation of such systems requires two complex conjugated phantom zeros with a quality factor of \(\frac{1}{2}\sqrt{2}\) and a frequency of \(\frac{1}{2}\sqrt{2}f_{h}\), where \(f_{h}\) is the \(-3\)dB MFM cut-off frequency in Hz.

Example

Let us now consider a loop gain \(L(s)\) with three poles in the origin. This loop transfer function can be written as

\[L(s)=\frac{1}{a_{3}s^{3}},\]

in which \(a_{3}<0\) (negative feedback). The expression for the servo function is then obtained as

\[\frac{-L(s)}{1-L(s)}=\frac{1}{1-a_{3}s^{3}}.\]

The MFM low-pass cut-off frequency \(\omega_{h}\) is then found as

\[\omega_{h}=\sqrt[3]{\left\vert \frac{1}{a_{3}}\right\vert }.\]

Both the sum of the poles and the sum of the products of two poles are zero. Hence, conditions ((172)) and (eq-3orderMFM2zerosComp-2) have been met and an MFM low-pass cut-off of the servo function can be established with two phantom zeros. With the aid of ((172)), (eq-3orderMFM2zerosComp-2) and ((173)), we find:

\[z_{1},z_{2}=\frac{1}{2}\omega_{h}\pm\frac{1}{2}j\omega_{h}.\]
../_images/colorCode.svg

Implementation of phantom zeros#

In the previous sections, we have studied the conditions under which second and third order systems can be compensated with the aid of phantom zeros. We also found means to determine their values. Although for higher order systems, the procedure is similar, we will confine ourselves to second order and third order systems. We will discuss the design of the frequency response of higher order amplifiers at a later stage.

The examples of amplifiers compensated with phantom zeros, that we discussed in the previous sections, were primarily intended to illustrate the concept of phantom zero compensation. The presented implementations of phantom zeros in the transfer of the controlled sources in the feedback path were conceptually correct, but far from practical. These zeros would result in an infinite gain of those controlled sources for \(j\omega\rightarrow\infty\), which is non-physical.

In this section, we will discuss the implementation of phantom zeros in practical circuits. We will study the way in which phantom zeros can be realized and investigate possible side effects that may limit their effectiveness.

Phantom zero locations#

By definition, phantom zeros are zeros in the loop gain that coincide with poles in the asymptotic gain. If we have selected the loop gain reference variable properly, the asymptotic gain equals the ideal gain. The ideal gain has been defined as the source-load transfer of the feedback amplifier in which the controllers have been replaced with nullors. From this, we obtain an important design conclusion:

Definition

Poles in the asymptotic gain can only be established in circuitry around the nullor(s). Hence, the internal circuitry of the controller is not a place to search for implementation of phantom zeros!

The circuitry around the nullor comprises:

  • The feedback network

    A pole in the asymptotic gain can be realized by inserting a zero into the transfer of the feedback network. This has already been illustrated in the examples in the previous section.

  • The signal source

    Insertion of a pole into the signal transfer from the signal source to the input of the amplifier causes a pole in the asymptotic gain. By doing so, we insert a low-pass filter between the signal source and the input of the amplifier.

  • The load

    Similarly as above, insertion of a pole into the transfer from the output of the amplifier to the load also causes a pole in the asymptotic gain.

Phantom zero effectiveness#

After we have realized the poles in the asymptotic gain, we need to investigate whether they also appear as effective zeros in the loop gain. We will call a phantom zero effective if it does what it should do: bring the dominant poles of the servo function into their desired positions. The effectiveness of phantom zeros may strongly be reduced if:

  • The insertion of the phantom zero changes the original pole positions such that the bandwidth is reduced.

  • The insertion of a phantom zero introduces a new dominant pole.

We will see that the insertion of phantom zeros is never free of such side effects, but in many cases, these effects may be kept within acceptable limits.

Phantom zeros in the feedback network#

Zeros in the feedback network can be established as described in Chapter Symbolic estimation of poles and zeros. The basic techniques are:

  1. Change the feedback network in such a way that its transfer becomes zero at the (complex) frequency of the zero. In passive feedback networks, such as voltage attenuators, current attenuators, current-to-voltage conversion impedances and voltage-to-current conversion admittances, this works as follows:

    1. Create zero admittance (an open circuit) at the (complex) frequency of the zero in a branch of the feedback network that appears in series with the signal path. This is done by placing an admittance in parallel with this branch whose value at the (complex) frequency of the zero is opposite to the value of the admittance of the original branch.

    2. Create zero impedance (a short) at the (complex) frequency of the zero in a branch of the feedback network that appears in parallel with the signal path. This is done by placing an impedance in series with that branch whose value at the (complex) frequency of the zero is opposite to the value of the impedance of the original branch.

  2. Add a second feedback path that cancels the transfer of the original one at the (complex) frequency of the zero.

In the following example, we will demonstrate the first method.

Example

Fig. 393A shows a passive voltage attenuator that has been used as a feedback network in the voltage amplifier from Fig. 393B. The resistor R1 appears in series with the signal path, while R2 appears in parallel with the signal path.

Now, let us assume that a phantom zero at the complex frequency \(s=z_{1}\) has to be implemented. As described above, we then need to create a zero in the transfer of the feedback network at this frequency. We have two possibilities:

  1. Place an admittance \(Y_{p}(s)\) in parallel with R1 that cancels the admittance of R1 at \(s=z_{1}\). After doing so, the admittance \(Y_{tot}(s)\) of the modified branch is obtained as

    \[Y_{tot}(s)=Y_{p}(s)+\frac{1}{R_{a}}.\]

    This function has a unique negative real solution if \(Y_{p}(s)\) is capacitive. With a capacitance \(C_{phz},\) we have \(Y_{p}(s)=sC_{phz}\) and obtain

    \[Y_{tot}(s)=sC_{phz}+\frac{1}{R_{a}}.\]

    Hence, we have created a negative real zero \(z_{1}\), that is the solution of \(Y_{tot}(s)=0\):

    \[z_{1}=-\frac{1}{R_{a}C_{phz}}.\]

    Fig. 394 shows the modified voltage attenuator.

  2. Place an impedance \(Z_{se}(s)\) in series with R2 that cancels the resistance of R2 at \(s=z_{1}\). After doing so,\ the impedance \(Z_{tot}(s)\) of the modified branch is obtained as

    \[Z_{tot}(s)=Z_{se}(s)+R_{b}.\]

    This function has a unique negative real solution if \(Z_{se}(s)\) is inductive. With an inductance \(L_{phz},\) we have \(Z_{se}(s)=sL_{phz}\) and obtain

    \[Z_{tot}(s)=sL_{phz}+R_{b}.\]

    Hence, we have created a negative real zero \(z_{1}\) that is the solution of \(Z_{tot}(s)=0\):

    \[z_{1}=-\frac{R_{b}}{L_{phz}}.\]

    Fig. 395 shows the modified voltage attenuator.

../_images/colorCode.svg

The example above gives a formal approach to the design of zeros in the transfer of the feedback network. We have not yet studied any side effects of such implementations, nor have we discussed the effectiveness of the phantom zeros. This will be done at a later stage. At this stage, we may draw the following conclusions for implementation of zeros in the transfer of feedback networks:

  1. Branches in series with the signal path should be changed in such a way that the order of \(s\) in the admittance is increased and zero admittance is achieved at the (complex) frequency of the phantom zero:

    1. If a series branch behaves resistively at the frequency of the phantom zero, a capacitive branch placed in parallel will cause a negative real zero in the transfer of the feedback network (see Fig. 396A).

    2. If a series branch behaves inductively at the frequency of the phantom zero, a resistive branch placed in parallel will cause a zero and a capacitive branch placed in parallel will cause two (complex) zeros in the transfer of the feedback network (see Fig. 396B).

    3. If a series branch behaves capacitively at the frequency of the phantom zero, then there is no means for creating a zero in this branch (see Fig. 396C).

  2. Branches in parallel with the signal path should be changed in such a way that the order of \(s\) in the impedance is increased and zero impedance is achieved at the (complex) frequency of the phantom zero:

    ../_images/phzParallelBranch.svg

    Fig. 397 Implementation of zeros in parallel branch impedances.#

    1. If a parallel branch behaves resistively at the frequency of the phantom zero, an inductive branch placed in series will cause a negative real zero in the transfer of the feedback network (see Fig. 397A).

    2. If a parallel branch behaves capacitively at the frequency of the phantom zero, a resistive branch placed in series will cause a negative real zero and an inductive branch placed in series will cause two (complex) zeros in the transfer of the feedback network (see Fig. 397B).

    3. If a parallel branch behaves inductively at the frequency of the phantom zero, then there is no means for creating a zero in this branch (see Fig. 397C).

In Fig. 398, the above method has been applied for implementing phantom zeros in the elementary single-loop resistive feedback amplifiers. The zeros in the transfers of the feedback networks cause poles in the asymptotic gain and zeros in the loop gain.

../_images/phantom-zero-fb-netw.svg

Fig. 398 Realization of phantom zeros in the feedback network of the basic single-loop resistive feedback amplifier configurations. A. Two phantom zeros in the voltage amplifier B. One phantom zero in the transconductance amplifier C. One phantom zero in the transresistance amplifier D. Two phantom zeros in the current amplifier#

Effectiveness of phantom zeros in the feedback network#

A phantom zero in the feedback network is effective , if the branch of the feedback network in which the zero will be implemented causes a significant attenuation in the loop gain at the frequency of the zero. The zero will then increase the loop gain\ by reducing this attenuation for frequencies above the frequency of the zero, while it causes loop gain to become zero at the (complex) frequency of the zero. This will be elucidated with the aid of Fig. 399.

../_images/phzEffectiveness.svg

Fig. 399 Left: small-signal diagram of a passive-feedback voltage amplifier showing the signal source, the load, the feedback network and the controller. A phantom zero has been implemented in the series branch of the feedback network.#

Right: the magnitude characteristic of the transfer of the feedback network. The phantom zero establishes an increase of the loop gain for frequencies above \(f_z\) and below \(f_p\). In this frequency range, it changes the order of the transfer from 0 to -1 (first order differentiating) and is called {effective}.

Fig. 399 shows the small-signal diagram of a passive-feedback voltage amplifier as well as the magnitude characteristic of the transfer of the feedback network. If we select the gain \(A_{v}\) of the voltage-controlled voltage source as the loop gain reference variable, the loop gain is proportional to the voltage transfer of the feedback network. This transfer has one zero \(z=-\frac{1}{R_{a}C_{b}},\) and one pole \(p=-\frac{R_{a}+R_{b}}{R_{a}R_{b}C_{c}}\). This figure shows that a nonzero value of \(C_{c}\) reduces the loop gain attenuation caused by the resistive voltage divider. The frequency range over which the phantom zero is effective increases with the attenuation of the voltage divider: \(\frac{f_{z}}{f_{p} }=\frac{R_{b}}{R_{a}+R_{b}}\).

In the following example, we will apply the above methods for frequency compensation of the transimpedance amplifier from example ex-transimpedanceOPA627.

Example

\label{example-transimpedancePHZcomp}

Fig. 400 shows the small-signal equivalent diagram of the transimpedance amplifier from example ex-transimpedanceOPA627 with phantom zero compensation. The implementation of the phantom zero is as discussed in Fig. 396A. Other implementations will be discussed later.

../_images/transImpSmallSignalSlicapCompensated.svg

Fig. 400 Circuit diagram of the transimpedance amplifier from example 7.ex-transimpedanceOPA627 with phantom zero compensation.#

Below is the SLICAP netlist of the circuit in which the initial value of the compensation capacitance \(C_{phz}\) has been set to zero:

 1transimpedanceCompensated
 2* file: transimpedanceCompensated.cir
 3* SLiCAP circuit file
 4I1 0 1 0
 5C1 1 0 {C_s}
 6C2 1 0 {C_d}
 7C3 1 0 {C_c/2}
 8C4 1 2 {C_phz}
 9C5 2 0 {C_ell}
10R1 1 2 {R_f}
11R2 2 0 {R_ell}
12E1 2 0 0 1 EZ value={A_0/(1+s/2/pi/16)} zo={R_o}
13.param C_d=8p C_c=7p A_0=1M R_o=55 G_B=16M 
14.param C_s=5p R_f=100k R_ell=2k C_ell=0 C_phz=0
15.end

Lines 1 to 20 of the SLICAP script calculate the DC value of the loop gain, as well as the poles and zeros:

 1#!/usr/bin/env python3
 2# -*- coding: utf-8 -*-
 3# File: transimpedanceCompensated.py
 4
 5from SLiCAP import *
 6
 7fileName = 'transimpedanceCompensated'
 8prj = initProject(fileName)
 9i1 = instruction()
10i1.setCircuit(fileName + '.cir')
11htmlPage('Phantom zero compensation')
12i1.setSource('I1')
13i1.setDetector('V_2')
14i1.setLGref('E1')
15i1.setSimType('numeric')
16i1.setGainType('loopgain')
17i1.setDataType('pz')
18result = i1.execute()
19# Display the DC value and poles and zeros of the loop gain
20listPZ(result)

The results below will be shown in the PYTHON command window (instruction in line 20):

 1DC value of loopgain: -9.73e+5
 2
 3Poles of loopgain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -1.60e+1        0.00e+00         1.60e+1
 8 1        -9.64e+4        0.00e+00         9.64e+4
 9
10Found no zeros.

This data will be used to calculate the value of the compensation capacitance. Expression ((162)) is used to calculate \(C_{phz}\). Lines 21 to 34 perform this calculation and display the value of \(C_{phz}\) in the PYTHON command window:

 1polesLG = result.poles
 2# Extract data for compensation
 3p_1 = polesLG[0]/2/sp.pi
 4p_2 = polesLG[1]/2/sp.pi
 5L_0 = result.DCvalue
 6# Calculate achievable bandwidth
 7Bw = sp.sqrt(sp.Abs((1-L_0)*p_1*p_2))
 8R_f = i1.getParValue('R_f')
 9# Calculate compensation capacitance
10C_phz = sp.N((sp.sqrt(2)*Bw+p_1+p_2)/R_f/Bw**2/2/sp.pi)
11# Pass the value to the circuit
12i1.defPar('C_phz', C_phz)
13# Print the value of C_phz
14print('C_phz = {:9.2e}F\n'.format(C_phz))

The output shows:

1C_phz =  1.73e-12F

Lines 35-37 of the script display the data of the loop gain after compensation:

1# Display the DC value and poles and zeros of the loop gain
2LGpz = i1.execute()
3listPZ(LGpz)

The output shows a third pole and one zero added to the loop gain. The zero is the intended phantom zero and the third pole arises because the compensation capacitor adds one independent capacitor voltage to the network.

 1DC value of loopgain: -9.73e+5
 2
 3Poles of loopgain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -1.60e+1        0.00e+00         1.60e+1
 8 1        -8.72e+4        0.00e+00         8.72e+4
 9 2        -1.89e+9        0.00e+00         1.89e+9
10
11Zeros of loopgain:
12
13 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
14--  --------------  --------------  --------------  --------
15 0        -9.17e+5        0.00e+00         9.17e+5

The location of the third pole can be found from network inspection.

It can be calculated from the time constant constituted by \(R_{o}\) in parallel with the series connection of \(C_{phz}\) and the parallel connection of \(C_{s} \), \(C_{d}\) and \(C_{c}/2\):

\[p_{3}\approx-\frac{C_{phz}+C_{s}+C_{d}+\frac{1}{2}C_{c}}{2\pi R_{o} C_{phz}\left( C_{s}+C_{d}+\frac{1}{2}C_{c}\right) }=-1.85\text{GHz.}\]

Lines 38-41 of the script display the properties of the gain in the PYTHON command window:

1# Display the DC value and poles and zeros of the gain
2i1.setGainType('gain')
3Gpz = i1.execute()
4listPZ(Gpz)

The result shows three poles and two zeros:

 1DC value of gain: -1.00e+5
 2
 3Poles of gain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -7.84e+5        -8.63e+5         1.17e+6   7.43e-1
 8 1        -7.84e+5         8.63e+5         1.17e+6   7.43e-1
 9 2        -1.89e+9        0.00e+00         1.89e+9
10
11Zeros of gain:
12
13 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
14--  --------------  --------------  --------------  --------
15 0         1.63e+8        0.00e+00         1.63e+8
16 1        -1.64e+8        0.00e+00         1.64e+8

The three poles are as expected: two dominant poles in approximate MFM positions and the third non-dominant pole. The two zeros are caused by the nonzero direct transfer. This can be seen from the magnitude plots of the transfer functions of the asymptotic gain model (see Fig. 401). At high frequencies the gain curve becomes equal to that of the direct transfer. This transition causes the two zeros in the gain: the order decreases from \(2\) to \(0\).

../_images/colorCode.svg

In the above example, we demonstrated the compensation of the transimpedance amplifier with the aid of a phantom zero in the feedback network. This phantom zero is very effective: it introduces a new pole which is not at all dominant. This is because before compensation, the feedback resistor introduced a large attenuation in the loop gain at the frequency of the phantom zero.

../_images/transimpedanceCompensatedBode.svg

Fig. 401 Magnitude and phase plots of the transfer functions of the asymptotic gain model for the transimpedance amplifier with phantom zero compensation.#

Phantom zeros at source and load#

A pole in the asymptotic gain can also be established by inserting a low-pass transfer between the source and the input of the amplifier or between the output of the amplifier and the load. The source impedance or the load impedance can be included in this low-pass filter. An effective phantom zero is then established if this filter also establishes a zero in the loop gain without causing a significant change of the loop gain poles product.

Phantom zeros at source or load with shunt feedback#

In the case of parallel feedback at an amplifier port, hence with voltage sensing at the output port or with current comparison at the input port (see Fig. 402), a phantom zero can be implemented by inserting an impedance \(Z_{se}\) in series with the source or load.

../_images/phantom-zero-shuntfb.svg

Fig. 402 Implementation of phantom zeros for shunt feedback#

The character of \(Z_{se}\) depends on the behavior of the source or load impedance at the frequency of the phantom zero:

  1. If, at that frequency, the source or load impedance character is inductive, there is no possible implementation for \(Z_{se}\)

  2. If, at that frequency, the source or load impedance character is resistive, \(Z_{se}\) must be inductive

  3. If, at that frequency, the source or load impedance character is capacitive, \(Z_{se}\) must be resistive. Two real or complex conjugated phantom zeros can be implemented by having both an inductive and a resistive part for \(Z_{se}.\)

The pole in the asymptotic gain causes an effective phantom zero if, at the frequency of this pole, the source\ impedance or load impedance causes a significant attenuation in the loop gain. In such cases, the insertion of \(Z_{se}\) reduces this attenuation for frequencies above the frequency of this pole. The phantom zero frequency is the complex frequency at which \(Z_{se}+Z_{s}=0\) or \(Z_{se}+Z_{\ell}=0\). In fact, at this frequency, the series connection of \(Z_{se}\) and \(Z_{s}\) or the series connection of \(Z_{se}\) and \(Z_{\ell}\) introduces a short in parallel with the signal path of the loop gain.

Phantom zeros at source or load with series feedback#

In the case of series feedback at the amplifier port, hence with current sensing at the output port or voltage comparison at the input port (as shown in Fig. 403), the phantom zero can be implemented with an impedance \(Y_{p}\) in parallel with the source or load.

../_images/phantom-zero-seriesfb.svg

Fig. 403 Phantom zero implementation at series feedback.#

The character of \(Y_{p}\) depends on the behavior of the source or load impedance at the frequency where the phantom zero must be effective:

  1. If, at that frequency, the source or load impedance character is capacitive, there is no possible implementation for \(Y_{p}\)

  2. If, at that frequency, the source or load impedance character is resistive, \(Y_{p}\) must be capacitive

  3. If, at that frequency, the source or load impedance character is inductive, \(Y_{p}\) must be resistive. Two real or complex conjugated phantom zeros can be implemented by having both an inductive and a capacitive part for \(Y_{p}.\)

The pole in the asymptotic gain causes an effective phantom zero if, at the frequency of this pole, the source\ impedance or load impedance causes a significant attenuation in the loop gain. In such cases, the insertion of \(Y_{p}\) reduces this attenuation for frequencies above the frequency of this pole. The phantom zero frequency is the complex frequency at which \(Y_{p}+1/Z_{s}=0\) or \(Y_{p}+1/Z_{\ell}=0\). In fact, at this frequency, the parallel connection of \(Y_{p}\) and \(Z_{s}\) or the series connection of \(Y_{p}\) and \(Z_{\ell}\) introduces an open circuit in series with the signal path of the loop gain.

Effectiveness of phantom zeros at source or load#

Creation of a zero in the loop with the aid of passive networks implies that an attenuation in the loop gain is reduced for frequencies above that of the zero. This has already been elucidated in Fig. 399.

Hence, if the zero is realized by inserting a resistive element, it will shift an existing pole of the loop gain towards a higher frequency at which the reduction of the attenuation, as it was caused by the zero, stops.

If the zero is realized through insertion of an inductive or capacitive element, a pole may be added to the loop transfer function at a frequency at which the reduction of the attenuation, as it was caused by the zero, stops.

If the new pole is too close to the phantom zero, the phantom zero is called ineffective.

In the following example, we will try to compensate the transimpedance amplifier from example ex-transimpedanceOPA627 with the aid of a phantom zero at the source. We will show that this phantom zero implementation is less effective than the one from the previous example.

Example

Fig. 404 shows the small-signal equivalent diagram of the transimpedance amplifier from example ex-transimpedanceOPA627 with phantom zero compensation at the source. The phantom zero has been implemented according to the concept from Fig. 402A. Since the source is capacitive, a resistor has been inserted between the source and the input of the transimpedance amplifier.

../_images/transImpSmallSignalSlicapCompensatedSource.svg

Fig. 404 Circuit diagram of the transimpedance amplifier from example 7.ex-transimpedanceOPA627 with phantom zero compensation at the source.#

Below is the SLICAP netlist of the circuit in which the initial value of the compensation capacitance \(C_{phz}\) has been set to zero:

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

Lines 1-20 of the script below list the poles and zeros of the transfer in the PYTHON command window.

 1#!/usr/bin/env python3
 2# -*- coding: utf-8 -*-
 3# File: transimpedanceCompensatedSource.py
 4
 5from SLiCAP import *
 6
 7fileName = 'transimpedanceCompensatedSource'
 8prj = initProject(fileName)
 9i1 = instruction()
10i1.setCircuit(fileName + '.cir')
11htmlPage('Phantom zero compensation')
12i1.setSource('I1')
13i1.setDetector('V_2')
14i1.setLGref('E1')
15i1.setSimType('numeric')
16i1.setGainType('loopgain')
17i1.setDataType('pz')
18result = i1.execute()
19# Display the DC value and poles and zeros of the loop gain
20listPZ(result)

Expression ((162)) is used to calculate \(R_{phz}\). Lines 21 to 34 perform this calculation and display the value of \(R_{phz}\) in the PYTHON command window:

 1polesLG = result.poles
 2# Extract data for compensation
 3p_1 = polesLG[0]/2/sp.pi
 4p_2 = polesLG[1]/2/sp.pi
 5L_0 = result.DCvalue
 6# Calculate achievable bandwidth
 7Bw = sp.sqrt(sp.Abs((1-L_0)*p_1*p_2))
 8C_s = i1.getParValue('C_s')
 9# Calculate compensation resistance
10R_phz = sp.N((sp.sqrt(2)*Bw+p_1+p_2)/C_s/Bw**2/2/sp.pi)
11# Pass the value to the circuit
12i1.defPar('R_phz', R_phz)
13# Print the value of R_phz
14print('R_phz = {:9.2e} Ohm\n'.format(R_phz))

The output shows:

 1DC value of loopgain: -9.73e+5
 2
 3Poles of loopgain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -1.60e+1        0.00e+00         1.60e+1
 8 1        -9.64e+4        0.00e+00         9.64e+4
 9
10Found no zeros.
11
12R_phz =   3.47e+4 Ohm

Lines 35-37 of the script display the data of the loop gain after compensation:

1# Display the DC value and poles and zeros of the loop gain
2LGpz = i1.execute()
3listPZ(LGpz)

The output shows a third pole and one zero added to the loop gain. The zero is the intended phantom zero and the third pole arises because the compensation resistor adds one independent capacitor voltage to the network. It removes the loop of the two capacitors from the circuit.

 1DC value of loopgain: -9.73e+5
 2
 3Poles of loopgain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -1.60e+1        0.00e+00         1.60e+1
 8 1        -9.32e+4        0.00e+00         9.32e+4
 9 2        -1.36e+6        0.00e+00         1.36e+6
10
11Zeros of loopgain:
12
13 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
14--  --------------  --------------  --------------  --------
15 0        -9.17e+5        0.00e+00         9.17e+5

The location of the third pole can be found from network inspection.

It can be calculated from the time constant constituted by \(R_{phz}\) in parallel with the series connection of \(C_{s}\) and the parallel connection of \(C_{d}\) and \(C_{c}/2\):

\[p_{3}\approx-\frac{C_{s}+C_{d}+\frac{1}{2}C_{c}}{2\pi R_{phz}C_{s}\left( C_{d}+\frac{1}{2}C_{c}\right) }=-1.32\text{MHz.}\]

This is a dominant pole that limits the effectiveness of the phantom zero.

../_images/transimpedanceCompensatedSourceBode.svg

Fig. 405 Magnitude plots of the transfer functions of the asymptotic gain model for the transimpedance amplifier with phantom zero compensation at the source.#

Lines 38-41 of the script display the properties of the gain in the PYTHON command window:

1# Display the DC value and poles and zeros of the gain
2i1.setGainType('gain')
3Gpz = i1.execute()
4listPZ(Gpz)

The result shows three poles and one zero:

 1DC value of gain: -1.00e+5
 2
 3Poles of gain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -1.06e+6        0.00e+00         1.06e+6
 8 1        -1.97e+5        -1.35e+6         1.36e+6   3.46e+0
 9 2        -1.97e+5         1.35e+6         1.36e+6   3.46e+0
10
11Zeros of gain:
12
13 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
14--  --------------  --------------  --------------  --------
15 0        2.91e+10        0.00e+00        2.91e+10

The three poles are as expected: three dominant poles that are not in MFM positions due to the ineffective compensation. The zero is caused by the nonzero direct transfer. This can be seen from the Bode plots of the transfer functions of the asymptotic gain model (see Fig. 405). At very high frequencies (not visible on the plot), the gain curve becomes equal to that of the direct transfer. This transition causes the zero in the gain: the order decreases from \(3\) to \(2\).

../_images/colorCode.svg

In the previous example, we demonstrated the compensation of the transimpedance amplifier with the aid of a phantom zero at the source. In this case, this compensation is not very effective: the implementation of the phantom zero introduces a new dominant pole. MFM compensation with \(C_{phz}\) in parallel with \(R_{f}\) as discussed in the previous example turns out to be far more effective.

In the following example, we will demonstrate the frequency compensation of a low-noise voltage reference that can be used as reference for an AD converter.

Many AD converters with an unbuffered reference input draw a high-frequency switching current from their reference. In order to maintain a low-ripple reference voltage under these conditions, a decoupling capacitor needs to be placed between the reference voltage input of the ADC and ground.

Example

\label{example-ADCreference}

In this example, we will study the frequency compensation of a voltage driver of a capacitive load. This driver is intended to drive the reference input of an AD converter with unbuffered reference input that has been decoupled with a large capacitance \(C_{ref}\). This situation is illustrated in Fig. 406.

We will assume that a DC reference for the ADC with the correct DC voltage is available, but the associated noise voltage of this reference is too large. The noise performance can then be improved by placing a low-pass filter cascaded with a unity-gain voltage buffer between the voltage reference and the ADC reference input. This is shown in Fig. 407. In this example, we will only focus on the frequency compensation of the voltage buffer, and particularly on phantom zero compensation. We will simply assume \(C_{ref}=10\mu\)F, \(C_{f}=1\mu\)F, \(R_{f}=15\)k\(\Omega\) and a voltage buffer that has been designed with an AD8610 operational amplifier. This operational amplifier has a resistive output impedance.

SLICAP has two models for this operational amplifier in the SLiCAP.lib file:

The model AD8610_A0 can be used for sweeping the DC gain \(A_{0}\) of this opamp to generate root-locus plots. The model AD8610 does not contain symbolic parameters. Fig. 408 shows the complete small-signal circuit of the buffer.

../_images/ADCrefCbuffAD8610SmallSignal.svg

Fig. 408 Small-signal equivalent circuit of the voltage reference circuit.#

The gain of the AD8610 has been modeled with the aid of an expression for \(A_{v}\). It comprises a DC gain \(A_{0}=300\times10^{3}\), two poles and one zero. The output impedance \(Z_{o}\) equals \(20\Omega\).

The poles and zeros of the loop gain are listed below.

1Poles of loopgain:
2
3 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
4--  --------------  --------------  --------------  --------
5 0        -1.06e+1        0.00e+00         1.06e+1
6 1        -6.67e+1        0.00e+00         6.67e+1
7 2        -7.96e+2        0.00e+00         7.96e+2
8 3        -1.20e+8        0.00e+00         1.20e+8

The loop gain has four poles: two in \(A_{v}\) and two from independent capacitor voltages.

The pole positions can be estimated with the aid of the time constant matrix, as explained in Chapter Symbolic estimation of poles and zeros.

#

time constant / transfer

value [Hz]

\(p_{1}\)

\(\frac{-1}{2\pi\tau_{1}}\) with:\(\ \tau_{1}\approx C_{f}R_{f}\)

\(-10.61\)

\(p_{2}\)

pole in \(A_{v}\)

\(-66\)

\(p_{3}\)

\(\frac{-1}{2\pi\tau_{3}}\ \)with: \(\tau_{3}\approx C_{ref}Z_{o}\)

\(-796\)

\(p_{4}\)

pole in \(A_{v}\)

\(-120\cdot10^{6}\)

The estimated values match those obtained from the SLICAP calculations.

The loop gain has two zeros:

1Zeros of loopgain:
2
3 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
4--  --------------  --------------  --------------  --------
5 0        -1.06e+1        0.00e+00         1.06e+1
6 1         1.20e+8        0.00e+00         1.20e+8

The zeros can be estimated as follows:

#

time constant network / transfer

value [Hz]

\(z_{1}\)

zero in \(A_{v}\)

\(120\cdot10^{6}\)

\(z_{2}\)

\(\frac{-1}{2\pi\tau_{2}}\ \)with: \(\tau_{2}\approx C_{f}R_{f}\)

\(-10.61\)

The estimated values comply with those obtained by SLICAP.

Within the displayed accuracy, \(z_{2}\) cancels \(p_{1}\). With the SLICAP data type set to ‘pz’, \(p_{1}\) and \(z_{2}\) are no longer shown, but the DC loop gain will be shown:

 1DC value of loopgain: -3.00e+5
 2
 3Poles of loopgain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -6.67e+1        0.00e+00         6.67e+1
 8 1        -7.96e+2        0.00e+00         7.96e+2
 9 2        -1.20e+8        0.00e+00         1.20e+8
10
11Zeros of loopgain:
12
13 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
14--  --------------  --------------  --------------  --------
15 0         1.20e+8        0.00e+00         1.20e+8

The servo bandwidth can be calculated from \(p_{1}\) and \(p_{2}\) and the DC value of the loop gain. It can also be obtained from SLICAP using the findServoBandwidth() function. Both methods show that a second order MFM low-pass cut-off of the servo function can be obtained at \(f_{\ell}=125.5\)kHz.

The poles of the gain are in the left half plane, but the quality factor is very high and frequency compensation is required.

1Poles of gain:
2
3 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
4--  --------------  --------------  --------------  --------
5 0        -1.06e+1        0.00e+00         1.06e+1
6 1        -2.99e+2        -1.26e+5         1.26e+5   2.11e+2
7 2        -2.99e+2         1.26e+5         1.26e+5   2.11e+2
8 3        -1.20e+8        0.00e+00         1.20e+8

Since the two dominant poles are relatively close to the origin, the frequency \(\omega_{z}\) of the phantom zero can be approximated as:

\[\omega_{z}=-2\pi f_{\ell}\frac{1}{2}\sqrt{2}.\]

A negative real phantom zero can be implemented at the load. To this end, we need to insert a resistor between the output of the amplifier and the load. Its resistance \(R_{phz}\) should equal

\[R_{phz}=\frac{1}{-\omega_{z}C_{ref}}\approx\frac{1}{\sqrt{2}\pi f_{\ell }C_{ref}}=0.18\Omega.\]

Fig. 409A shows the compensated driver.

../_images/ADCrefCcompensated.svg

Fig. 409 A: compensated voltage reference circuit B: modified compensation; the ESR of \(C_{ref} \) is used for compensation. The zero is not longer a phantom zero: it also appears in the gain.#

The dominant poles of the compensated amplifier are in MFM positions while the non-dominant poles all have negative real values. Please notice that the insertion of the phantom zero resistor created a new independent capacitor voltage, and thus a new pole:

 1DC value of gain:  1.00e+0
 2
 3Poles of gain:
 4
 5 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 6--  --------------  --------------  --------------  --------
 7 0        -1.06e+1        0.00e+00         1.06e+1
 8 1        -8.98e+4        -8.81e+4         1.26e+5   7.01e-1
 9 2        -8.98e+4         8.81e+4         1.26e+5   7.01e-1
10 3        -1.20e+8        0.00e+00         1.20e+8
11 4       -4.70e+10        0.00e+00        4.70e+10
12
13Zeros of gain:
14
15 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
16--  --------------  --------------  --------------  --------
17 0        -8.84e+4        0.00e+00         8.84e+4
18 1         4.16e+7        -6.74e+7         7.92e+7   9.53e-1
19 2         4.16e+7         6.74e+7         7.92e+7   9.53e-1
20 3        -2.03e+8        0.00e+00         2.03e+8

If the ADC reference takes a DC current from this buffer, the phantom zero resistor shown in Fig. 409A may introduce a DC inaccuracy.

This DC error will not occur if the reference output is taken directly at the output of the operational amplifier, as it is shown in Fig. 409B. In this circuit, the resistance \(R_{phz}\) introduces a zero in the loop gain that is no longer a phantom zero. Hence, it also appears in the transfer from \(V_{ref}\) to the output voltage. In many cases, this minor penalty on the noise transfer is justified by the improvement of the DC transfer. As a matter of fact, in this way, \(R_{phz}\) can often be implemented using the ESR of the reference capacitor.

Fig. 410 shows the pole positions of the servo function as a function of \(R_{phz}\). Please notice that the pole at \(-10.61\)Hz is canceled by a zero. The zeros have not been shown in this plot.

../_images/colorCode.svg

Active phantom zeros#

Until now, we have studied implementation methods for phantom zeros based on modifications of existing passive attenuators in the loop transfer. However, the most straightforward implementation of phantom zeros, based on the concepts discussed in sections The phantom zero concept through Third order compensation, uses differentiators in the feedback networks. Unfortunately, due to the fundamental limitation of speed, practical implementations of differentiators also add poles, thereby reducing the effectiveness of the frequency compensation. Only in cases in which these poles can be kept away from the dominant group might active phantom zero compensation be feasible. In this section, we will study frequency compensation with the aid of active phantom zeros. We will confine ourselves solely to compensation with a first order active differentiator.

../_images/differentiators.svg

Fig. 411 A: Negative feedback first order differentiator concept. B: implementation with an operational amplifier.#

Fig. 411A shows the concept of a first order voltage differentiator circuit. The circuit has unity DC gain and a zero: \(z=-\frac{1}{RC}\). An implementation with the aid of an operational amplifier is shown in Fig. 411B.

In the following example, we will apply this circuit for frequency compensation of the ADC reference circuit from example example-ADCreference.

Example

The circuit from Fig. 409A has a phantom zero realized with a resistor \(R_{phz}\) between the output of the amplifier and the load. A disadvantage of this implementation is the increase of the low-frequency output resistance of the reference buffer to \(R_{phz}\). This reduces the DC accuracy of the reference under nonzero DC load conditions. One possible solution to this is to use the arrangement shown in Fig. 409B. This solution, however, has its high-frequency output impedance increased to \(R_{phz}\). A solution that has both a low DC output resistance and a low high-frequency output impedance can be obtained with active phantom zero compensation.

../_images/ZoutCdriver.svg

Fig. 412 Magnitude plots of the output impedance for three different compensation methods: Red: Passive compensation according to Fig. 409 A Blue: Passive phantom zero compensation according to Fig. 409B Green: Active phantom zero compensation according to Fig. 413.#

Fig. 413 shows the circuit of the reference buffer with active phantom zero compensation. The feedback network of this circuit consists of the differentiator with unity DC gain from Fig. 411B. \(R_{phz}\) in Fig. 413 implements a phantom zero in the differentiator. Fig. 412 shows the magnitude characteristic of the output impedances of the three reference buffers. The following values have been used for the circuit from Fig. 413: \(R_{d}=1\)k\(\Omega\), \(C_{d}=2.7\)nF, \(R_{phz}=82\Omega\).

../_images/colorCode.svg

Interaction with other performance aspects#

The realization of passive phantom zeros requires insertion of impedances in series or in parallel with the signal path. The general design rule was to avoid this, which may lead to the conclusion that passive phantom zeros may seriously deteriorate other performance aspects, such as the noise performance, the power efficiency and the linearity. Moreover, insertion of impedances into the signal path may also result in a reduction of the product of the midband loop gain and the dominant poles. Fortunately, implementation of phantom zeros seldom causes significant deterioration of performance aspects. This can be understood as follows:

  1. Phantom zeros are usually located at the edge of the transmission band of the amplifier. We have seen that second order systems and third order systems that have all poles in the origin require the magnitude of the frequency of their phantom zeros at \(\frac{1}{2}\sqrt{2}\omega_{n}\). Below this frequency, the impedance inserted into the signal path for the realization of the phantom zeros plays no role compared to existing impedances.

  2. If phantom zeros are implemented at the source, they constitute a low-pass filter between the signal source and the amplifier. Such a low-pass filter is generally beneficial to the IMFDR since it suppresses out-of-band interference signals.

  3. Phantom zeros increase the loop gain above the frequency of the zero. This reduces the nonlinearity of the amplifier at those frequencies.

Bandwidth limitation with phantom zeros#

In the previous sections, we discussed the frequency compensation of amplifiers with the aid of phantom zeros. With phantom zero compensation, we are able to obtain a well-defined frequency response of a feedback amplifier without paying a significant penalty on other performance aspects.

We will now discuss the application of phantom zeros for limitation of the bandwidth of the source-load transfer. Such bandwidth limitation may be desired if the bandwidth of the servo function is much larger than required. This can be the case if a low distortion drives the specification for a high value of the midband loop gain.

Bandwidth limitation with phantom zeros occurs in negative feedback amplifiers with phantom zeros if the loop gain at the frequency of the phantom zeros is much larger than unity.

The method#

A phantom zero is a pole in the asymptotic gain that coincides with a zero in the loop gain. As a consequence, a phantom zero cannot be observed in the source-load transfer. However, the root locus technique shows us that if, at the frequency of the zero, the magnitude of the loop gain is much larger than unity, one of the poles of the servo function will move towards it. This pole is visible in the source-load transfer and limits the bandwidth of the source-load transfer to a frequency that approximates that of the zero.

We will elucidate this with the aid of an example in which we will limit the bandwidth of the transimpedance amplifier from example example-transimpedancePHZcomp with the aid of a phantom zero to \(200\)kHz.

Example

In example example-transimpedancePHZcomp, we demonstrated the compensation of a transimpedance amplifier with the aid of a phantom zero. The phantom zero has been implemented with the aid of a capacitance \(C_{phz}\) in parallel with the feedback resistor (see Fig. 400). We will now use \(C_{phz}\) to limit the bandwidth \(B\) of the transimpedance amplifier to \(200\)kHz. To do so, we need to increase its value to \(\frac{1}{2\pi BR_{f}}=7.96\)pF.

The results of the pole-zero analysis of the transfer functions of the asymptotic gain model are shown below:

 1=== Bandwidth limitation to 200kHz ===
 2DC value of asymptotic: -1.00e+5
 3
 4Poles of asymptotic:
 5
 6 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
 7--  --------------  --------------  --------------  --------
 8 0        -2.00e+5        0.00e+00         2.00e+5
 9
10Found no zeros.
11
12DC value of loopgain: -9.73e+5
13
14Poles of loopgain:
15
16 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
17--  --------------  --------------  --------------  --------
18 0        -1.60e+1        0.00e+00         1.60e+1
19 1        -6.51e+4        0.00e+00         6.51e+4
20 2        -5.54e+8        0.00e+00         5.54e+8
21
22Zeros of loopgain:
23
24 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
25--  --------------  --------------  --------------  --------
26 0        -2.00e+5        0.00e+00         2.00e+5
27
28DC value of servo:  1.00e+0
29
30Poles of servo:
31
32 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
33--  --------------  --------------  --------------  --------
34 0        -2.06e+5        0.00e+00         2.06e+5
35 1        -4.97e+6        0.00e+00         4.97e+6
36 2        -5.49e+8        0.00e+00         5.49e+8
37
38Zeros of servo:
39
40 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
41--  --------------  --------------  --------------  --------
42 0        -2.00e+5        0.00e+00         2.00e+5
43
44DC value of gain: -1.00e+5
45
46Poles of gain:
47
48 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
49--  --------------  --------------  --------------  --------
50 0        -2.06e+5        0.00e+00         2.06e+5
51 1        -4.97e+6        0.00e+00         4.97e+6
52 2        -5.49e+8        0.00e+00         5.49e+8
53
54Zeros of gain:
55
56 n  Real part [Hz]  Imag part [Hz]  Frequency [Hz]     Q [-] 
57--  --------------  --------------  --------------  --------
58 0         7.62e+7        0.00e+00         7.62e+7
59 1        -7.64e+7        0.00e+00         7.64e+7

Lines 48-56 show the data of the asymptotic gain. As expected, the asymptotic gain has a DC value of \(10^{5}\), a pole at \(-200\)kHz, and no zeros.

The results for the loop gain are listed in lines 58-72. The loop gain has a zero at \(-200\)kHz; this is the phantom zero, and three poles, of which \(p_{1}\) and \(p_{2}\) are dominant.

Lines 74-88 show the results for the servo function. The servo function has the zero of the loop gain and three poles that can be obtained from the poles of the loop gain using the root locus method. The frequency of \(p_{1}\) approximately equals the frequency of the zero in the loop gain. The root locus (see Fig. 414) shows it approaches the zero from the left side. Since the frequency of \(p_{1}\) approximately equals that of \(z_{1}\), the servo function can be approximated as a first order low-pass function with a \(-3\)dB frequency of \(4.9706\)MHz. This is about five times larger than that of the transimpedance amplifier from example example-transimpedancePHZcomp.

Lines 90 to 105 list the data of the gain. The phantom zero at \(-200\)kHz is not visible and the dominant pole equals \(p_{1}\) of the servo function. This pole limits the bandwidth of the transimpedance amplifier.

The magnitude characteristics of the transfer functions of the asymptotic gain model of the compensated amplifier are shown in Fig. 415. Comparing them with those from Fig. 401, clearly shows the reduced bandwidth of the gain is reduced, and the increased bandwidth of the servo. This is the result of the insertion of a zero in the loop gain at a frequency at which the magnitude of the loop gain is much larger than unity.

../_images/colorCode.svg

This example shows that bandwidth limitation with a phantom zero is a powerful method. Above the frequency of the phantom zero the loop gain increases, which is beneficial to the linearity. If the reduction of the weak nonlinearity (intermodulation distortion) is of utmost importance, one might consider bandwidth limitation with a phantom zero at the source. It reduces the influence of out-of-band interference on the intermodulation distortion in two ways:

  1. The pole in the asymptotic gain reduces the amplitude of high-frequency interference

  2. The zero in the loop gain reduces the high-frequency intermodulation distortion.

A disadvantage of limiting the bandwidth with a phantom zero is the increased influence of non-dominant poles. This is an inevitable result of the increase of the loop gain above the frequency of the phantom zero. If this results in unacceptable peaking or instability, frequency compensation with additional phantom zeros may be required.

../_images/BodeBWlimit200kHz.svg

Fig. 415 Bode plots of the transfer functions of the asymptotic gain model of the transimpedance amplifier with phantom zero bandwidth limitation.#