Deep dive: the (in)stability of op-amps
A closer look at op-amp feedback loops and the stability criteria for circuits that use them.
This article assumes some familiarity with signal amplification and the knowledge of basic op-amp circuits. If you need a refresher, start here.
In a recent write-up on photodiodes, I mentioned that adding a shunt capacitance to the ground in an op-amp’s feedback loop can spell trouble: it might cause ringing, sustained oscillations, or excessive gain.
At the time, I didn’t really explain is why. It’s easy to offer a hand-wavy answer, but the mechanics of amplifier feedback loops are worth a closer look. Alas, in most other articles, the underlying theory is usually presented in cryptic ways. You’re either getting sucked into the discussion of zeroes and poles of complex-number transfer functions, or into obtuse jargon along the lines of this snippet from Analog Devices:
"The amplifier’s stability in a circuit is determined by the noise gain, not the signal gain."
If you’re scratching your head about this sentence, you’re not alone. What does “noise” have to do with stability? How do you set that noise gain? Can you find the value in the spec? What is even going on?…
These abstractions make some sense in the context of specific mathematical models, but they are not particularly intuitive. In today’s article, let’s talk about feedback loops in a more accessible way. We’ll get to the same results, but hopefully in a less confusing way.
Back to the basics: the open-loop amplifier
Before we get into the weeds, let’s revisit the following rudimentary op-amp circuit:
Once more, my hope is that you already know the basic behavior of an op-amp, but in brief: it takes the difference between the two input voltages, amplifies that by some very large number (open-loop gain, AOL), and then outputs the amplified difference as another voltage. Strictly speaking, the output is typically referenced to the midpoint between the power supply rails — let’s call it Vmid — so a more precise theoretical model is:
This is the only thing the chip does. Despite the confusing terminology we use to describe op-amp circuits, the IC never pays attention to absolute input voltages, and it can’t be configured to have any other gain by attaching some resistors or other components to its pins.
In literature, it’s sometimes asserted that an “ideal” op-amp has AOL= ∞. You can find this in Texas Instruments manuals and in some otherwise good books. Forget it: this breaks the underlying math. Op-amps, ideal or not, behave understandably only if the gain is finite.
It is true that AOL is normally huge — 100,000 or more — so there’s just a microvolt-range linear region around Vin+ ≈ Vin- that maps to the full range of output voltages. You get intermediate outputs only if the input voltages are nearly identical; anything outside that narrow band just sends the output toward one of the supply rails.
For a 5 V supply voltage, the basic behavior of the circuit shown above is as follows:
In effect, the op-amp is a voltage comparator: the circuit outputs 0 V when Vin+ drops below Vin- (fixed at 2.5 V), or swings to 5 V otherwise. Again, there is a linear region in between, but we’d be hard-pressed to find it with standard benchtop tools.
For completeness, we should note an important caveat: the capacitances, inductances, and resistances inside any real-world op-amp limit the chip’s response speed. To make the device behave predictably, the designers usually incorporate lowpass filtering that causes AOL to gracefully roll off at frequencies below a certain “danger zone” we’ll talk about down the line. The bottom line is that the amplifier’s response curve eventually crosses 1× (unity gain); for sine-wave input frequencies higher than that point, the chip behaves like an attenuator instead of an amplifier:
Again, we’ll get to the reason for this practice soon, but the shape of the curve is worth knowing beforehand.
The voltage follower
Most of the time, op-amps are employed with some form of a negative feedback loop that forces one of the input voltages to track the other.
The simplest example — a voltage follower with an apparent 1x (unity) gain — is shown below:
At a glance, the circuit seems trivial. The output voltage is looped back onto the inverting input, so if Vin+ > Vout, the differential signal is positive and the output starts creeping up; conversely if Vin+ < Vout, the voltage starts moving down. In the simplified view, the only stable equilibrium is in between these two states, which corresponds to all the three voltages being equal. This means that Vout must march in lockstep with the input signal on the Vin+ leg:
But of course, as discussed earlier, this explanation is not quite right. We often take the mental shortcut of assuming that the circuit’s equilibrium is reached at Vin+ = Vin- = Vout, but that’s not actually possible. Remember that at its core, the op-amp is doing the following math:
If the difference between the input voltages is zero, then the second term in the equation is zero and Vout remains constant, no matter what signal is presented on Vin+. This actually leads to a paradox, because if Vout doesn’t track Vin+ then the differential voltage can’t stay at 0 V.
What happens in reality that the stable equilibrium requires Vin- and Vout to settle at a slight offset from the Vin+ input signal. This “error”, when multiplied by AOL, is just enough to produce the correct output voltage. The presence of a negative feedback loop means that any deviations from the stable equilibrium are swiftly countered, but again, the key point is that Vin+ and Vin- differ a tiny bit.
We can figure out the exact magnitude of the offset if we take the op-amp equation and just substitute Vin- with Vout. The substitution is fair game because in the follower circuit, the two pins are tied together. This gets rid of one of the free variables and allows us to solve for Vout:
The analysis partly vindicates the mental shortcut we have talked about before: when AOL is very high, it follows that 1 / (1 + AOL) ≈ 0 and AOL / (1 + AOL) ≈ 1, so the last expression is kinda-sorta equivalent to:
That said, although the scale of the error nudges seen on top of Vout is often negligible, ignoring the phenomenon makes the behavior of op-amps inexplicable: after all, the nudges are the only thing that is getting amplified.
Just as important, as the input signal frequency increases, the internal gain of real-world op-amps drops, so Vout must drift farther away from the target for the sufficient differential voltage to appear across the input pins. In other words, at high frequencies, the output voltage error caused by feedback can get quite high and often needs to be explicitly accounted for.
The non-inverting voltage amplifier
Next, let’s look at the usual way of adding gain to a voltage follower:
The operating principle of this circuit is simple: the resistors reduce the voltage on Vin- by a factor of two. That’s because the mid-point signal is a 50-50 average of Vout and GND. It follows that for the two op-amp input signals to get in the same vicinity — again, a requirement for linear operation — the output voltage has to swing to 2 · Vin+.
This signal gain configured by the resistors cuts into the op-amp’s AOL, but it’s not because the op-amp “sees” these resistors or does anything about it. The chip doesn’t know and doesn’t care; it still just multiplies the differential voltage by the same factor.
The problem lies elsewhere: the resistors attenuate not just the “desired” output voltage, but also the nudges that piggyback on top of the output signal and actually make the op-amp tick. It used to be that Vin+ and Vout needed to differ only by some small amount to encode a full range of input voltages; let’s call that difference Vdiff. Now, because of the added attenuation, we need the chip to output 2 · Vdiff to achieve the same result. This is akin to replacing the op-amp with a chip that has half the AOL we started with. If we push the configured amplification far enough, the effective AOL drops below 1, and at that point, Vdiff would need to swing past the supply rails to produce a full range of output voltages. In most circuits, that’s not happening.
This might seem like an academic distinction, but there are less common op-amp circuits — such as the transimpedance layout used with microphones and photodiodes — where signal amplification is done differently does not come at the expense of AOL.
Understanding loop gain
Again, resistors in the feedback loop doesn’t actually change the op-amp’s gain. All we’re doing is offsetting Vin+ from Vin- in a specific way. The chip’s internal amplification remains very high, and for the sake of signal accuracy, we want it to stay that way.
This brings us to an interesting revelation: in a sense, the feedback nudges that propagate from Vout to Vin- can be thought of having their own gain. Again, in a voltage follower, the configured signal gain was 1×, while the Vout “error” was amplified by a factor in the vicinity of AOL. Conversely, in a non-inverting amplifier with a signal gain of 5×, the Vout error needs to swing five times higher, so we could say that the apparent feedback loop gain is lower: AOL / 5.
For the standard voltage amplifier topology, we can visualize the magnitude of loop gain as the vertical distance between the op-amp’s intrinsic amplification curve and a line representing circuit’s configured voltage gain (in this example, 1×):
At this point, we have a preliminary explanation of one of the more counterintuitive properties of op-amps: that instability and some types of noise problems can get worse at lower signal amplification rates. At lower signal gains, the remaining loop gain is higher, so small errors in the feedback voltage can cause more significant effects. Further, in these scenarios, the region of above-unity loop gain extends into relatively high frequencies, which brings us to the caveat I hinted at earlier on…
The tape-delay op-amp circuit
Consider the following “circuit”:
It’s a voltage follower — except I added a contraption that records output voltages and plays them back some time later on the Vin- side, delaying the feedback signal by a preset amount. A temporal defect in the loop.
To explore this circuit, I built a toy discrete-time model with a limited bandwidth and a feedback loop that lagged by five “ticks” — just an arbitrary time unit for the simplified plots. I then supplied a single input pulse on Vin+ and let the simulation run:
For the first five ticks — an interval marked with dashed lines — Vin+ (blue) is seeing a positive pulse while Vin- (red) is staying put due to the delay. As a consequence, Vout shoots up — although because of the baked-in bandwidth limit, it does not immediately jump all the way to +5 V.
After five ticks, the input signal on Vin+ goes back to the mid-point and stays there for the rest of the simulation — but all of sudden, the delayed echo of the earlier output arrives on Vin-. This creates a Vin+ < Vin- condition, thus sending the output voltage lower. When that lower Vout ripple makes it back to Vin-, it results in Vin+ > Vin-, which causes a positive bounce on the output leg. This back-and-forth process continues for a while, with gradually decaying amplitude.
The most important observation is that past the initial stimulus, the entire action is contained to the feedback loop. There is no movement on the signal input (Vin+), so the configured signal gain plays no role. The only reason the oscillations decay over time is that at the offending “echo” frequency, the gain of the feedback loop itself happened to be a tad below one.
If we increase loop gain a tiny bit, we get this result:
There are two conditions that must be met for sustained oscillation:
There must be a feedback delay that amounts to about one-half of a cycle (180°) of some sine-wave input frequency.
The feedback loop gain at that frequency must be at least one.
The first requirement means that higher frequencies are of more concern, because it’s easier to accidentally introduce comparatively large delays when the wavelength you’re working with is short. The second requirement means that we generally only have to worry about the frequencies below the IC’s internal unity-gain point.
This is a preliminary explanation of why op-amps have a deliberately limited bandwidth: there are internal signal delays inherent to the circuitry, and if the chip was designed to have above-unity gain at sufficiently high frequencies, these delays could introduce a 180° phase shift that turns negative feedback into positive feedback — reinforcing oscillations instead of stabilizing the output voltage.
But what kind of a weird contraption is that?!
Right. Tape-delay mechanisms are not commonly employed in op-amp circuits. Non-negligible transmission delays can sometimes crop up in electronic devices, but feedback loops are usually pretty compact on any sensibly-designed PCB. Unless you’re working with ultra-high frequencies or very long wires, signal propagation delays begin to matter only as you approach the gigahertz territory.
Yet, there is another, more ubiquitous form of a “delay” mechanism: the capacitor. To be clear, a capacitor is not really a time delay device: it can’t store and replay past waveforms. Instead, it’s an integrator — that is, its terminal voltage is a function of the charging currents that flowed through it before. It might sound math-y, but it’s akin to how a bucket in your backyard “integrates” rainfall over time, “outputting” the result as a water level you can observe.
Integration distorts most waveforms — but in the special case of a sine, it just produces a phase shift between the sinusoidal charging current and the capacitor charge state. High currents charge the capacitor the fastest, but peak charge state is achieved just as the current is about to reverse, near the waveform’s zero point.
Current per se is not commonly used to convey information in electronic signals, but if the capacitor is charged and discharged through a resistor, then from Ohm’s law, the charging current is influenced by the input voltage. This creates a degree of voltage-to-voltage shift between the input sinusoid and the output sinusoid. The resulting phase shift varies from 0° to 90°, depending on R and C values and signal frequency; if you’re curious about the precise mechanics, a detailed analysis can be found in an earlier article.
Importantly, such a phase shift can be observed when shunt capacitances to the ground are added to op-amp feedback loops even without any discrete resistors. That’s because the amplifier’s output transistors have some non-zero impedance (ZO or RO in the spec). The number often hovers around 20 to 100 Ω; this acts like a hidden series resistor in the output path.
On the surface of it, even the worst-case phase shift in an RC circuit (~90°) is nowhere near the ~180° offset needed for sustained oscillation — but again, op-amps have some internal shifts too. The devices are usually designed so that their bandwidth rolls off just ahead of the danger zone, leaving just a bit of phase margin for external components. With some ICs, the margin can be as low as 45°, so a single non-trivial capacitance can be more than enough to throw a wrench in the works.
To mitigate this problem, it’s best to reduce stray capacitances in the feedback loop. If you can’t, you might try reducing the bandwidth of the feedback loop with a parallel “bypass” capacitor that straddles the feedback resistor and provides a preferential signal path at high frequencies. You can also increase signal gain (and thus reduce loop gain); or switch to a more capable amplifier that has more of a phase margin at the frequencies of concern.
👉 For a thematic catalog of articles on electronics and other topics, click here.
I write well-researched, original articles about geek culture, electronic circuit design, and more. If you like the content, please subscribe. It’s increasingly difficult to stay in touch with readers via social media; my typical post on X is shown to less than 5% of my followers and gets a ~0.2% clickthrough rate.











This is great!