β: This English translation is in beta — the Traditional-Chinese original is the authoritative version.
Sampling / sub-sampling PLL — kicking the divider out of the loop
Prerequisites: pll_noise_budget (the five-source budget, where the in-band floor comes from), clock_chain_budget (the bookkeeping for ×N, ), adc_aperture_jitter (aperture math: sampling error = slope × timing error) | Next: serdes_clocking_connection, exercises
The conclusion of pll_noise_budget was: for the classic charge-pump PLL, the in-band floor is set jointly by reference and the PFD/charge-pump/divider — a cleaner VCO doesn't help at all. This page asks the next question: is the loop's front end (PFD, charge-pump, divider) a physical limit, or an architectural choice? The answer is the latter — the sub-sampling PLL (an architecture that samples the high-speed VCO sinusoid directly with a low-speed reference) removes the divider from the phase-detection path entirely, boosting the phase-detector gain () from " divided further by " to "." As a result, the divider noise term vanishes, and CP noise is no longer amplified by — the in-band floor drops until only the reference term remains. This is one of the most important architectural breakthroughs in PLL design over the last fifteen years.
External-literature note: the sub-sampling PLL architecture and the standard result "divider noise eliminated, PD/CP noise not multiplied by " are not among the five PDFs downloaded for this site (external literature, not among the five source PDFs). Classic reference: X. Gao, E. A. M. Klumperink, M. Bohsali, and B. Nauta, "A Low Noise Sub-Sampling PLL in Which Divider Noise Is Eliminated and PD/CP Noise Is Not Multiplied by N²," IEEE J. Solid-State Circuits, vol. 44, no. 12, pp. 3253–3263, Dec. 2009. This page's derivation is self-contained, and every numeric value is labeled "illustrative"; the five source PDFs supply the other half of the physics — "sensitivity at the sampling point" ([P1]'s ISF).
Intuition first (the punchline up front): in the classic PLL, phase comparison means "divide 5 GHz down to 100 MHz, then compare phase" — dividing shrinks the phase by a factor of (the signal weakens by ), while PFD/CP noise enters unscaled, so the SNR takes an inherent hit; the divider then tacks on its own noise on top. Sub-sampling flips this: "don't touch the VCO — sample the 5 GHz sinusoid directly with the 100 MHz reference edge." At lock, the sampling instant lands on the sinusoid's zero crossing — where the slope is steepest (, V/s) — so a tiny VCO phase shift produces a large change in the sampled voltage. The phase-detector gain is "volt-scale" (, V/rad), several orders of magnitude larger than the charge-pump's "microamp-scale" gain. The same electronic noise (in A/√Hz or V/√Hz) divided by a much larger converts to phase noise that is orders of magnitude smaller. The price: the sampler hangs directly off the VCO (reference spur, kT/C folding), and every zero crossing of the sinusoid looks identical (can't lock in without an auxiliary loop).
Step 1: the classic CP-PLL's in-band ceiling — noise divided by , then multiplied by
First write "how front-end noise becomes output phase noise" as a chain whose units can be checked. The classic integer-N PLL's PFD (phase-frequency detector) compares against (the divider divides the output phase by ; see clock_chain_budget rule 2), and the charge-pump converts the phase difference into an average current:
Where comes from: a phase difference makes the CP conduct for a fraction of each reference period, so the average current . Dimension check: A × dimensionless = A ✓; is A/rad ✓.
How the noise gets amplified. At lock, the loop drives the average current to zero, so the noise current is "converted" into an equivalent phase error and absorbed by the output:
Converting to PSD (in-band, ):
- Dimension check: [A²/Hz] ÷ [A²/rad²] = rad²/Hz ✓; dimensionless ✓.
- Two amplification mechanisms stack: (1) CP noise is first divided by a small (illustrative: mA → A/rad; the equivalent gain referred to output phase is further divided by , leaving only A/rad); (2) once converted to output phase it's multiplied by ( gives dB). Divider noise is injected at the PFD input, and likewise takes the hit.
- This is exactly the microscopic origin of the term in pll_noise_budget (that page lumps CP+divider together as , already referred to the output). There are only three ways to suppress in-band noise: lower , lower front-end noise, or — this page's topic — make larger.
Step 2: the sub-sampling idea — sample the VCO sinusoid directly with the reference edge
The sub-sampling phase detector (SSPD) is simply a track-and-hold: every rising edge of the reference samples the VCO's sinusoidal voltage onto a capacitor . "Sub-sampling" refers to the sampling rate — sampling a 5 GHz sinusoid at 100 MHz is severe undersampling, but we only care about the phase error, and the phase error is exactly what gets aliased down near DC — which is what we want. (The idea of using a sampling phase detector for microwave synthesis is itself old — the step-recovery-diode sampler has long been a staple of microwave instrumentation (external literature, not separately cited); what turned it into an integrated CMOS PLL with a full noise analysis is the Gao et al. 2009 paper cited above.)
Deriving . At lock, (the VCO completes an integer number of cycles per reference period). Let the -th reference edge land at ( being the reference's own timing error, in s), with VCO output . The sampled voltage:
The last step uses the small-angle approximation (the lock point sits near the zero of ). This one equation immediately gives us three facts:
- Phase-detector gain: [V/rad] — direct phase detection on the 5 GHz output phase, no division by . It's just the zero-crossing slope converted: slope [V/s] divided by [rad/s] gives [V/rad]. Dimension check: (V/s)÷(rad/s)=V/rad ✓. Illustrative numbers: V, GHz → slope mV/ps, V/rad.
- Back end: the sampled voltage passes through a stage (transconductor, replacing the charge-pump) and becomes a current, with total gain (referred to output phase) . Dimension check: ✓. Illustrative: mS → mA/rad — 785× larger than the classic A/rad. (In practice the stage is chopped by a pulser (duty cycle) to control loop gain and stability; this page illustrates with a continuous — see the original paper for details.)
- Reference noise still gets : the term enters as — the reference's phase error is multiplied by through the slope itself. Illustrative: a 1 ps reference edge error → mV → mrad mrad. This confirms clock_chain_budget rules 1/3: is an intrinsic property of "multiplying the frequency by " itself, independent of whether a divider is present — what sub-sampling removes is the divider's "noise," not the reference's .
Step 3: deriving the in-band advantage — divider term vanishes, CP noise no longer
Line up steps 1 and 2. Take the same noise current PSD (A²/Hz) and refer it to output phase:
Dividing the two gives sub-sampling's suppression ratio for front-end current noise:
- Dimension check: = dimensionless×(A/rad)/(A) — rad is dimensionless, so the whole ratio is dimensionless ✓, and the log is valid.
- Illustrative numbers (, mA/rad, mA): dB.
- The first term is exactly the " removal of the divider multiplier": CP/PD noise in sub-sampling is no longer amplified by (external standard result, Gao et al. 2009, cited above). The second term is the extra bonus from changing from to , and it varies by design.
- The divider noise term disappears entirely — there is no divider in the loop at all. (There's still a divider on-chip, but it only handles frequency acquisition inside the auxiliary FLL; once locked, it's silenced by the dead zone and is off the phase-noise path — see Step 5.)
- What remains of the in-band floor is + the sampler's own noise — it becomes reference-limited. To go further, the only options are a cleaner reference or a higher to lower (there's no free lunch, per rule 1 of clock_chain_budget).
ILCM comparison (same "kick the divider/CP out" goal, a completely different mechanism): the injection-locked clock multiplier (ILCM) also drives the in-band floor to reference-limited, but by a different route — the sub-sampling PLL is a continuous-time closed loop (the divider is reduced to an auxiliary FLL; sampling the zero crossing is the phase detector), while the ILCM is discrete-time, open-loop injection (there is no PFD/CP/divider at all — a pulse generator directly "pulls" the phase toward the reference). The in-band bookkeeping converges to the same destination by different paths: sub-sampling gives (the divider term disappears, CP is no longer ); the ILCM gives with , a first-order discrete-time low-pass ( = the realignment factor) — the same , two completely different ways of kicking the divider out. The full derivation (lock range, , discrete-time noise shaping) is on subharmonic_injection.
Step 4: the ISF connection — sampling the zero crossing = sampling where is largest
This step is where this site's main thread and sub-sampling elegantly intersect. The ISF of an ideal LC oscillator with output is (lab_02, corresponding to [P1]'s LC example) — is largest at the zero crossing (=1) and zero at the peak. The SSPD happens to fire exactly at the zero crossing, so this single location has two faces:
(a) Maximum efficiency at reading phase, and naturally AM-rejecting. At the zero crossing, : the voltage carries phase information "one-to-one" (the gain V/rad is the maximum anywhere on the sinusoid); meanwhile an amplitude error enters as — a second-order small quantity, so it doesn't enter at first order. Conversely, if sampling happened at the peak: (no phase readout at all), while enters at full strength. This matches exactly the decomposition in phase_vs_amplitude_noise: the zero crossing is a "pure phase" window. The geometry of sampling is the same thread as the aperture math: step 1 of adc_aperture_jitter, "sampling error = slope × timing error," is noise on the ADC page (clock jitter dirtying the sample), but on this page it's flipped around and used as the signal (the reference edge's timing offset is converted into a measurable voltage via the slope ) — the same equation, one side is a liability, the other a phase detector.
(b) Also maximum efficiency at hitting phase — kickback becomes a spur. Every time the sampling switch closes, it exchanges a small packet of charge with the VCO node (charge sharing / switch feedthrough). Using [P1]'s operational ISF definition (canonical formula 5):
Hitting at the zero crossing → (maximum) → every kick lands with full force. Illustrative (following the scale of canonical example A, taking ): fC, pC → mrad per reference period. This disturbance is deterministic, periodic at , so it isn't a continuous spectrum but a reference spur (canonical section 10.2's small-angle PM: a residual phase ripple of fundamental amplitude produces a sideband dBc; mrad → dBc, and if the loop suppresses it to 0.5 mrad → dBc, illustrative). The same that gives you maximum phase-detector gain also gives you maximum kickback damage — this is sub-sampling's core trade-off, unpacked in the next step. (Distinguishing spurs from random PN is covered in measurement_and_spurs.)
Step 5: the price — aliasing, reference spur, lock range
(1) Aliasing: wideband noise folds into . The SSPD is a system that samples at (the same math as the ADC in adc_aperture_jitter). The wideband voltage noise at the sampler input (thermal noise of the VCO buffer, PSD V²/Hz, bandwidth ) folds back into the single-sided band with power conserved:
Dimension check: ✓; dividing by [V²/rad²] gives rad²/Hz ✓.
(Dividing by : the voltage-to-phase gain at the zero crossing is V/rad.) For the sampling capacitor itself, the total noise power is the famous (independent of bandwidth); once folded, . Illustrative: fF → V rms → dBc/Hz — much lower than the reference floor (good news), but you have to account for folding before buying a wideband buffer: every doubling of adds 3 dB to this term.
(2) The reference-spur see-saw. The kickback from step 4(b) lands exactly where is largest, so the spur is inherently worse than in a classic PLL. Every countermeasure is a trade: adding an isolation buffer (spur ↓, but the buffer's own noise folds in per (1), and it costs power); shrinking ( ↓ → spur ↓, but ↑ — noise and spur sit on opposite ends of the same see-saw); dummy-sampler cancellation. The same team's follow-up paper deals specifically with spur reduction: X. Gao, E. A. M. Klumperink, G. Socci, M. Bohsali, and B. Nauta, "Spur Reduction Techniques for Phase-Locked Loops Exploiting a Sub-Sampling Phase Detector," IEEE J. Solid-State Circuits, vol. 45, no. 9, pp. 1809–1821, Sep. 2010 (external literature, not among the five source PDFs; TODO: manual verification needed — volume/issue/page numbers should be manually verified before citing in a formal document).
(3) Lock range: can't tell which cycle you're on. is -periodic — every zero crossing of the VCO looks identical to the SSPD, so the SSPD has zero discrimination against "frequency error," and there's no hardware that defines at all: any integer satisfying is a valid lock point (harmonic lock — locking to the wrong harmonic). So an SSPLL always pairs with an auxiliary FLL (frequency-locked loop: a conventional ÷N + PFD/CP) responsible for pulling the frequency close to the correct ; it carries a dead zone — once locked, the phase error is tiny, the auxiliary loop goes completely silent, and the divider's noise never enters the main loop. In an SSPLL, the number is defined by the auxiliary loop.
(4) Effect on the optimal loop BW (tying back to the budget page). Using the toy model from pll_noise_budget: if the in-band floor drops by 7.1 dB (power , the illustrative numbers from the worked example below) → the optimum widens by , and the minimum integrated jitter improves by — a lower floor isn't just a lower floor, it also lets you open the loop bandwidth wider and suppress more of the VCO, so the total-jitter payoff is larger than the floor's dB number alone suggests.
Worked example (illustrative): ×50 classic CP-PLL vs. sub-sampling in-band floor
Format: problem → step-by-step substitution (with units) → result → dimension check → Python verification. All component values are representative / illustrative (not tied to any specific silicon process); bookkeeping conventions match clock_chain_budget (SSB, ; this page compares only ratios, so the /2-vs-/4 convention cancels out).
Problem: MHz, ( GHz). Reference floor dBc/Hz, divider's own floor dBc/Hz (at its output), CP and -stage equivalent noise current both pA/√Hz, mA, mS, V, fF (300 K). Find the deep in-band output phase-noise floor for both architectures, and convert the in-band portion (brick-wall, 10 kHz–1 MHz, MHz) into rms jitter.
Step by step (classic CP-PLL):
- reference: dBc/Hz.
- charge-pump: A/rad. At the reference-input phase, rad²/Hz; → rad²/Hz → dBc/Hz.
- divider: dBc/Hz.
- power-sum (clock_chain_budget rule 4): dBc/Hz — CP dominates.
Step by step (sub-sampling):
- reference: unchanged, dBc/Hz (step 2, item 3: the is hidden inside the slope).
- stage: mA/rad → rad²/Hz → dBc/Hz. Cross-check against step 2: ✓ ().
- sampler ( folding): rad²/Hz → dBc/Hz.
- power-sum: dBc/Hz — reference-limited, an improvement of 7.1 dB.
| In-band contribution (@ 5 GHz output) | Classic ×50 CP-PLL | sub-sampling |
|---|---|---|
| reference | (unchanged) | |
| PFD/CP (SS: stage) | (÷, dB) | |
| divider | — (removed from loop) | |
| sampler folding | — | |
| Total [dBc/Hz] |
Converting to jitter (brick-wall, 10 kHz–1 MHz): , (canonical formulas 18/19) → classic fs, sub-sampling fs (a savings in the in-band portion).
Dimension check (overview): A²/Hz ÷ (A/rad)² = rad²/Hz ✓; rad²/Hz × Hz = rad² ✓; rad ÷ (rad/s) = s ✓; every argument to a dB operation is dimensionless ✓.
Python verification (runs as-is; # -> shows actual output):
import numpy as np
N, f_ref = 50, 100e6
f0 = N*f_ref # 5 GHz
padd = lambda *L: 10*np.log10(sum(10**(x/10) for x in L))
# --- (a) classic charge-pump PLL: the three in-band terms (illustrative) ---
L_ref_out = -160.0 + 20*np.log10(N)
print(round(L_ref_out, 2)) # -> -126.02 (ref ×N²)
K_cp = 1e-3/(2*np.pi) # I_cp=1 mA -> 159.2 uA/rad
Si = (4e-12)**2 # (4 pA/√Hz)²
L_cp = 10*np.log10(0.5*Si/K_cp**2*N**2)
print(round(L_cp, 2)) # -> -121.03 (CP, ÷K_cp² then ×N²)
L_div_out = -160.0 + 20*np.log10(N)
print(round(L_div_out, 2)) # -> -126.02 (divider ×N²)
L_classic = padd(L_ref_out, L_cp, L_div_out)
print(round(L_classic, 1)) # -> -118.9 (CP dominates)
# --- (b) sub-sampling PLL (illustrative) ---
K_ss = 5e-3*0.5 # g_m·A = 2.5 mA/rad (referred to output phase)
print(round(20*np.log10(K_ss/(K_cp/N)), 1)) # -> 57.9 (= 33.98 + 23.92 dB)
L_gm = 10*np.log10(0.5*Si/K_ss**2)
print(round(L_gm, 2)) # -> -178.93 (same i_n, ÷K_SS²)
L_smp = 10*np.log10(0.5*(2*1.380649e-23*300/(100e-15*f_ref))/0.5**2)
print(round(L_smp, 2)) # -> -147.81 (kT/C folded into f_ref/2)
L_ss = padd(L_ref_out, L_gm, L_smp)
print(round(L_ss, 2)) # -> -125.99 (reference-limited)
print(round(L_classic - L_ss, 1)) # -> 7.1 (in-band improvement, dB)
# --- (c) convert the in-band portion into jitter (brick-wall 10 kHz–1 MHz) ---
for L in (L_classic, L_ss):
st = np.sqrt(2*10**(L/10)*(1e6-1e4))/(2*np.pi*f0)
print(round(st*1e15, 1)) # -> 50.9 / 22.5 (fs)
Honesty note: these illustrative numbers were chosen so the classic architecture is "CP-dominated" and sub-sampling is "reference-dominated" — a deliberately typical teaching scenario; in a real design , , duty cycle, and auxiliary-loop residuals would all shift the relative ranking of the terms, but the structural result — "the divider term vanishes and the CP term is no longer " — does not change (Gao et al. 2009's measurements indeed show the in-band floor approaching the reference-limited value).
Interactive exploration: drag each term around
Try it: (1) increase — both sides' reference terms rise together (the hit is unavoidable), but the classic architecture's CP term rises too, while SS's term stays put; (2) increase or — only SS's front-end term drops; (3) shrink — the sampler term rises (the noise side of the kT/C see-saw).
Design-knobs checklist
| Knob | Effect | Trade-off |
|---|---|---|
| front-end noise ÷ | is set by VCO swing (the same knob as tank_swing: larger swing → lower ISF phase noise and higher phase-detector gain, a double bonus); larger → more power | |
| / | reference (the only floor SS has left) | SSPLL floor is reference-limited → only a higher-frequency, lower-noise reference helps; divider/CP terms no longer stand in the way |
| kT/C folding vs. kickback spur | small : spur ↓, noise ↑; large : the reverse — a see-saw | |
| isolation buffer | spur ↓ | buffer noise folds in via aliasing (), power ↑ |
| pulser duty cycle | loop gain / stability | the chopping ratio adjusts both and the noise duty cycle simultaneously — must be tracked together |
| loop BW | lower floor → widens | illustrative: floor dB → , (the U-shape from pll_noise_budget) |
| auxiliary-FLL dead zone | divider silent once locked | dead zone too narrow → FLL keeps butting in and disturbing phase; too wide → frequency drift goes unmanaged |
Connection to SerDes
In a SerDes sampling-clock jitter budget, the in-band floor is often the dominant term (clock_chain_budget's worked chain: 65.9% comes from the in-band floor raised by ). This page's illustrative numbers compress the in-band portion from 50.9 fs to 22.5 fs (), and the optimal loop BW can then also widen by to suppress more of the VCO — a direct credit to serdes_clocking_connection's eye/BER accounting (RJ overhead ). On the cost side: the reference spur is deterministic jitter (DJ, see dj_dual_dirac), which shows up on the eye diagram as a dual peak rather than a Gaussian tail — the "lower RJ, higher DJ risk" trade that sub-sampling buys is exactly what the system level needs to watch.
Applicability and failure conditions
| Condition | When it holds | When it fails |
|---|---|---|
| Small-angle linearization (sampling point near zero crossing) | , AM doesn't enter at first order | large phase error (during acquisition) → saturates, gain drops; the auxiliary FLL pulls it back |
| Sampling point exactly at zero crossing | maximum gain, best AM rejection | DC offset / delay shifts the sampling point → drops, AM starts to leak in |
| Sources uncorrelated, white | power-sum and folding formulas hold | supply-correlated noise, -stage flicker (close-in, handled separately) |
| Divider confined to the auxiliary FLL, silenced by dead zone | divider noise never enters the main loop | poorly designed dead zone → FLL intervenes intermittently, divider/CP noise leaks back in |
| Illustrative values | the structural conclusion (what vanishes, what stays) is trustworthy | the absolute dB values must not be benchmarked against any real process/paper measurement |
| integer relation | SSPD always samples the same phase point every cycle | fractional-N requirements → need extra techniques like DTC/interpolation (external literature, beyond this page) |
Key takeaways
- Classic CP-PLL front-end noise referred to output: , — small gain in the denominator, then — this is why the in-band floor is stuck at CP+divider (the microscopic version of pll_noise_budget).
- Sub-sampling: the reference edge directly samples the VCO sinusoid's zero crossing, giving V/rad (slope ÷ ), paired with a stage to give A/rad — phase detection referred to output phase, no ÷N.
- The advantage = (removal of the divider multiplier) + (gain bonus); illustrative dB; the divider noise term vanishes entirely (external standard result, Gao et al. JSSC 2009).
- Reference is present in both — the is hidden in the sampling slope (), an intrinsic property of frequency multiplication, not the divider's fault. The SSPLL floor is therefore reference-limited.
- ISF duality: sampling the zero crossing = sampling where is largest — maximum gain for reading phase ( V/rad, AM-resistant), and maximum severity for hitting phase via kickback (, [P1]'s operational definition) → the reference spur is inherently worse; noise (kT/C ↑) and spur ( ↓) share the same see-saw.
- Aliasing: wideband noise at the sampler input folds into (); the kT/C version is illustratively dBc/Hz.
- The SSPD can't tell which cycle it's on (harmonic lock) → needs an auxiliary FLL (÷N + PFD/CP + dead zone) to define and manage acquisition.
- Worked example (illustrative): in-band floor dBc/Hz ( dB), in-band jitter fs; the lower floor also lets the optimal loop BW widen by , gaining another on total jitter.
Further reading
- Full in-band floor and optimal loop BW budget: pll_noise_budget
- The four ×N/÷N/PLL/buffer bookkeeping rules (source of the reference term): clock_chain_budget
- The aperture math for sampling error = slope × timing error: adc_aperture_jitter
- Source of the zero-crossing sensitivity result (ISF): isf_definition, lab_02
- Distinguishing and measuring spurs vs. random PN: measurement_and_spurs
- The other half of the swing knob (the ISF side): tank_swing, waveform_slope
- The other route to kicking the divider/CP out of the loop — discrete-time injection-locked multiplication (ILCM): subharmonic_injection
External literature (not among the five downloaded PDFs)
- X. Gao, E. A. M. Klumperink, M. Bohsali, and B. Nauta, "A Low Noise Sub-Sampling PLL in Which Divider Noise Is Eliminated and PD/CP Noise Is Not Multiplied by N²," IEEE J. Solid-State Circuits, vol. 44, no. 12, pp. 3253–3263, Dec. 2009. (the classic sub-sampling PLL paper; source of this page's "divider vanishes + PD/CP not multiplied by " result)
- X. Gao, E. A. M. Klumperink, G. Socci, M. Bohsali, and B. Nauta, "Spur Reduction Techniques for Phase-Locked Loops Exploiting a Sub-Sampling Phase Detector," IEEE J. Solid-State Circuits, vol. 45, no. 9, pp. 1809–1821, Sep. 2010. (TODO: manual verification needed — volume/issue/page numbers should be manually verified)
- The classic CP-PLL's and loop-noise bookkeeping: standard PLL literature (Gardner, Phaselock Techniques; B. Razavi, RF Microelectronics, 2nd ed., 2012), the same sources cited in pll_noise_budget.
- The part supplied by this site's five source PDFs: [P1] (the ISF operational definition , the LC oscillator's , maximum sensitivity at the zero crossing — all the physics in this page's Step 4).