Skip to main content

β: This English translation is in beta — the Traditional-Chinese original is the authoritative version.

Phase Noise → Jitter

Prerequisites: white_noise_to_phase_noise · stochastic_noise_basics | Next: serdes_clocking_connection

This page answers the question engineers ask most often: you are handed a phase-noise plot (L(f)\mathcal{L}(f), dBc/Hz) — how do you turn it into a single time-domain number, the rms jitter σt\sigma_t (fs)? This is the bridge between the frequency domain (the language of communications/RF) and the time domain (the language of digital/SerDes).

The full chain is four steps:

L(f)  ×2, de-dB  Sϕ(f)  f1f2  σϕ2     σϕ  ÷(2πf0)  σt.\mathcal{L}(f)\ \xrightarrow{\ \times2,\ \text{de-dB}\ }\ S_\phi(f)\ \xrightarrow{\ \int_{f_1}^{f_2}\ }\ \sigma_\phi^2\ \xrightarrow{\ \sqrt{\ }\ }\ \sigma_\phi\ \xrightarrow{\ \div(2\pi f_0)\ }\ \sigma_t.

We take each step apart, carrying units and a dimension check throughout, and finish with canonical Example C (5 GHz, 100-100 dBc/Hz @ 1 MHz, 1/f² slope, 1→100 MHz) to obtain σt=447.9\sigma_t=447.9 fs.

Physical intuition (conclusion first): the phase error Δϕ\Delta\phi is "how far the clock hand has strayed in angle"; divide that angle by the angular velocity 2πf02\pi f_0 and you get "how far the hand has strayed in time," Δt\Delta t. The phase-noise plot tells you how much phase power density sits at each offset frequency; adding it all up (integrating) gives the total phase variance; the square root is the rms phase; dividing by 2πf02\pi f_0 gives the rms timing jitter. The whole plot is compressed into one fs number.

Step 1: why a phase error becomes a timing error

An ideal oscillation cos(2πf0t)\cos(2\pi f_0 t) becomes cos(2πf0t+Δϕ)\cos(2\pi f_0 t+\Delta\phi) once excess phase is added. Factor the phase term out and look at where the zero crossing lands:

2πf0t+Δϕ=2πf0(t+Δϕ2πf0= Δt).2\pi f_0 t+\Delta\phi=2\pi f_0\Big(t+\underbrace{\frac{\Delta\phi}{2\pi f_0}}_{=\ \Delta t}\Big).

In other words, an extra phase Δϕ\Delta\phi is equivalent to shifting the entire waveform along the time axis by Δt\Delta t (spec §3, Eq. 17):

 Δt=Δϕ2πf0 \boxed{\ \Delta t=\frac{\Delta\phi}{2\pi f_0}\ }
  • Physics used: the conversion rate between phase and time is the angular frequency ω0=2πf0\omega_0=2\pi f_0 (rad/s).
  • Dimension check: [rad]/[rad/s]=[s][\text{rad}]/[\text{rad/s}]=[\text{s}] ✓. Note the denominator is 2πf02\pi f_0 (rad/s), not f0f_0 (Hz) — dropping this 2π2\pi is the most common mistake.
  • Why it is reasonable: at small phase (Δϕ1\Delta\phi\ll1 rad), phase offset and edge-time offset are linear and one-to-one. Timing jitter is the time error of the zero crossing, so it equals Δϕ/(2πf0)\Delta\phi/(2\pi f_0).
  • Feel: at 5 GHz, Δϕ=1\Delta\phi=1 mrad Δt=31.8\Rightarrow\Delta t=31.8 fs (see numerical_feeling Example 1).

Step 2: converting dBc/Hz to linear and recovering the phase PSD

The vertical axis of a phase-noise plot is L(f)\mathcal{L}(f), the SSB phase noise (single-sideband phase noise), in dBc/Hz — meaning "at offset ff, within a 1 Hz bandwidth, how many dB below the carrier the single-sideband noise power sits" (dBc = dB relative to carrier).

de-dB (from dB back to linear): dBc/Hz is 10log10()10\log_{10}(\cdot), so

Llin(f)=10L(f)/10[1/Hz].\mathcal{L}_{\text{lin}}(f)=10^{\mathcal{L}(f)/10}\quad[\text{1/Hz}].

Then connect to the phase PSD: under the small-angle approximation, the SSB phase noise relates to the single-sided phase PSD as (spec §3, Eq. 16):

 L(f)12Sϕ(f) Sϕ(f)=210L(f)/10 [rad2/Hz].\boxed{\ \mathcal{L}(f)\approx\tfrac12\,S_\phi(f)\ }\quad\Longrightarrow\quad S_\phi(f)=2\cdot10^{\mathcal{L}(f)/10}\ [\text{rad}^2/\text{Hz}].
  • Units: SϕS_\phi is rad2/Hz\text{rad}^2/\text{Hz} (the density of phase variance). Llin\mathcal{L}_{\text{lin}} itself is dimensionless per Hz; after multiplying by 2 it is read as rad2/Hz\text{rad}^2/\text{Hz}.
  • Where this 12\frac12 comes from: phase-modulation power splits evenly between the upper and lower sidebands, and L\mathcal{L} counts only one side, so it is half of SϕS_\phi. This is exactly the bookkeeping convention discussed in the spec §3 "factor-of-2 teaching note"; for jitter integrals this site always uses Sϕ=2LlinS_\phi=2\mathcal{L}_{\text{lin}}. For a deeper discussion see white_noise_to_phase_noise.

