β: This English translation is in beta — the Traditional-Chinese original is the authoritative version.
Diffusion-Constant Dictionary: κ, D, Linewidth, ADEV, and the 1/f² Coefficient Are One and the Same Number
Prerequisites: white_noise_to_phase_noise · lorentzian_linewidth · allan_variance | Next: capstone_lc_end_to_end
The white-noise phase diffusion of one and the same free-running oscillator goes by five "different" numbers in the mouths of five different communities:
- The ring / jitter crowd ([P2]) speaks in : "how many is the accumulated-jitter constant?"
- The theoretical-physics / Demir crowd speaks in : "how many is the phase diffusion constant?"
- The laser / spectroscopy crowd speaks in linewidth: "how many Hz is the 3-dB linewidth?"
- The RF / IC crowd speaks in : "how many dBc/Hz is the skirt at 1 MHz offset?"
- The clock / metrology crowd speaks in ADEV: "what is the white-FM segment of at s?"
This page proves that these five numbers are one physical quantity wearing five outfits, and gives the complete conversion chain with every single
factor of 2 reconciled. In 40 years, the most common oscillator-spec error I have seen is not a miscalculated
or a mismeasured PSD — it is dropping a 2 while changing between these five outfits.
So every step on this page states explicitly which convention each 2 comes from (single- or double-sided? or
? SSB or ?), and at the end lab_23 signs off with one simulation, five extraction paths, all recovering the same number.
Physical intuition (conclusion first): white noise turns the phase into a random walk (a Wiener process), and a random walk has only one free parameter — how fast the variance grows per second. We write it (units ). Everything you will ever measure — how jitter grows as , how fat the carrier is, how high the skirt sits, how stable the clock is — is just the shadow of this one rate projected onto different instruments. The dictionary's job: given the number in any one outfit, hand you the other four immediately.
Step 0: there is only one protagonist — the phase-variance growth rate κ²
Everything starts from the phase integral of [P1] Eq.(11), p.182 (derivation in convolution_derivation):
Here is the excess phase (rad), the ISF (dimensionless), the maximum node charge swing (C), and the noise current (A). We want — step by step.
Step (i): the white-noise autocorrelation — the first factor of 2 (single-sided-PSD bookkeeping). In circuit convention is a single-sided PSD (units , defined for only; datasheets and [P1][P2] both use it). Recovering the autocorrelation from a single-sided PSD goes through Wiener–Khinchin (see stochastic_noise_basics):
That is not physics; it is the bookkeeping of folding two-sided power onto one side: for the same total power, the single-sided density is 2× the double-sided one, so recovering the strength divides it back out. This is the first — and the most easily forgotten — 2 on this page.
Step (ii): variance = double integral + delta collapse.
Step (iii): the time average of = . As long as the observation spans many periods (), the oscillation of averages out, leaving only its mean square:
Result (the protagonist of this page):
This is verbatim [P2] Eq.(11), p.793 (phase jitter for a single white source at or : , verified).
- Physical meaning: is "how many the phase variance grows per second". It is the random walk's step rate — all five outfits below are determined by it alone.
- Unit check: ; ; . The quotient gives ; rad is dimensionless, hence ✓.
- Canonical numbers (Example B's values, consistent site-wide): , pC, :
The truly ideal LC (, see rms_isf) gives — exactly 2× larger, because differs by 2×.
- Validity: white, stationary, a single source, , LTV small-signal. Flicker () sources are excluded — their variance grows faster than linearly (corresponding to the skirt and the ADEV floor, see flicker_noise_upconversion).
Outfit One: κ — the ring / jitter crowd's language ([P2])
[P2] Eq.(8), p.792 writes the free-running oscillator's accumulated jitter as a random walk:
Take the square root of Step 0's result, , and the proportionality constant is exactly [P2] Eq.(12), p.793 (verified):
The κ unit trap (honesty note, verified): [P2]'s prose describes Eq.(8) as timing jitter , but the printed Eq.(12) has no (checked verbatim against the original PDF), and its dimensions are — so the of Eq.(12) is really the phase-domain constant, fully consistent with the phase-jitter definition of Eq.(10), p.793 () and with Eq.(11). For the time-domain version, divide by : , , units . When other pages on this site (e.g. the paper_002 deep dive) write with in , they mean this . The two differ only by an ; the physics is the same.
- Relation to κ²: — Outfit One is just the protagonist under a square root.
- Unit check: ✓ (rad dimensionless); : ✓.
- Canonical numbers: . Attach GHz: . Measure two edges apart: fs. Dimension check: ✓.
import numpy as np
gamma_rms, qmax, Si, f0 = 0.5, 1e-12, 1e-24, 5e9
kappa = gamma_rms / qmax * np.sqrt(0.5 * Si) # [P2] Eq.(12)
print(round(kappa, 4)) # -> 0.3536
print(f"{kappa/(2*np.pi*f0)*np.sqrt(1e-6)*1e15:.2f}") # -> 11.25 fs (integrated over 1 µs)
Outfit Two: D — the two conventions for the diffusion constant (this page's reconciliation core)
The literature carries two definitions of the "diffusion constant ", differing by a 2. This section is the head-on reconciliation between the spec (Spec 11.2) and [P2] Eq.(11) — with a single job: state exactly what equals under each convention. (The CJK subscripts in the math below are kept from the original notation: 甲 = convention A, 乙 = convention B.)
Convention A (the rate convention): define directly as the variance growth rate —
Convention B (the Demir / laser convention, as written in [E2] Demir 2000 and the laser-linewidth literature): mimic Brownian motion and put the 2 out front —
The two differ only in naming; the physics (how fast the variance grows) is identical. Written in ISF quantities:
Reconciliation with Spec 11.2 / lorentzian_linewidth (important; fixed in v5 per this page): Spec 11.2 v3 once wrote (canonical , true LC ) — that value is precisely , i.e. convention A's (the variance growth rate itself). But the same paragraph of the spec also wrote (convention B's variance law). The two statements cannot both hold: if and , the variance would have to grow per second, contradicting [P2] Eq.(11) ( per second). Simulation verdict (
lab_23, panel (a)): synthesizing ISF-weighted white-noise phase with the canonical constants yields — landing on the line, not on the line. Conclusion: the canonical value is correct, but it is convention A's (); the variance law that goes with it must be . If you insist on convention B's , then must be read as . This affects no scaling — only the absolute value of the linewidth in the next section (see Outfit Three's honesty note).
- Units: both 's are (equivalently ) ✓.
- One-line dictionary: . Before quoting to anyone, first ask whether their expression carries that 2.
Outfit Three: the Lorentzian 3-dB linewidth
lorentzian_linewidth already derived the whole mechanism (Gaussian characteristic function → exponential autocorrelation → Wiener–Khinchin → Lorentzian; it belongs to [E2] Demir 2000, external literature). Here we only walk the last mile of substituting , with units at every step:
Step (i): the amnesia envelope. The envelope of the carrier autocorrelation is (Gaussian characteristic function). Substitute the protagonist :
(Written in convention B this is the familiar — the same exponential.)
Step (ii): two-sided exponential → Lorentzian. The Fourier transform of is , with half power at . Here (units ), so the half-width at half maximum (HWHM) around the carrier is rad/s, and the full width at half maximum (FWHM) is twice that:
- Unit check: ✓.
- Canonical numbers: mHz (representative value
); the truly ideal LC () gives mHz.
lab_23measures the spectrum of the synthesized carrier directly: the Lorentzian fit gives 20.0 mHz, the direct half-power readout 20.3 mHz (panel (b)), matching mHz.
- External cross-check (standard result): for white frequency noise with single-sided PSD (), the linewidth is . Outfit Four will give ; substituting: ✓ same answer. (This relation is external literature, not among the 5 source PDFs: G. Di Domenico, S. Schilt, and P. Thomann, "Simple approach to the relation between laser frequency noise and laser line shape," Applied Optics, vol. 49, no. 25, pp. 4801–4807, 2010.)
Honest reconciliation (the ×2 linewidth note; fixed in v5): lorentzian_linewidth Example 2 and capstone_lc_end_to_end Station ⑥ in v3 quoted together with / , getting 40 mHz / 80 mHz (Example 1, same method, got 1257 Hz). Per this page's reconciliation: that value is convention A's (), while is convention B's formula — plugging an A value into a B formula inflates the linewidth by . The rigorous derivation and the
lab_23measurement both give : 19.9 mHz (representative value) / 39.8 mHz (true LC) / 628 Hz (the dBc/Hz@1MHz anchor). Note thatlab_18's simulation itself is not wrong — it uses convention B throughout (increment variance paired with ); the error is not in the Lorentzian mechanism, only in the convention mix-up at the "ISF quantities → " step. The scaling () is entirely unaffected. v5 has been corrected per this page's verdict: Spec 11.2 now reads ; lorentzian_linewidth Examples 1/2 → 628 Hz / 20 mHz; capstone Station ⑥ → 40 mHz (HWHM 20 mHz); lab_22 updated in step. This page's MC verdict ( rad²/s, mHz) is the basis of the fix.
Outfit Four: the 1/f² phase-PSD coefficient and
Step (i): is white. The protagonist says the variance grows by per second, equivalent to the autocorrelation of , . Its double-sided PSD is , its single-sided PSD (units ). The second factor of 2: single- vs double-sided — the same family as Step 0's .
Step (ii): the integrator divides by . , so the PSD is divided by (labels in the box: 單邊 = single-sided, 雙邊 = double-sided):
In the coefficient form : (units ). This is exactly the clean time-domain version of white_noise_to_phase_noise's — substitute and it follows, fully consistent ✓.
Step (iii): — the third factor of 2 (SSB /2 vs /4, stated explicitly across the site).
The former is the clean small-angle-PM result (spec Eq.16); the latter is [P1] Eq.(21), p.185's SSB bookkeeping (); they differ by 3 dB — this is exactly why and dBc/Hz coexist site-wide, each with its own note (see the factor-of-2 teaching note in white_noise_to_phase_noise). It is also the Lorentzian's far tail: Outfit Three's normalized Lorentzian at tends ✓.
- Canonical numbers ( MHz, rad/s, ): dBc/Hz; dBc/Hz — exactly Example B's signature numbers ✓. .
- Unit check: ; attach rad² to get ✓.
- Reverse dictionary lookup (measured skirt → protagonist): . Example: a datasheet-grade dBc/Hz@1MHz (the Example C anchor) gives , linewidth Hz, (2 ps accumulated over 1 µs) — one number, and the whole dictionary follows.
Outfit Five: white-FM Allan deviation
Step 1 of allan_variance supplied the adapter . Substitute Outfit Four:
Along the way we also obtained the frequency-noise PSD used in Outfit Three: () — the same number as . Coincidence? No: is constant for a skirt by construction.
The closed-form white-FM ADEV (the kernel-integral result of Step 3 in allan_variance; standard frequency-metrology result, IEEE Std 1139): , hence
- Unit check: ✓ ( dimensionless).
- Canonical numbers ( GHz): ; , . Cross-check: Example 2 of allan_variance used dBc/Hz and got ; ours at dBc/Hz is 45 dB lower, so should be times smaller: ✓ matches.
- Closing the dictionary loop (the prettiest step): multiply the ADEV back by to get the time-domain drift — exactly Outfit One's accumulated timing jitter . Five outfits, one full circle back to the start; the dictionary is self-consistent ✓.
The dictionary master table (change outfits at a glance)
Protagonist: . The canonical column uses , pC, , GHz (the truly ideal LC replaces with : linewidth, , follow linearly ×2, the -type entries ×).
| Outfit | In terms of | Units | Canonical value | Who says it | Source |
|---|---|---|---|---|---|
| Variance growth rate (protagonist) | theory | [P2] Eq.(11) p.793 | |||
| ① (phase) | ring/jitter | [P2] Eq.(8) p.792, Eq.(12) p.793 | |||
| ① (time) | ring/jitter | converted via [P2] Eq.(10) p.793 | |||
| ② (convention A) | () | rate convention (spec v3 once mislabeled this value as ) | reconciliation in Outfit Two | ||
| ② (convention B) | () | Demir/laser; this site's Spec 11.2 (v5) | [E2] Demir 2000 | ||
| ③ 3-dB linewidth | Hz | mHz | laser/spectroscopy | Outfit Three; [E2] | |
| ④ coefficient | (single-sided) | RF/IC | [P1] Eq.(21) p.185 (the version) | ||
| ④ @1MHz | ; | dBc/Hz | / | RF/IC | spec Eq.16; [P1] Eq.(21) |
| ⑤ white-FM ADEV | — | @1s | clock/metrology | [E1] Allan 1966; IEEE 1139 |
Outfit-change mnemonic: "Take the square root to wear ①; divide by 2 to wear ② (convention B); divide by to wear ③; multiply by 2 and divide by to wear ④; divide by and then by to wear ⑤." Where each 2 comes from: ①→none; ②→the definition; ③→FWHM is the full width (HWHM×2); ④→single-sided PSD (plus the separate 3 dB of SSB vs ); ⑤→the Allan-definition gets absorbed by the white-FM kernel integral into .
Companion simulation figure (lab_23: one simulation, five extraction paths)
simulations/lab_23_diffusion_dictionary.py uses the discrete form of [P1] Eq.(11) to synthesize one
ISF-weighted white-noise phase record (, ,
pC, , all true values; the carrier uses a normalized
Hz — the linewidth does not depend on , only the ADEV does, and its scaling is
self-verified inside the simulation before being converted analytically to 5 GHz), total length s, then extracts the same via four independent paths:

| Item | Value | Notes |
|---|---|---|
| Model | toy / illustrative (not transistor-level) | [P1] Eq.(11) discrete integration, Wiener phase |
| , pC, | canonical Example B true values | |
| Theory | [P2] Eq.(11)/(12) | |
| (a) Variance slope | lands on , not on (the red dotted line is falsified) | |
| (b) Linewidth | fit mHz, direct half-power readout mHz | theory mHz |
| (c) ADEV | ; slope | |
| (d) | plateau of |
How to read it: (a) the blue dots (measured variance) hug the black dashed line, while the red dotted line (where the spec's with would have to run) sits 2× higher throughout — this is the simulation verdict of Outfit Two's reconciliation. (b) The spectrum flattens near the carrier, FWHM 20 mHz; same . (c) The ADEV is one straight line of slope ; its horizontal intercept recovers . (d) The skirt's coefficient recovers (single-sided). Four instruments, one number.
Core Python (full script: simulations/lab_23_diffusion_dictionary.py;
the ADEV estimator reuses overlapping_adev from lab_19_allan.py verbatim; run with
PYTHONPATH=. python3 simulations/lab_23_diffusion_dictionary.py):
import numpy as np
from simulations.common.noise_utils import white_noise
GAMMA_RMS, QMAX, SI, F0_REAL = 0.5, 1e-12, 1e-24, 5e9
KAPPA2 = GAMMA_RMS**2 * SI / (2 * QMAX**2) # [P2] Eq.(11)/(12)
print(f"{KAPPA2:.4f}") # -> 0.1250
FS, N, F0_SIM = 64.0, 2**23, 16.0
t = np.arange(N) / FS
gamma = -np.sqrt(2.0) * GAMMA_RMS * np.sin(2 * np.pi * F0_SIM * t) # rms=0.5
i_n = white_noise(N, SI, FS, np.random.default_rng(23)) # single-sided PSD = SI
phi = np.cumsum(gamma * i_n / FS / QMAX) # [P1] Eq.(11), discrete form
# (a) variance slope -> kappa^2 (also falsifies 2*0.125*t; the full script takes the median over multiple lags: 0.1252)
m = 640 # tau = 10 s
print(f"{np.mean((phi[m:] - phi[:-m])**2) / (m / FS):.4f}") # -> 0.1251
# (b) Lorentzian linewidth: linear fit of 1/S vs offset^2 -> FWHM = 2*sqrt(c0/c1)
# (see full script; fit 20.03 mHz, direct half-power readout 20.26 mHz)
print(f"{KAPPA2 / (2 * np.pi) * 1e3:.2f}") # -> 19.89 mHz theory
# (c)(d) ADEV and S_phi extraction (see full script)
# qhat_ADEV = 0.1254 ; qhat_Sphi = 0.1254
# the whole dictionary at the canonical 5 GHz
dw = 2 * np.pi * 1e6
print(f"{10*np.log10(KAPPA2/dw**2):.1f}") # -> -145.0 dBc/Hz (/2)
print(f"{10*np.log10(KAPPA2/(2*dw**2)):.1f}") # -> -148.0 dBc/Hz ([P1] /4)
print(f"{np.sqrt(KAPPA2):.4f}") # -> 0.3536 rad/sqrt(s)
print(f"{np.sqrt(KAPPA2)/(2*np.pi*F0_REAL):.4e}") # -> 1.1254e-11 sqrt(s)
print(f"{np.sqrt(KAPPA2/(4*np.pi**2*F0_REAL**2)/1.0):.3e}") # -> 1.125e-11 ADEV@1s
print(f"{KAPPA2/(2*np.pi**2):.3e}") # -> 6.333e-03 (b₋₂ coefficient)
One canonical example through all five outfits
Example (strict format: problem → step-by-step substitution with units → result → dimension check → one-line Python): , pC, , GHz. Find (1) and the 1 µs accumulated jitter, (2) both 's, (3) the linewidth, (4) in both conventions, (5) .
- Protagonist: .
- Outfit One: ; ; fs.
- Outfit Two: , .
- Outfit Three: mHz.
- Outfit Four: