# Demystifying pole-zero doublets

The pole-zero doublet is another systems-theory concept that, like the right half-plane zero of my previous blog, I believe should be explored intuitively before we resort to mathematical acrobatics. Pole-zero doublets arise in a variety of circumstances. An active-loaded differential input stage introduces a pole-zero pair separated by an octave in the open-loop response of an op amp [1]. Other examples include frequency-compensation schemes such as feed forward, input lag, and feedback lead compensation [2]. Yet another example occurs in the loop stabilization of a switching regulator via pole-zero cancellation [2].

Because of component mismatches, cancellation is unlikely to be perfect, resulting in a doublet of the pole-zero or zero-pole type, depending on whether the pole frequency is lower than the zero frequency, or vice versa. Though the impact of a doublet on the closed-loop ac response may be minor, it is the step response that presents surprising nuances that may be critical in certain applications.

**Figure 1: **Using a voltage follower to investigate pole-zero doublets.

Let us investigate doublets using the voltage follower of Fig. 1, the simplest of op amp circuits. Denoting the open-loop gain as* a*(*s*), we have, by inspection, *V _{o}* =

*a*(

*s*)(

*V*–

_{i}*V*). Collecting, we find the closed-lop gain as

_{o}

**Figure 2: **Linearized Bode plots of two open-loop responses (top) and the corresponding closed-loop responses (bottom).

Assuming the open-loop gain profile of Figure 2*a*, top, we easily construct the closed-loop profile shown at the bottom by noting that at low frequencies, where *a*(*s*) → *a*_{0}, Equation (1) gives *A*(*s*) → *A*_{0} = *a*_{0}/(1 + *a*_{0}), whereas at high frequencies, where *|a*(*s*)| << 1, Equation (1) gives *A*(*s*) → *a*(*s*). Moreover, the two asymptotes meet at *ω* = *ω*_{0}, that is, at the 0-dB frequency of |*a*|, which now becomes the –3-dB frequency of |*A*|. If we subject the circuit to a 0-to-1 V step at *t* = 0, the response (ignoring slew-rate limiting) will be the exponential transient

The dc gain *a*_{0} of a typical op amp is extremely high, in which case we can make the approximations depicted in Fig. 2*b*, namely, *a*_{0} →∞ and *A*_{0} → 1 V/V, or 0 dB.

**Zero-Pole Doublets**

Let us now reconsider the open-loop response of Fig. 2*b*, top, but augmented by a zero-pole pair *ω** _{z}*-

*ω*

*as shown in Figure 3, so the 0-db frequency gets shifted from*

_{p}*ω*

_{0}to

*ω*

*=*

_{t}*ω*