Step-by-step derivation: L12Sϕ\mathcal{L}\approx\tfrac12 S_\phi comes from small-angle (narrowband) PM

That 12\frac12 above is not pulled out of thin air; it is a direct consequence of narrowband phase modulation (PM with a very small phase swing). We derive it step by step and make "one sideband's power =(ϕp/2)2=(\phi_p/2)^2" explicit.

Step 1: write a carrier phase-modulated by a single tone. Let the phase be modulated at a single frequency ωm\omega_m (offset angular frequency) with a small amplitude ϕp\phi_p (peak phase, the peak of the phase swing, rad):

v(t)=cos(ω0t+ϕ(t)),ϕ(t)=ϕpsinωmt,ϕp1 rad.v(t)=\cos\big(\omega_0 t+\phi(t)\big),\qquad \phi(t)=\phi_p\sin\omega_m t,\quad \phi_p\ll 1\ \text{rad}.
  • Physics used: this is Step 1's excess phase Δϕ\Delta\phi replaced by a phase that swings sinusoidally in time; ϕp\phi_p is its amplitude.
  • Units: ϕp\phi_p and ϕ(t)\phi(t) are both rad; ω0,ωm\omega_0,\omega_m are both rad/s.

Step 2: expand the phase modulation with a trig identity. Use the angle-sum formula cos(A+B)=cosAcosBsinAsinB\cos(A+B)=\cos A\cos B-\sin A\sin B with A=ω0tA=\omega_0 t, B=ϕ(t)B=\phi(t):

v(t)=cosω0tcos ⁣(ϕpsinωmt)sinω0tsin ⁣(ϕpsinωmt).v(t)=\cos\omega_0 t\,\cos\!\big(\phi_p\sin\omega_m t\big)-\sin\omega_0 t\,\sin\!\big(\phi_p\sin\omega_m t\big).

Step 3: the small-angle approximation (this is all "small-angle" means). Because ϕp1\phi_p\ll1:

cos ⁣(ϕpsinωmt)1,sin ⁣(ϕpsinωmt)ϕpsinωmt.\cos\!\big(\phi_p\sin\omega_m t\big)\approx 1,\qquad \sin\!\big(\phi_p\sin\omega_m t\big)\approx \phi_p\sin\omega_m t.
  • Math used: Taylor expansions cosx1x2/2\cos x\approx1-x^2/2, sinxx\sin x\approx x, keeping first order only (x=ϕpsinωmtx=\phi_p\sin\omega_m t, whose x2x^2 is O(ϕp2)O(\phi_p^2) and can be dropped). This is exactly the small-amplitude limit of the Bessel expansion J01, J1ϕp/2J_0\approx1,\ J_1\approx\phi_p/2.

Substituting back:

v(t)cosω0tϕpsinω0tsinωmt.v(t)\approx\cos\omega_0 t-\phi_p\sin\omega_0 t\,\sin\omega_m t.

Step 4: split sin×sin\sin\times\sin into the two sidebands. Use the product-to-sum identity sinαsinβ=12[cos(αβ)cos(α+β)]\sin\alpha\sin\beta=\tfrac12[\cos(\alpha-\beta)-\cos(\alpha+\beta)] with α=ω0t\alpha=\omega_0 t, β=ωmt\beta=\omega_m t:

v(t)cosω0tϕp2[cos(ω0ωm)tcos(ω0+ωm)t]=cosω0tcarrierϕp2cos(ω0ωm)tlower sideband+ϕp2cos(ω0+ωm)tupper sideband.\begin{aligned} v(t)&\approx\cos\omega_0 t-\frac{\phi_p}{2}\Big[\cos(\omega_0-\omega_m)t-\cos(\omega_0+\omega_m)t\Big]\\ &=\underbrace{\cos\omega_0 t}_{\text{carrier}}-\underbrace{\frac{\phi_p}{2}\cos(\omega_0-\omega_m)t}_{\text{lower sideband}}+\underbrace{\frac{\phi_p}{2}\cos(\omega_0+\omega_m)t}_{\text{upper sideband}}. \end{aligned}
  • Physical meaning: phase modulation grows a symmetric pair of sidebands next to the carrier, at ω0±ωm\omega_0\pm\omega_m, each with amplitude ϕp/2\phi_p/2. This is the time-domain origin of the "carrier smeared into a skirt" picture of [P1] Fig. 8.

Step 5: each sideband's relative power. The carrier has amplitude 11, power 1\propto 1 (taking 1212\tfrac12\cdot1^2); a single sideband has amplitude ϕp/2\phi_p/2, power (ϕp/2)2\propto(\phi_p/2)^2. So the single-sideband-to-carrier power ratio is

P1 sidebandPcarrier=12(ϕp/2)212(1)2=(ϕp2)2=ϕp24.\frac{P_{\text{1 sideband}}}{P_{\text{carrier}}}=\frac{\tfrac12(\phi_p/2)^2}{\tfrac12(1)^2}=\Big(\frac{\phi_p}{2}\Big)^2=\frac{\phi_p^2}{4}.
  • Dimension check: a power ratio is dimensionless ✓; ϕp\phi_p (rad) squared is read as rad2\text{rad}^2 in the "phase power" context.

Step 6: connect it to SϕS_\phi. For ϕ(t)=ϕpsinωmt\phi(t)=\phi_p\sin\omega_m t, the mean square (variance) of the phase is

ϕ2(t)=ϕp2sin2ωmt=ϕp22.\langle\phi^2(t)\rangle=\phi_p^2\langle\sin^2\omega_m t\rangle=\frac{\phi_p^2}{2}.

All of this single tone's phase power ϕp2/2\phi_p^2/2 is concentrated in the one spectral line at ωm\omega_m; reading it as "the single-sided phase-PSD strength at ωm\omega_m" gives Sϕ(ωm)=ϕp2/2S_\phi(\omega_m)=\phi_p^2/2 (per-Hz, taken as the weight of one line).

Step 7: divide the two, and the 12\frac12 appears. L\mathcal{L} (SSB) = single-sideband power ratio =ϕp2/4=\phi_p^2/4; Sϕ=ϕp2/2S_\phi=\phi_p^2/2. So

 L=ϕp2/41=12ϕp22=12Sϕ \boxed{\ \mathcal{L}=\frac{\phi_p^2/4}{1}=\frac12\cdot\frac{\phi_p^2}{2}=\frac12 S_\phi\ }
  • One-sentence summary: L\mathcal{L} counts one sideband (power (ϕp/2)2=ϕp2/4(\phi_p/2)^2=\phi_p^2/4), while SϕS_\phi is the total phase power density (ϕp2/2\phi_p^2/2, i.e. the two sidebands combined). One side ÷ total =12=\tfrac12 — that is the entire origin of the factor-of-12\tfrac12.
  • Failure condition: once ϕp\phi_p is no longer 1\ll1, the higher-order Bessel terms of Step 3 (J2,J3,J_2,J_3,\dots) grow additional sidebands and L=12Sϕ\mathcal{L}=\tfrac12 S_\phi no longer holds — at large phase the carrier also "loses power" to the higher-order sidebands.
  • Small-angle condition: L12Sϕ\mathcal{L}\approx\frac12 S_\phi holds only for σϕ1\sigma_\phi\ll1 rad (Bessel expansion kept to first order). Here σϕ=14\sigma_\phi=14 mrad 1\ll1, OK.
  • Canonical numbers: at 1 MHz, L=100\mathcal{L}=-100 dBc/Hz: Llin=10100/10=1010\mathcal{L}_{\text{lin}}=10^{-100/10}=10^{-10}; Sϕ(1MHz)=2×1010 rad2/HzS_\phi(1\text{MHz})=2\times10^{-10}\ \text{rad}^2/\text{Hz}.

Step 3: why integrating the phase PSD gives the variance

This step is pure Parseval / Wiener–Khinchin: integrate the PSD over frequency to obtain the time-domain variance (spec §3, Eq. 18):

 σϕ2=f1f2Sϕ(f)df \boxed{\ \sigma_\phi^2=\int_{f_1}^{f_2}S_\phi(f)\,df\ }
  • Math used: Sϕ(f)S_\phi(f) is "phase power per unit bandwidth"; summing (integrating) it over the offset band of interest [f1,f2][f_1,f_2] gives the total phase power = the variance σϕ2\sigma_\phi^2. This is the same move as integrating the current PSD into in2\overline{i_n^2} in Section 3 of stochastic_noise_basics.
  • Dimension check: (rad2/Hz)×Hz=rad2(\text{rad}^2/\text{Hz})\times\text{Hz}=\text{rad}^2 ✓.
  • Why the integration band [f1,f2][f_1,f_2] matters: the phase PSD at low offset is typically 1/f² (or even 1/f³), so the integral is dominated by the lower limit f1f_1. Moving f1f_1 by one decade can change the jitter by several times. So a reported jitter number must state its integration bandwidth, otherwise it is meaningless.
    • Upper limit f2f_2: physically set by the system bandwidth (for SerDes, the PLL loop bandwidth or Nyquist).
    • Lower limit f1f_1: for an open-loop oscillator the integral diverges toward DC (random walk); in practice it is set by the measurement time or by the frequency at which a PLL "holds" the phase.
  • Small-angle approximation (sinΔϕΔϕ\sin\Delta\phi\approx\Delta\phi): approximating the phase-modulation power as σϕ2\sigma_\phi^2 likewise requires σϕ1\sigma_\phi\ll1 rad.

The closed-form 1/f² integral (the core of this example)

Anchor the 1/f² shape from Step 2 at fref=1f_{ref}=1 MHz:

Sϕ(f)=Sϕ(fref)(freff)2=2×1010(106f)2.S_\phi(f)=S_\phi(f_{ref})\Big(\frac{f_{ref}}{f}\Big)^2=2\times10^{-10}\Big(\frac{10^6}{f}\Big)^2.

Substitute into the integral (note f2df=1/f\int f^{-2}df=-1/f):

σϕ2=2×1010(106)2106108dff2=2×102(11061108)=200×(106108)=200×9.9×107=1.98×104 rad2.\begin{aligned} \sigma_\phi^2&=2\times10^{-10}\,(10^6)^2\int_{10^6}^{10^8}\frac{df}{f^2} =2\times10^{2}\Big(\frac{1}{10^6}-\frac{1}{10^8}\Big)\\ &=200\times(10^{-6}-10^{-8})=200\times9.9\times10^{-7}=1.98\times10^{-4}\ \text{rad}^2. \end{aligned}

Take the square root:

σϕ=1.98×104=1.407×102 rad=14.07 mrad.\sigma_\phi=\sqrt{1.98\times10^{-4}}=1.407\times10^{-2}\ \text{rad}=14.07\ \text{mrad}.
  • Feel check: inside the parentheses 10610810^{-6}\gg10^{-8}, so the "1/f11/f_1" term dominates — confirming again that the lower limit dominates. Raising f2f_2 from 100 MHz to 1 GHz barely changes the answer; lowering f1f_1 from 1 MHz to 100 kHz blows the jitter up by 103.2×\sqrt{10}\approx3.2\times.

Step 4: phase variance → rms jitter

Apply Step 1's Δt=Δϕ/(2πf0)\Delta t=\Delta\phi/(2\pi f_0) to the rms quantities (spec §3, Eq. 19):

 σt=σϕ2πf0=12πf0f1f2Sϕ(f)df \boxed{\ \sigma_t=\frac{\sigma_\phi}{2\pi f_0}=\frac{1}{2\pi f_0}\sqrt{\int_{f_1}^{f_2}S_\phi(f)\,df}\ }

Substituting this example (f0=5f_0=5 GHz, σϕ=1.407×102\sigma_\phi=1.407\times10^{-2} rad):

σt=1.407×102 rad2π×5×109 Hz=1.407×1023.1416×1010 s=4.479×1013 s=447.9 fs.\sigma_t=\frac{1.407\times10^{-2}\ \text{rad}}{2\pi\times5\times10^{9}\ \text{Hz}} =\frac{1.407\times10^{-2}}{3.1416\times10^{10}}\ \text{s} =4.479\times10^{-13}\ \text{s}=447.9\ \text{fs}.
  • Dimension check: [rad]/[rad/s]=[s][\text{rad}]/[\text{rad/s}]=[\text{s}] ✓.
  • This is canonical Example C (spec §8): 5 GHz, 100-100 dBc/Hz @ 1 MHz, 1/f², integrated 1→100 MHz σϕ=14.07\Rightarrow\sigma_\phi=14.07 mrad, σt=447.9\sigma_t=447.9 fs.
  • Scaling feel: 10 dB better phase noise (L=110\mathcal{L}=-110) Sϕ\Rightarrow S_\phi 10× smaller σt\Rightarrow\sigma_t smaller by 103.2×\sqrt{10}\approx3.2\times 142\to\sim142 fs. 20 dB better (120-120) \Rightarrow 10× smaller 45\to\sim45 fs (see the reference points in numerical_feeling).

rms jitter obtained by integrating L(f)

The figure above (simulations/lab_08_jitter_integration.py) plots the 1/f² skirt at 100-100 dBc/Hz @ 1 MHz and how the cumulative integral converges to 447.9 fs with bandwidth; the numerical integration matches the hand-computed analytic result above exactly. This is a toy / analytic demo (single 1/f² source, small-angle approximation), not transistor-level.

One-line verification (using the built-in functions)

import numpy as np
from simulations.common.noise_utils import leeson_one_over_f2, integrate_rms_jitter

f = np.logspace(6, 8, 4000) # 1 MHz -> 100 MHz
L = leeson_one_over_f2(f, L_ref_dbc=-100, f_ref=1e6) # 1/f^2 skirt
sigma_t, sigma_phi = integrate_rms_jitter(f, L, f0=5e9, fmin=1e6, fmax=100e6)
print(sigma_phi*1e3, "mrad ;", sigma_t*1e15, "fs") # -> 14.07 mrad ; 447.9 fs

The four "dialects" of jitter (using the notation page's table)

The same word "jitter" can refer to entirely different measured quantities. The table below follows the definitions of notation (spec §2):

NameDefinitionIntuitionRelation to phase noise
random jitter (RJ)Gaussian, unbounded, described by σ\sigmawander from random kicksexactly the σt\sigma_t integrated above; SerDes BER uses it to estimate eye closure
period jitterTkTT_k-T (a single period relative to nominal)how long/short this one beat isintegrate SϕS_\phi after applying a sin2(πf/f0)\sin^2(\pi f/f_0)-type high-pass weight
cycle-to-cycle jitterTk+1TkT_{k+1}-T_k (difference of adjacent periods)how fast the beat changes beat to beatdifferences adjacent periods; even stronger high-pass weighting, least affected by close-in
accumulated / long-term jitteredge error over separation Δt\Delta t, σΔt=κΔt\sigma_{\Delta t}=\kappa\sqrt{\Delta t}an open-loop oscillator drifts further the longer it runsrandom walk; corresponds to integrating 1/f² down to very low offset ([P2] Eq.(8))
  • Why the distinction matters: period / cycle-to-cycle jitter apply a high-pass weight to SϕS_\phi (differencing suppresses low frequencies and amplifies high ones), so they are not dominated by close-in 1/f²; whereas the random / integrated jitter computed above (the absolute zero-crossing time error) is dominated by the lower limit. When reporting a number, say which kind it is, or the figures can differ by orders of magnitude.
  • accumulated jitter: a free-running oscillator has no absolute time reference; its phase is a random walk, σΔt=κΔt\sigma_{\Delta t}=\kappa\sqrt{\Delta t} ([P2] Eq.(8), p.792, claim C6). For ring details see [P2] and serdes_clocking_connection.

Weighting kernels for period / cycle-to-cycle / accumulated jitter (step-by-step derivation)

The "high-pass weighting" in the table above is not hand-waving; it has exact kernels. Key idea: the different kinds of jitter are different "differences" of the same phase process ϕ(t)\phi(t), and a time-domain difference is, in the frequency domain, multiplication by a transfer function. We derive the kernels step by step.

Step 1: write each edge's time error as a sample of the phase. The kk-th edge nominally lands at tk=kTt_k=kT; its time error is the phase at that instant divided by the angular velocity (reusing Step 1's Δt=Δϕ/(2πf0)\Delta t=\Delta\phi/(2\pi f_0)):

