The source follower
Predict where a source follower's output sits, why its gain stays below 1, how low its output resistance is, and how far down its input can go.
- Lesson
- E3.5
- Time
- 25 min
- Runs on
- ngspice
- Check
- 5 questions
A designer added a source follower to copy a 1.2 V reference into an ADC input. It delivered 0.378 V, and a 10 mV ripple on the reference came out as 8.4 mV. The output sits a whole VGS below the input, and the gain is 0.841, not 1.
- v(in)
- v(out)
- Input voltage 1.2 Vv(in) = 1.2 V · v(out) = 377.6 mV
With 1.2 V in, the output is 377.6 mV: 822 mV lower. The ADC reads a reference less than a third of the intended value.
- Input voltage 1.6 Vv(in) = 1.6 V · v(out) = 717.2 mV
With 1.6 V in, the output is 717 mV: the gap has grown from 822 to 883 mV. The output rises more slowly than the input, and its slope is the gain.
Read the plot as a table
| Input voltage | v(in) | v(out) |
|---|---|---|
| 900 mV | 900 mV | 127.2 mV |
| 1 V | 1 V | 210.2 mV |
| 1.1 V | 1.1 V | 293.7 mV |
| 1.2 V | 1.2 V | 377.6 mV |
| 1.3 V | 1.3 V | 461.9 mV |
| 1.4 V | 1.4 V | 546.7 mV |
| 1.5 V | 1.5 V | 631.8 mV |
| 1.6 V | 1.6 V | 717.2 mV |
| 1.7 V | 1.7 V | 803 mV |
| 1.8 V | 1.8 V | 889.1 mV |
Every point is from a run on ngspice 42 with the SKY130 tt models (181 points).
A follower copies changes, not levels, and even the changes come out smaller.
Where the output sits
- The sink fixes the current
IB pulls 20 µA out of the source node, and the only way in is through M1. So M1 carries 20 µA whatever the input does.
ID = 20 µA
- The current fixes VGS
A saturated transistor carries 20 µA at one gate-source voltage. Here VGS = 0.822 V, so the source settles 0.822 V below the gate.
- The output follows
Raise the gate by 1 mV and the source rises by 0.84 mV. VGS barely changes, so the current stays at 20 µA.
Read the circuit as text
- M1 NMOS transistor (W/L = 4/0.5): gate →
in, drain →VDD, source →out - VIN voltage source (1.2 V + v_in): + →
in, − →0 - IB current source (20 µA): + →
out, − →0 - out port: terminal →
out
in= 1.200 Vout= 0.378 V
The schematic draws three terminals. M1's body is the shared p-type substrate, at ground: in the netlist it is the fourth node, 0.
In a source follower (also called a common-drain stage) the input drives the gate and the output is taken at the source. The drain sits at VDD. A current sink pulls a fixed current out of the source.
The sink sets the drain current, and the current sets VGS. So the output sits one VGS below the input: vout = vin − VGS. The lab prints VGS = 0.822 V at 20 µA, so 1.2 V in gives 0.378 V out. This level shift comes with the stage: whatever the input, the output sits one VGS lower.
Why so much? The lab's second copy, M2, ties its body to its own source and needs only VGS = 0.748 V. M1's source sits 0.378 V above its body, and that raises its threshold. This is the body effect from E2: 74 mV of the shift comes from it.
Why the gain stays below 1
Small-signal, the sink is an open circuit, so the transistor's signal current must be zero. Three terms make up that current: gm(vin − vout) from the gate, −gmbvout from the body, and −gdsvout from the drain-source conductance. Here gmb is the body transconductance: the current change per volt of body-source voltage.
Set the sum to zero and the gain is Av = gm/(gm + gmb + gds). The lab prints gm = 256.4 µS, gmb = 46.66 µS and gds = 1.666 µS. The formula gives 0.8414, and the AC run measures 0.8414.
Drop the gmb term and the formula gives 0.994. The body term costs the rest: as the source rises, so does the threshold, and the output gives back part of every step. The drain conductance costs less than 1 %.
NMOS, body at ground
XM1 vdd in out 0 sky130_fd_pr__nfet_01v8 W=4 L=0.5
IB out 0 20u
gain = 8.414329e-01, vout = 3.775798e-01: the threshold rises with the output.
NMOS, body at its source
XM2 vdd in out2 out2 sky130_fd_pr__nfet_01v8 W=4 L=0.5
IB2 out2 0 20u
gain_bs = 9.934496e-01, vout_bs = 4.517623e-01: no body effect, gain 0.993.
Both run in the lab. The simulator accepts any body node. SKY130's 1.8 V NMOS here sits in the shared substrate, so on the chip its body is ground.
A PMOS sits in its own n-well, which can be tied to its source. The lab's PMOS follower does this and measures a gain of 0.993. It shifts the other way: 0.3 V in gives 1.448 V out, so it suits inputs near ground.
| Follower | Body tied to | Input | Output | Gain |
|---|---|---|---|---|
| M1, NMOS | ground | 1.2 V | vout = 3.775798e-01 | gain = 8.414329e-01 |
| M2, NMOS | its source | 1.2 V | vout_bs = 4.517623e-01 | gain_bs = 9.934496e-01 |
| P1, PMOS | its source (n-well) | 0.3 V | vout_p = 1.447763e+00 | gain_p = 9.930965e-01 |
The three followers of the lab, each at 20 µA. Only M1, with its body at ground, loses gain to the body effect.
Low output resistance
A follower earns its place at its output. To measure the output resistance, the lab holds the input still and pushes 1 A of AC current into the output. The output voltage in volts is then the resistance in ohms: Rout = 3298 Ω.
Seen from the source, the transistor is three conductances in parallel, so Rout ≈ 1/(gm + gmb + gds) = 3282 Ω. The model adds the last 16 Ω. Its source diffusion is 0.14/W = 0.035 squares at 465.8 Ω per square, 16.3 Ω in series.
Now load the output with 10 kΩ. The follower acts as a source of 0.8414·vin behind 3298 Ω, and the load divides it: 0.8414 × 10/(10 + 3.298) = 0.6327. The run measures 0.6328. The lab couples the load through a large capacitor, so the bias does not move.
Where the follower stops following
An ideal sink works at any voltage, even below ground. A real sink is a transistor, and it needs its own VDS above its saturation voltage VDsat. The plot drives the follower into a transistor sink and sweeps the input from 0 to 1.8 V. The lower panel is the slope, the small-signal gain.
- v(out)
- gain
- Input voltage 600 mVv(out) = 6.094 mV · gain = 0.114
With 0.6 V in, M1 is barely on and the output is 6 mV. Nothing follows yet.
- Input voltage 903.5 mVv(out) = 140.9 mV · gain = 0.7479
At 0.904 V in, the output is 141 mV and the gain has climbed to 90 % of its value at 1.2 V. Below this the sink leaves saturation: it needs about VDsat = 128 mV.
- Input voltage 1.2 Vv(out) = 381 mV · gain = 0.831
At 1.2 V in, the gain is 0.831 and the output 381 mV. A transistor sink copies its 20 µA reference only roughly (E4 shows why), so the numbers differ slightly from the lab's.
- Input voltage 1.6 Vv(out) = 717.5 mV · gain = 0.8497
Higher up, the gain keeps rising slowly. A larger source-body voltage makes the threshold less sensitive to a further rise, so gmb shrinks against gm.
Read the plot as a table
| Input voltage | v(out) | gain |
|---|---|---|
| 0 V | 1.418 nV | 32.56 n |
| 200 mV | 308 nV | 8.293 µ |
| 400 mV | 61.51 µV | 0.001585 |
| 600 mV | 6.094 mV | 0.114 |
| 800 mV | 72.64 mV | 0.5546 |
| 903.5 mV | 140.9 mV | 0.7479 |
| 1 V | 216.6 mV | 0.8071 |
| 1.2 V | 381 mV | 0.831 |
| 1.4 V | 548.3 mV | 0.8418 |
| 1.6 V | 717.5 mV | 0.8497 |
| 1.8 V | 888.1 mV | 0.8562 |
Every point is from a run on ngspice 42 (361 points). The gain is the derivative of v(out) along the sweep.
So the input must stay above VGS plus the sink's VDsat. At the 90 % point VGS is 0.763 V, and the output, 0.141 V, sits just above the sink's VDsat of 0.128 V. That is the cost of a follower in swing: it eats a VGS of headroom, and the sink below it eats more.
Asked in interviews
What are the gain and output resistance of a source follower?
Av = gm/(gm + gmb + gds + 1/RL) and Rout ≈ 1/(gm + gmb). For W/L = 4/0.5 µm at 20 µA in SKY130: 0.841 and about 3.3 kΩ.
Why is the gain below 1?
The source moves with the input, and with the body at ground the threshold rises as the source rises. The gmb term takes back part of every step. ro and the load take a little more.
When would you use a PMOS follower?
When the body effect matters and the input sits near ground. A PMOS can tie its n-well to its source, so the gain approaches 1, and it shifts the level up by one VSG.
Try it
The run has four parts. The first ac reads each follower's gain, and gain_hand is the formula from the printed gm, gmb and gds. The second turns the input's AC off and pushes 1 A into the output, so rout is in ohms. The third connects 10 kΩ. The dc sweep finds where each output sits.
Try three changes and predict each first. Double the sink current to 40 µA: VGS grows, so vout falls, and gm rises, so rout falls. Add nrs=0 nrd=0 to the XM1 line: the 16 Ω gap between rout and rout_hand closes. Make M1 longer (L = 2): gds shrinks, but the gain hardly moves, because gmb dominates the loss.
Run the netlist to draw its plots here.
gm = 2.564172e-04 gmb = 4.665593e-05 gds = 1.665577e-06 gain = 8.414329e-01 gain_hand = 8.414330e-01 gain_bs = 9.934496e-01 gain_p = 9.930965e-01 rout = 3.297891e+03 rout_hand = 3.281500e+03 gain_10k = 6.327567e-01 vout = 3.775798e-01 vgs_12 = 8.224202e-01 vout_bs = 4.517623e-01 vout_p = 1.447763e+00Check yourself
Remember
- A source follower takes the input at the gate and the output at the source; the sink sets the current, so the output sits one VGS below the input.
- With the body at ground the gain is gm/(gm + gmb + gds): 0.841 here, and the body effect causes most of the loss.
- The output resistance is about 1/(gm + gmb), a few kilohms at 20 µA, so a follower drives loads a gain stage cannot.
- The input must stay above VGS plus the sink's VDsat; a PMOS follower with its n-well at its source avoids the body effect and shifts up.