_{0}(

*ω*

*/*

_{p}*ω*

*). To construct the closed-loop profile shown at the bottom, note that*

_{z}*A*(s) must have the same zero as

*a*(s), as per Equation (1). Moreover, above

*ω*

*the plot of |*

_{z}*A*| is of the type shown at the bottom of Figure 2

*a*, whereas below

*ω*

*it is of the type shown at the bottom of Figure 2*

_{z}*b*. The transition from one type to the other occurs just below

*ω*

*, indicating the presence a pole frequency*

_{z}*ω*

_{1}there. We also have a second pole frequency

*ω*

_{2}in the vicinity of the op amp’s

*transition frequency*

*ω*

*, which becomes the buffer’s*

_{t}*crossover frequency*.

**Figure 3: Linearized Bode Plots for the case of an op amp with a zero-pole doublet.**

What is the 0-to-1 V step response going to look like? Recall from systems theory that each real pole in a transfer function results in an exponential transient, so we expect two such transients acting in concert: a transient governed by *ω*_{2} to raise *v _{O}* from 0 to

*A*x1 V, where

_{z}*A*=

_{z}*a*/(1 +

_{z}*a*), and a transient governed by

_{z}*ω*

_{2}to raise

*v*from

_{O}*A*x1 V to 1 V, for a net magnitude of (1 –

_{z}*A*)x1 V = 1/(1 +

_{z}*a*) V.

_{z}

**Example 1: **Assuming the follower of Figure 1 uses an op amp having *f*_{0} = 1 MHz, *f _{z}* = 10 kHz, and

*f*= 100 kHz, develop an expression for its response to a 0-to-1 V input step.

_{p}

**Solution: **We have *f _{t}* =

*f*

_{0}(

*f*/

_{p}*f*) = 10

_{z}^{6}(100/10) = 10 MHz. Moreover, since

*f*=

_{p}*f*/100, we use geometric inspection to estimate

_{t}*a*=

_{z}*f*

_{0}/

*f*= 10

_{z}^{6}/10

^{4}= 100 V/V. Assuming

*ω*

_{1}≈

*ω*

*and*

_{z}*ω*

_{2}≈

*ω*

*, we write*

_{t}

**Figure 4: Simulating an op amp with**(The EZP source must have E =

*f*_{0}= 1/(2πR0xC0),*f*= 1/(2πR1xC), and_{z}*f*= 1/[2π(R1//R2)xC]._{p}*f*/

_{p}*f*.)

_{z}

This is more conveniently expressed as

indicating that the response consists of a *fast* (τ_{2} = 15.9 ns) exponential transient from 0 to 990.1 mV, and a *much slower* (τ_{1} = 15.9 ms) transient, aptly called a *long tail*, to complete the remaining 9.9 mV (as said above, the two transients act in concert.)

**Figure 5: **(*a*) Bode plots and (*b*) step response (using different time scales) of the circuit of Figure 4, having* f*_{0} = 1 MHz, *f _{z}* = 10 kHz, and

*f*= 100 kHz.

_{p}Let us now enlist PSpice to see how well our intuitive findings hold up. Using the circuit Figure 4, we readily generate the plots of Figure 5. A coarse look at Figure 5*b*, top, seems to indicate that after 100 ns or so, *v _{O}* has effectively reached its dc steady state of 1 V, since (100 ns)/(15.9 ns) is about 6 time constants, or plenty of time to settle. Not so if you switch to the time scale of Figure 5

*b*, bottom, for a compressed view. The fast transient dominates up to about 991 mV, or to within 9 mV of steady state, after which the long tail takes over. So, what is the settling time

*t*of this circuit? It depends…. If you content yourself with

_{S}*v*settling within 1% (or 10 mV) of steady state, then PSpice gives

_{O}*t*(1%) ≈ 107 ns. However, if you wish

_{S}*v*to settle within 5 mV of steady state, you are at the mercy of the long tail, which results in

_{O}*t*(0.5%) ≈ 9.4 ms, almost two orders of magnitude longer than

_{S}*t*(1%)! Similarly, for

_{S}*v*to settle within 1 mV of steady state, you need

_{O}*t*(0.1%) ≈ 35 ms.

_{S}Equation (2), developed intuitively, is in slight disagreement with the PSpice results of Figure 5. For an *exact* analysis, refer to the Appendix at the end of the blog. Here, we use Equation (3) of the Appendix to calculate the closed-loop pole frequencies as *f*_{1} = 9.9107 kHz and *f*_{2} = 10.09 MHz, so τ_{1} = 16.06 ms and τ_{2} = 15.77 ns. Moreover, we use Equation (4) to calculate the fast and slow transient magnitudes as 991.06 mV and 8.94 mV, respectively. All numbers well agree with Equation (2), so intuition has served us well.

Figure 6 depicts three significant cases corresponding, respectively, to a decade, an octave, and a 10% separation between *f _{p}* and

*f*, with

_{z}*f*fixed at 10 kHz. Note that the smaller the separation, the smaller the magnitude of the slow swing, and also the slower the fast swing. It is also apparent that the lower the value of

_{z}*f*compared to

_{z}*f*

_{0}, the slower the long tail.

**Figure 6: **(*a*)** **Bode plots and (*b*) transient responses for *f _{z}* = 10 kHz and for the cases

*f*= 10

_{p}*f*,

_{z}*f*= 2

_{p}*f*, and

_{z}*f*= 1.1

_{p}*f*, resulting, respectively, in the traces V(O_10), V(O_2), and V(O_1.1).

_{z}**Pole-Zero Doublets**

As we are about to see, the pole-zero doublet is even more subtle than its zero-pole counterpart. With reference to Figure 7, we retrace the reasoning in connection with Figure 3 to state that at low frequencies we must have *|A*| → 0 dB, and that *A*(*s*) must have the same zero as *a*(*s*) as well as a pole frequency in the vicinity of ω* _{t}*. The frequency region immediately above ω

*is the trickier. Here, the rate of descent of |*

_{p}*a*| approaches –40 dB/dec and the phase of

*a*approaches –180°, so we can write

which is a *real*, *negative* number whose magnitude decreases with ω. By Equation (1) we must have

indicating that as ω increases, *A* itself will rise above 1 V/V, due to the denominator’s minus sign, with a tendency to blow up as *a*(ω* _{p}* < ω

*<*ω

*) approaches –1 V/V. Mercifully, before this happens, the zero comes into play to squelch the diverging attempt by*

_{z}*A*. This implies the presence of a pole frequency ω

_{1}just above ω

*. The overall result is a small amount of gain peaking, as shown.*

_{z}**Figure 7: Linearized Bode Plots for the case of an op amp with a pole-zero doublet.**

Let us check our reasoning via PSpice. The circuit of Figure 8, designed to simulate an op amp with a pole-zero separated by a decade, is in a sense the dual of the zero-pole circuit of Figure 4. As depicted in Figure 9*a*, bottom, the closed-loop gain peaks by about 0.5 dB, corresponding to 1.060 V/V. A coarse look at Figure 9*b*, top, seems to imply an ordinary exponential transient aiming toward 1.060 V. However, the expanded view Figure 9*b*, bottom, reveals the presence of a second, much slower transient to bring *v _{O}* from 1.060 V back to 1.0 V, as expected of a voltage buffer.

**Figure 8: Simulating an op amp with**

*f*_{0}= 1/(2πR0xC0),*f*= 1/[2π(R1+R2)xC)] and_{p}*f*= 1/(2πR2xC)._{z}**Figure 9: **(*a*) Bode plots and (*b*) step response (using different time scales) of the circuit of Figure 8, having* f*_{0} = 1 MHz, *f _{z}* = 10 kHz, and

*f*= 1 kHz.

_{p}.

In the present example, this transient takes on the form of an *aperiodic overshoot* (not to be confused with ringing!). As in the case of zero-pole doublets, the settling time is strongly dependent on whether the desired percentage falls on the fast or on the slow portion of the transient. You can gain additional insight from Figure 10, which depicts three significant cases corresponding, respectively, to a decade, an octave, and a 10% separation between *f _{p}* and

*f*, with

_{z}*f*fixed at 10 kHz. Of special interest are pole-zero doublets separated by an

_{z}*octav*e, to be examined next.

**Example 2:** Calculate the response to a 0-to-1 V input step if the follower of Fig. 1 uses an op amp with *f*_{0} = 1 MHz and *f _{z}* = 2

*f*, where

_{p}*f*= 0.5 kHz,

_{p}*f*= 5 kHz, and

_{p}*f*= 50 kHz.

_{p}

**Solution: **Plugging the given data into the formulas of the Appendix, we get, for the three cases,

**Figure 10: **(*a*) Bode plots and (*b*) transient responses for *f _{z}* = = 10 kHz and for the cases

*f*= 0.1

_{p}*f*,

_{z}*f*= 0.5

_{p}*f*, and

_{z}*f*= 0.9

_{p}*f*, resulting, respectively, in the traces V(O_0.1), V(O_0.5), and V(O_0.9).

_{z}

Note that the higher the doublet frequency, the larger the aperiodic overshoot, but also the faster the long tail. The fast transient time constant, however, changes little with the location of the doublet frequency.

**Remarks**

The above analysis has deliberately ignored slew-rate limiting so we could focus exclusively on the effects of the doublet. With slew-rate limiting present, the step response starts out as a ramp, and changes to the exponential pair discussed above only when the op amp ceases to slew-rate limit [2, 3]. For simplicity, also the presence of any roots above* *ω* _{t}* has been ignored. These roots (poles, and possibly right-half plane zeros) tend to erode the phase margin, possibly leading to ringing, which will further complicate the settling time.

As a rule, the further up the doublet on the open-loop gain plot, the slower the long tail but also the smaller the magnitude of the slow transient. Also, if a doublet is sufficiently close to *w** _{t}*, it may affect circuit stability, possibly resulting in ringing. For instance, lowering R2 from 10 kΩ to 1 kΩ in Figure 8 will raise

*f*to 1 MHz, causing the phase margin to drop from about 90° to about 30°, which results in quite a bit of ringing. Clearly, there are many factors you need to be aware of when dealing with the settling time. Who ever said that the life of the analog engineer is easy, unchallenging, and thus boring?

_{z}**APPENDIX: Using Math to Validate Intuition**

By inspection, we can express the open-loop gains of Figures 3 and 7 in the common form

Substituting into Equation (1) and simplifying, we get, after some algebra,

indicating that *A*(*s)* admits the same zero as *a*(*s*), along with two poles. The poles are the roots of

and are

The negatives of *s*_{1} and *s*_{2} are the closed-loop pole frequencies ω_{1} and ω_{2}. To find the unit step response, we write

where *V _{i}*(

*s*) and

*V*(

_{o}*s*) are the Laplace transforms of the input and output, with the Laplace transform of the unit step being (1 V)/

*s*. Expanding

*V*(s) as

_{o}

we calculate the voltages *V*_{0} through *V*_{2} as

Finally, we find the transient response to the input step by taking the inverse Laplace transform as

**References**

[1] http://online.sfsu.edu/sfranco/BookAnalog/AnalogJacket.pdf

[2] http://online.sfsu.edu/sfranco/BookOpamp/OpampsJacket.pdf

[3] http://www.edn.com/electronics-blogs/the-signal/4415482/Slew-Rate-the-op-amp-speed-limit

Accidental engineering: 10 mistakes turned into innovation

That 60W-equivalent LED: What you don’t know, and what no one will tell you…

6 famous people you may not know are engineers

DC distribution in your house and 42-V cars

10 tips for a successful engineering resume

The 5 greatest engineers of all time

Higgs Pt. 9: What makes King Carl XVI Gustaf think it’s the Higgs Boson?

10 things you may not know about Tesla

Analog Fundamentals: Instrumentation for impedance measurement

The Batteriser: scam or savior?

8 tips for squashing bugs using ASSERT in C

Refurbishing the KeyTek MiniZap

LEDs save the day for an extreme birthday cake

Honey, I retrofitted the car's interior lights with LEDs

Back-to-school tech: 9 devices and kits for the budding engineer

That 60W-equivalent LED: What you don’t know, and what no one will tell you…