Δtk=ϕ(kT)2πf0.\Delta t_k=\frac{\phi(kT)}{2\pi f_0}.

Step 2: three jitters = three differences. By definition (spec §2):

period jitter:Jkper=Δtk+1Δtk=ϕ((k+1)T)ϕ(kT)2πf0(first difference of the phase),cycle-to-cycle:Jkc2c=Jk+1perJkper(second difference of the phase),accumulated:Δtk=ϕ(kT)2πf0(no differencing; the phase itself).\begin{aligned} \text{period jitter:}\quad &J^{\text{per}}_k=\Delta t_{k+1}-\Delta t_k=\frac{\phi((k{+}1)T)-\phi(kT)}{2\pi f_0}\quad(\text{first difference of the phase}),\\ \text{cycle-to-cycle:}\quad &J^{\text{c2c}}_k=J^{\text{per}}_{k+1}-J^{\text{per}}_k\quad(\text{second difference of the phase}),\\ \text{accumulated:}\quad &\Delta t_k=\frac{\phi(kT)}{2\pi f_0}\quad(\text{no differencing; the phase itself}). \end{aligned}

Step 3: differencing in the frequency domain = multiplying by (1ej2πfT)(1-e^{-j2\pi fT}). For a frequency component ϕ(t)ej2πft\phi(t)\propto e^{j2\pi ft}, a delay of one period TT is multiplication by ej2πfTe^{-j2\pi fT}. So the frequency response of the first-difference operator "now minus one period ago" is

Hper(f)=1ej2πfT,Hper(f)2=1ej2πfT2=4sin2(πfT).H_{\text{per}}(f)=1-e^{-j2\pi fT},\qquad \lvert H_{\text{per}}(f)\rvert^2=\big\lvert 1-e^{-j2\pi fT}\big\rvert^2=4\sin^2(\pi fT).
  • Algebraic expansion: 1ejθ2=(1cosθ)2+sin2θ=22cosθ=4sin2(θ/2)\lvert 1-e^{-j\theta}\rvert^2=(1-\cos\theta)^2+\sin^2\theta=2-2\cos\theta=4\sin^2(\theta/2); substituting θ=2πfT\theta=2\pi fT gives 4sin2(πfT)4\sin^2(\pi fT).
  • Why it is high-pass: as f0f\to0, sin2(πfT)(πfT)20\sin^2(\pi fT)\approx(\pi fT)^2\to0low frequencies get crushed; the maximum of 44 occurs at f=f0/2=1/(2T)f=f_0/2=1/(2T). This is the mathematical reason period jitter is "not dominated by close-in 1/f²".

Step 4: put the kernel into the phase-variance integral. Multiply the phase-variance density by H2\lvert H\rvert^2, integrate, then divide by (2πf0)2(2\pi f_0)^2 to convert to time (spec §10.2, period/cycle-to-cycle jitter kernels):

σT2=1(2πf0)20Sϕ(f)1ej2πfT2df=1(2πf0)20Sϕ(f)4sin2(πfT)df.\sigma_{T}^2=\frac{1}{(2\pi f_0)^2}\int_0^{\infty}S_\phi(f)\,\big\lvert 1-e^{-j2\pi fT}\big\rvert^2\,df =\frac{1}{(2\pi f_0)^2}\int_0^{\infty}S_\phi(f)\,4\sin^2(\pi fT)\,df.

Cycle-to-cycle takes one more difference, so the kernel is squared once more (a second difference = the first-difference operator applied twice):

σcc2=1(2πf0)20Sϕ(f)1ej2πfT4df=1(2πf0)20Sϕ(f)16sin4(πfT)df.\sigma_{cc}^2=\frac{1}{(2\pi f_0)^2}\int_0^{\infty}S_\phi(f)\,\big\lvert 1-e^{-j2\pi fT}\big\rvert^4\,df =\frac{1}{(2\pi f_0)^2}\int_0^{\infty}S_\phi(f)\,16\sin^4(\pi fT)\,df.

Accumulated jitter has no differencing kernel (kernel =1=1), so it is dominated by low frequencies (the 1/f² integral diverges once carried to very low offset), which is precisely the frequency-domain counterpart of its Δt\sqrt{\Delta t} random-walk growth ([P2] Eq.(8), p.792; κ from Eq.(12), p.793).

  • Dimension check: SϕS_\phi (rad2/Hz\text{rad}^2/\text{Hz}) × dimensionless kernel × Hz\text{Hz} = rad2\text{rad}^2; dividing by (2πf0)2(2\pi f_0)^2 (rad2/s2\text{rad}^2/\text{s}^2) gives s2\text{s}^2 ✓, and the square root yields seconds.
  • Three-line comparison: accumulated kernel =1=1 (low-frequency dominated); period kernel 1ej2πfT2\lvert1-e^{-j2\pi fT}\rvert^2 (first-order high-pass); cycle-to-cycle kernel 1ej2πfT4\lvert1-e^{-j2\pi fT}\rvert^4 (second-order high-pass, least sensitive to close-in).

Note (constant conventions): the expressions above use the "single-sided SϕS_\phi, 0\int_0^\infty" convention; with a double-sided PSD or a different SSB bookkeeping, the prefactor can differ by a factor of 2 — same root cause as the spec §3 factor-of-2 teaching note. For jitter this site always uses Sϕ=2LlinS_\phi=2\mathcal{L}_{\text{lin}} with single-sided integration. For exact constants consult each reference's definitions.

Canonical numbers: period jitter integrated from SϕS_\phi

Continuing Example C: f0=5f_0=5 GHz (T=200T=200 ps), L(1MHz)=100\mathcal{L}(1\text{MHz})=-100 dBc/Hz, 1/f² slope. Find the period jitter σT\sigma_T (integrate 1 MHz→100 MHz, the same band as Example C for comparison).

Insert the 1/f² shape from Step 3, Sϕ(f)=2×1010(106/f)2S_\phi(f)=2\times10^{-10}(10^6/f)^2, into the period kernel. First check the kernel's size over this band: T=2×1010T=2\times10^{-10} s; πfT\pi fT at f=106f=10^6 is π×106×2×1010=6.28×1041\pi\times10^6\times2\times10^{-10}=6.28\times10^{-4}\ll1, and at f=108f=10^8 it is 6.28×10216.28\times10^{-2}\ll1. So the small-angle form sin2(πfT)(πfT)2\sin^2(\pi fT)\approx(\pi fT)^2 applies over the whole band:

1ej2πfT24(πfT)2=(2πfT)2.\big\lvert 1-e^{-j2\pi fT}\big\rvert^2\approx 4(\pi fT)^2=(2\pi fT)^2.

Substitute into the period integral:

σT2=1(2πf0)2106108 ⁣2×1010(106f)2(2πfT)2df=(2πT)2(2πf0)22×1010(106)2106108 ⁣df=T42×1010(106)2106108 ⁣df.\begin{aligned} \sigma_T^2&=\frac{1}{(2\pi f_0)^2}\int_{10^6}^{10^8}\!2\times10^{-10}\Big(\frac{10^6}{f}\Big)^2(2\pi fT)^2\,df\\ &=\frac{(2\pi T)^2}{(2\pi f_0)^2}\,2\times10^{-10}(10^6)^2\int_{10^6}^{10^8}\!df =T^4\cdot 2\times10^{-10}(10^6)^2\int_{10^6}^{10^8}\!df. \end{aligned}

Collect the constants: (2πT)2/(2πf0)2=T2/f02=T2T2=T4(2\pi T)^2/(2\pi f_0)^2=T^2/f_0^2=T^2\cdot T^2=T^4 (since f0=1/Tf_0=1/T), and the two powers of ff cancel (f2f2=1f^{-2}\cdot f^{2}=1), so the integral becomes 106108df=9.9×107\int_{10^6}^{10^8}df=9.9\times10^7 Hz:

σT2=T42×1010(106)2(9.9×107)=(2×1010)42×101010129.9×107.\begin{aligned} \sigma_T^2&=T^4\cdot 2\times10^{-10}\cdot(10^6)^2\cdot(9.9\times10^7)\\ &=(2\times10^{-10})^4\cdot 2\times10^{-10}\cdot10^{12}\cdot9.9\times10^7. \end{aligned}

Term by term: T4=(2×1010)4=16×1040=1.6×1039T^4=(2\times10^{-10})^4=16\times10^{-40}=1.6\times10^{-39}; 2×10101012=2×1022\times10^{-10}\cdot10^{12}=2\times10^{2}; multiplying by 9.9×1079.9\times10^7 gives 1.98×10101.98\times10^{10}. So

σT2=1.6×1039×1.98×1010=3.17×1029 s2    σT=5.6×1015 s=5.6 fs.\sigma_T^2=1.6\times10^{-39}\times1.98\times10^{10}=3.17\times10^{-29}\ \text{s}^2 \;\Rightarrow\;\sigma_T=5.6\times10^{-15}\ \text{s}=5.6\ \text{fs}.
  • Feel, side by side: same phase-noise plot, same integration band — the accumulated/RJ σt=447.9\sigma_t=447.9 fs (Example C, lower-limit dominated), yet the period jitter is only 5.6\sim5.6 fs — almost two orders of magnitude smaller! The reason is exactly the high-pass kernel (2πfT)2(2\pi fT)^2 crushing the close-in end (the 1 MHz end, the main contributor to RJ); period jitter instead accumulates from the high-frequency end. This is the best possible teaching example of "always say which kind of jitter you are reporting."
  • Dimension check: T4T^4 (s4\text{s}^4) ×(rad2/Hz)×Hz×f0\times\,\text{(rad}^2/\text{Hz)}\times\text{Hz}\times f^{0} collapses to s2\text{s}^2 ✓.
import numpy as np
from simulations.common.noise_utils import phase_psd_to_l_dbc_per_hz # noqa: F401
# period jitter: multiply S_phi by |1-e^{-j2πfT}|^2 = 4 sin^2(πfT), integrate, divide by (2πf0)^2
f = np.logspace(6, 8, 200000)
f0 = 5e9; T = 1.0/f0
S_phi = 2e-10 * (1e6/f)**2 # 1/f^2, reconstructed from -100 dBc/Hz @1MHz
kernel = np.abs(1 - np.exp(-1j*2*np.pi*f*T))**2 # = 4 sin^2(πfT) high-pass kernel
sigma_T = np.sqrt(np.trapezoid(S_phi*kernel, f)) / (2*np.pi*f0)
print(sigma_T*1e15, "fs period jitter") # -> ~5.6 fs (far below the 447.9 fs RJ)

Validity and failure conditions

ConditionWhen it holdsWhen it fails
Small angle σϕ1\sigma_\phi\ll1 radL12Sϕ\mathcal{L}\approx\frac12 S_\phi; Δt=Δϕ/(2πf0)\Delta t=\Delta\phi/(2\pi f_0) linearlarge phase → full Bessel expansion needed, L12Sϕ\mathcal{L}\neq\frac12 S_\phi
Finite, explicit integration bandσt\sigma_t converges, reproducible1/f² diverges when integrated to DC; a number without a stated band is meaningless
Single 1/f² shape (this example)closed-form analytic result usablereal plots have 1/f³ + a flat floor; integrate piecewise or numerically
RJ is Gaussianestimate BER from σ\sigmawith deterministic jitter (DJ) present, an RJ/DJ decomposition is required

Corresponding papers / formulas

  • Δt=Δϕ/(2πf0)\Delta t=\Delta\phi/(2\pi f_0), σϕ2=Sϕdf\sigma_\phi^2=\int S_\phi df, σt=σϕ/(2πf0)\sigma_t=\sigma_\phi/(2\pi f_0), L12Sϕ\mathcal{L}\approx\frac12 S_\phi: spec §3, Eqs. 16–19.
  • accumulated jitter σΔt=κΔt\sigma_{\Delta t}=\kappa\sqrt{\Delta t}: [P2] Eq.(8), p.792 (claim C6).
  • the origin of phase noise itself (white noise → 1/f²): [P1] Eq.(21), p.185.
  • figure: phase_noise_to_jitter_integration.png (lab_08), per spec §4.

Worked examples

The two problems below run the full chain and the weighting kernel once each. Format: problem → step-by-step substitution (with units) → result → dimension check → one-line Python verification (using simulations/common/).

Example C: phase noise plot → rms jitter (canonical, 100-100 dBc/Hz → 447.9 fs)

Problem: f0=5f_0=5 GHz, L(1MHz)=100\mathcal{L}(1\text{MHz})=-100 dBc/Hz, 1/f² slope, integrate 1 MHz→100 MHz; find the rms (accumulated/RJ) jitter σt\sigma_t.

Step 1 (de-dB + recover SϕS_\phi): Llin=10100/10=1010\mathcal{L}_{\text{lin}}=10^{-100/10}=10^{-10}; Sϕ(1MHz)=2Llin=2×1010 rad2/HzS_\phi(1\text{MHz})=2\mathcal{L}_{\text{lin}}=2\times10^{-10}\ \text{rad}^2/\text{Hz}.

Step 2 (1/f² shape):

Sϕ(f)=2×1010(106f)2.S_\phi(f)=2\times10^{-10}\Big(\frac{10^6}{f}\Big)^2.

Step 3 (integrate for the variance, f2df=1/f\int f^{-2}df=-1/f):

σϕ2=2×1010(106)2 ⁣106108 ⁣dff2=2×102(11061108)=200×9.9×107=1.98×104 rad2.\sigma_\phi^2=2\times10^{-10}(10^6)^2\!\int_{10^6}^{10^8}\!\frac{df}{f^2} =2\times10^{2}\Big(\frac{1}{10^6}-\frac{1}{10^8}\Big)=200\times9.9\times10^{-7}=1.98\times10^{-4}\ \text{rad}^2. σϕ=1.98×104=1.407×102 rad=14.07 mrad.\sigma_\phi=\sqrt{1.98\times10^{-4}}=1.407\times10^{-2}\ \text{rad}=14.07\ \text{mrad}.

Step 4 (convert to time):

σt=σϕ2πf0=1.407×1022π×5×109=4.479×1013 s=447.9 fs.\sigma_t=\frac{\sigma_\phi}{2\pi f_0}=\frac{1.407\times10^{-2}}{2\pi\times5\times10^{9}}=4.479\times10^{-13}\ \text{s}=447.9\ \text{fs}.
  • Result: σϕ=14.07\sigma_\phi=14.07 mrad, σt=447.9\sigma_t=447.9 fs.
  • Dimension check: Step 3 (rad2/Hz)×Hz=rad2(\text{rad}^2/\text{Hz})\times\text{Hz}=\text{rad}^2 ✓; Step 4 [rad]/[rad/s]=[s][\text{rad}]/[\text{rad/s}]=[\text{s}] ✓.
  • Feel: the integral is dominated by the lower limit f1=1f_1=1 MHz (1/f11/f21/f_1\gg1/f_2); always state the bandwidth when reporting jitter.
import numpy as np
from simulations.common.noise_utils import leeson_one_over_f2, integrate_rms_jitter
f = np.logspace(6, 8, 4000) # 1 MHz -> 100 MHz
L = leeson_one_over_f2(f, L_ref_dbc=-100, f_ref=1e6) # 1/f^2 skirt
sigma_t, sigma_phi = integrate_rms_jitter(f, L, f0=5e9, fmin=1e6, fmax=100e6)
print(sigma_phi*1e3, "mrad ;", sigma_t*1e15, "fs") # -> 14.07 mrad ; 447.9 fs

Example D: same L(f) → period jitter (apply the high-pass kernel 1ej2πfT2\lvert1-e^{-j2\pi fT}\rvert^2)

Problem: same as Example C (f0=5f_0=5 GHz, T=200T=200 ps, 100-100 dBc/Hz @ 1 MHz, 1/f², integrate 1→100 MHz), but now find the period jitter σT\sigma_T and see how far it differs from Example C's RJ.

Step 1 (small-angle form of the kernel): over this band πfT6.28×1021\pi fT\le 6.28\times10^{-2}\ll1, so 1ej2πfT2=4sin2(πfT)(2πfT)2\lvert1-e^{-j2\pi fT}\rvert^2=4\sin^2(\pi fT)\approx(2\pi fT)^2.

Step 2 (substitute into the period integral and cancel the powers): prefactor T2/f02=T4T^2/f_0^2=T^4, and f2f2=1f^{-2}\cdot f^{2}=1:

σT2=T42×1010(106)2 ⁣106108 ⁣df=T42×102(9.9×107).\sigma_T^2=T^4\cdot2\times10^{-10}(10^6)^2\!\int_{10^6}^{10^8}\!df =T^4\cdot2\times10^{2}\cdot(9.9\times10^7).

Step 3 (substitute T=2×1010T=2\times10^{-10} s): T4=1.6×1039 s4T^4=1.6\times10^{-39}\ \text{s}^4; the remaining factor =1.98×1010=1.98\times10^{10} (rad2Hz\text{rad}^2\cdot\text{Hz}, which multiplied by T4T^4 gives s2\text{s}^2):

σT2=1.6×1039×1.98×1010=3.17×1029 s2    σT=5.6 fs.\sigma_T^2=1.6\times10^{-39}\times1.98\times10^{10}=3.17\times10^{-29}\ \text{s}^2 \;\Rightarrow\;\sigma_T=5.6\ \text{fs}.
  • Result: σT5.6\sigma_T\approx5.6 fs, about 1/801/80 of Example C's RJ (447.9 fs).
  • Dimension check: T4(s4)×(rad2/Hz)×HzT^4(\text{s}^4)\times(\text{rad}^2/\text{Hz})\times\text{Hz} collapses to =s2=\text{s}^2 ✓.
  • Physics: the first-difference period kernel (2πfT)2(2\pi fT)^2 crushes the close-in region (RJ's main contributor); period jitter accumulates from the high-frequency end → same plot, different kind of jitter, numbers two orders of magnitude apart.
import numpy as np
f = np.logspace(6, 8, 200000)
f0 = 5e9; T = 1.0/f0
S_phi = 2e-10 * (1e6/f)**2 # reconstructed from -100 dBc/Hz @1MHz
kernel = np.abs(1 - np.exp(-1j*2*np.pi*f*T))**2 # 4 sin^2(πfT) high-pass kernel
sigma_T = np.sqrt(np.trapezoid(S_phi*kernel, f)) / (2*np.pi*f0)
print(sigma_T*1e15, "fs period jitter") # -> ~5.6 fs (<< 447.9 fs RJ)

Key takeaways

  • The four-step chain: dBc/Hz ×2,de-dBSϕσϕ2σϕ÷2πf0σt\xrightarrow{\times2,\text{de-dB}} S_\phi\xrightarrow{\int}\sigma_\phi^2 \xrightarrow{\sqrt{}}\sigma_\phi\xrightarrow{\div2\pi f_0}\sigma_t.
  • Δt=Δϕ/(2πf0)\Delta t=\Delta\phi/(2\pi f_0): phase divided by angular velocity = time; the denominator is 2πf02\pi f_0 (rad/s) — do not drop the 2π2\pi.
  • Sϕ=210L/10S_\phi=2\cdot10^{\mathcal{L}/10}; L12Sϕ\mathcal{L}\approx\frac12 S_\phi holds only at small angle.
  • The 1/f² jitter integral is dominated by the lower limit f1f_1 — always state the integration bandwidth when reporting jitter.
  • Canonical Example C: 5 GHz, 100-100 dBc/Hz @ 1 MHz, 1/f², 1→100 MHz \Rightarrow σϕ=14.07\sigma_\phi=14.07 mrad, σt=447.9\sigma_t=447.9 fs.
  • Four kinds of jitter: RJ / period / cycle-to-cycle / accumulated — different weightings, different dominant bands.
  • The root of L=12Sϕ\mathcal{L}=\tfrac12 S_\phi: small-angle PM grows symmetric sidebands; one sideband's power is (ϕp/2)2=ϕp2/4(\phi_p/2)^2=\phi_p^2/4, the total phase power is ϕp2/2\phi_p^2/2, and one side ÷ total =12=\tfrac12.
  • Weighting kernels: accumulated kernel =1=1 (low-frequency dominated); period kernel 1ej2πfT2=4sin2(πfT)\lvert1-e^{-j2\pi fT}\rvert^2=4\sin^2(\pi fT) (first-order high-pass); cycle-to-cycle kernel 1ej2πfT4\lvert1-e^{-j2\pi fT}\rvert^4 (second-order high-pass).
  • Same 100-100 dBc/Hz plot: RJ σt=447.9\sigma_t=447.9 fs, but the period jitter is only 5.6\sim5.6 fs — the high-pass kernel crushes close-in.

Further reading