Skip to main content

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

Core-Theory Chapter Exercises (with Full Solutions)

Prerequisite reading: this chapter's theory pages isf_definition, fourier_series_of_isf, rms_isf, white_noise_to_phase_noise, flicker_noise_upconversion, effective_isf (finish them before attempting the problems).

This page is the complete exercise set for Chapter 03, ISF Core Theory. The problems span derivations, numerical problems, and design back-calculations, all built around the [P1] Hajimiri–Lee ISF framework, using the site-wide notation.

Format: every solution = step-by-step substitution (with units) → result → dimension check → one-line Python verification. Python always imports from simulations/common/ (real functions, nothing fabricated).

Authoritative formulas involved (verbatim from spec Section 3, with citations):

  • impulse→phase (operational ISF): Δϕ=Γ(ω0τ)qmaxΔq\Delta\phi=\dfrac{\Gamma(\omega_0\tau)}{q_{max}}\,\Delta q (spec formula 5)
  • ISF Fourier series: Γ(ω0τ)=c02+n=1cncos(nω0τ+θn)\Gamma(\omega_0\tau)=\dfrac{c_0}{2}+\displaystyle\sum_{n=1}^{\infty}c_n\cos(n\omega_0\tau+\theta_n) ([P1] Eq.(12), p.183)
  • Parseval / rms ISF: n=0cn2=1π02πΓ(x)2dx=2Γrms2\displaystyle\sum_{n=0}^{\infty}c_n^2=\frac{1}{\pi}\int_0^{2\pi}\lvert\Gamma(x)\rvert^2dx=2\,\Gamma_{rms}^2 ([P1] Eq.(20), p.185)
  • The signature white-noise 1/f² result: L{Δω}=10log10 ⁣(Γrms2qmax2in2/Δf4Δω2)\mathcal{L}\{\Delta\omega\}=10\log_{10}\!\left(\dfrac{\Gamma_{rms}^2}{q_{max}^2}\cdot\dfrac{\overline{i_n^2}/\Delta f}{4\,\Delta\omega^2}\right) ([P1] Eq.(21), p.185)
  • 1/f³ corner: Δω1/f3=ω1/fc022Γrms2ω1/f(c0c1)2\Delta\omega_{1/f^3}=\omega_{1/f}\cdot\dfrac{c_0^2}{2\,\Gamma_{rms}^2}\approx\omega_{1/f}\left(\dfrac{c_0}{c_1}\right)^2 ([P1] Eq.(24), p.185)
  • effective ISF (cyclostationary): Γeff=Γα\Gamma_{eff}=\Gamma\cdot\alpha ([P1] Eqs.(25)–(27), p.186)

Problems

Exercise 1 (numerical) — impulse → phase step

Ideal LC (Γ(θ)=sinθ\Gamma(\theta)=-\sin\theta), qmax=1q_{max}=1 pC, f0=5f_0=5 GHz. A single charge impulse of Δq=1\Delta q=1 fC is injected. Find: (a) the phase step Δϕ\Delta\phi (rad) and the timing error Δt\Delta t (fs) for injection at θ=3π/2\theta=3\pi/2 (where Γ\Gamma takes its maximum +1+1). (b) Δϕ\Delta\phi for injection at the peak, θ=0\theta=0.

Quick check (work it out yourself, then check)
fs
Graded correct within ±5% relative error; scientific notation is accepted.

Exercise 2 (derivation + numerical) — Γrms\Gamma_{rms} from the ISF

A toy ISF is the two-harmonic waveform Γ(θ)=cosθ+12cos(2θ)\Gamma(\theta)=\cos\theta+\tfrac12\cos(2\theta). (a) Write down the Fourier coefficients c0,c1,c2c_0,c_1,c_2 directly. (b) Use Parseval to find cn2\sum c_n^2 and Γrms\Gamma_{rms}.

Exercise 3 (numerical) — white noise → L\mathcal{L} (applying Eq.(21))

f0=5f_0=5 GHz, Δf=1\Delta f=1 MHz, qmax=1q_{max}=1 pC, Γrms=0.5\Gamma_{rms}=0.5, Si=in2/Δf=1024 A2/HzS_i=\overline{i_n^2}/\Delta f=10^{-24}\ \text{A}^2/\text{Hz}. Use [P1] Eq.(21) to find L(1MHz)\mathcal{L}(1\,\text{MHz}) (dBc/Hz).

Quick check (work it out yourself, then check)
dBc/Hz
Graded correct within ±1% relative error; scientific notation is accepted.

Exercise 4 (design back-calculation) — solving for the required qmaxq_{max}

Keep the numbers from Exercise 3, but the target spec is now L(1MHz)=160\mathcal{L}(1\,\text{MHz})=-160 dBc/Hz (cleaner than Exercise 3). With all other parameters unchanged (Γrms=0.5\Gamma_{rms}=0.5, Si=1024S_i=10^{-24}, Δf=1\Delta f=1 MHz), by how much must qmaxq_{max} be scaled up?

Quick check (work it out yourself, then check)
pC
Graded correct within ±5% relative error; scientific notation is accepted.

Exercise 5 (derivation + numerical) — c01/f3c_0\to1/f^3 corner

An oscillator's measured ISF has c0=0.2c_0=0.2, c1=1.0c_1=1.0 (i.e., an appreciable DC offset — the waveform is up/down asymmetric), and the device 1/f corner is f1/f=1f_{1/f}=1 MHz (i.e., ω1/f=2π×106\omega_{1/f}=2\pi\times10^6 rad/s). Use [P1] Eq.(24) to estimate the 1/f31/f^3 corner frequency Δf1/f3\Delta f_{1/f^3} (with the c0/c1c_0/c_1 approximation). If the circuit is made symmetric (c00.02c_0\to0.02), what does the corner become?

Quick check (work it out yourself, then check)
kHz
Graded correct within ±2% relative error; scientific notation is accepted.

Exercise 6 (derivation) — the frequency-translation meaning of the Fourier coefficients

For a single tone injected near nω0n\omega_0, i(τ)=I0cos((nω0+Δω)τ)i(\tau)=I_0\cos((n\omega_0+\Delta\omega)\tau), use the product-to-sum identity to prove by hand that after weighting by the nn-th ISF harmonic cncos(nω0τ+θn)c_n\cos(n\omega_0\tau+\theta_n) and integrating, the surviving slow term gives ϕn(t)I0cn2qmaxsin(Δωtθn)Δω\phi_n(t)\approx\dfrac{I_0 c_n}{2q_{max}}\cdot\dfrac{\sin(\Delta\omega t-\theta_n)}{\Delta\omega}, and explain why this is exactly "the oscillator acting as a mixer, downconverting noise near nω0n\omega_0 to Δω\Delta\omega".

Exercise 7 (numerical) — effective ISF (cyclostationary)

A certain noise source conducts only during one half-cycle of the waveform. Approximate its noise modulating function (NMF) α(θ)\alpha(\theta) as square-wave gating: α(θ)=1\alpha(\theta)=1 for θ[0,π)\theta\in[0,\pi), α(θ)=0\alpha(\theta)=0 for θ[π,2π)\theta\in[\pi,2\pi). The base ISF is still Γ(θ)=sinθ\Gamma(\theta)=-\sin\theta. Find Γeff,rms\Gamma_{eff,rms} of the effective ISF Γeff=Γα\Gamma_{eff}=\Gamma\cdot\alpha, and compare with the always-conducting case Γrms=1/2\Gamma_{rms}=1/\sqrt2.

Quick check (work it out yourself, then check)
Graded correct within ±2% relative error; scientific notation is accepted.

Exercise 8 (design back-calculation) — Γrms/qmax\Gamma_{rms}/q_{max} from L\mathcal{L}

A 5 GHz LC oscillator measures L(1MHz)=130\mathcal{L}(1\,\text{MHz})=-130 dBc/Hz, and its white-noise source is known to be Si=2×1023 A2/HzS_i=2\times10^{-23}\ \text{A}^2/\text{Hz} (multi-source equivalent). Assuming the 1/f21/f^2 region is white-noise dominated, apply Eq.(21) to back-solve the effective Γrms/qmax\Gamma_{rms}/q_{max} (units 1/C1/\text{C}). If qmax=1.5q_{max}=1.5 pC, roughly what is Γrms\Gamma_{rms}?


Solutions

Exercise 1 solution (impulse → phase step)

(a) θ=3π/2\theta=3\pi/2. Γ=sin(3π/2)=(1)=+1\Gamma=-\sin(3\pi/2)=-(-1)=+1. Using spec formula 5:

Δϕ=ΓqmaxΔq=1×(1×1015 C)1×1012 C=1×103 rad=1 mrad.\Delta\phi=\frac{\Gamma}{q_{max}}\Delta q=\frac{1\times(1\times10^{-15}\ \text{C})}{1\times10^{-12}\ \text{C}}=1\times10^{-3}\ \text{rad}=1\ \text{mrad}.

Timing error (spec formula 17):

Δt=Δϕ2πf0=1032π×5×1093.18×1014 s=31.8 fs.\Delta t=\frac{\Delta\phi}{2\pi f_0}=\frac{10^{-3}}{2\pi\times5\times10^{9}}\approx3.18\times10^{-14}\ \text{s}=31.8\ \text{fs}.

(b) θ=0\theta=0. Γ=sin0=0Δϕ=0\Gamma=-\sin0=0\Rightarrow\Delta\phi=0 (injection at the peak only changes the amplitude, which the restoring force pulls back).

Result: (a) Δϕ=1\Delta\phi=1 mrad, Δt31.8\Delta t\approx31.8 fs; (b) Δϕ=0\Delta\phi=0.

Intuition: this is the full-scale version of canonical Example A (Γ=0.5\Gamma=0.5 gives 15.9 fs) — Γ=1\Gamma=1 gives twice that, i.e. 31.8 fs.

Dimension check: Γ\Gamma dimensionless ×\times (C/C) == rad ✓; radrad/s=s\dfrac{\text{rad}}{\text{rad/s}}=\text{s} ✓.

import numpy as np
from simulations.common.isf_utils import gamma_lc_ideal, impulse_to_phase_step
from simulations.common.noise_utils import phase_to_time_error
for th in (3*np.pi/2, 0.0):
dphi = impulse_to_phase_step(1e-15, gamma_lc_ideal(th), qmax=1e-12)
print(round(dphi*1e3,3), "mrad ;", round(phase_to_time_error(dphi,5e9)*1e15,1), "fs")
# -> 1.0 mrad ; 31.8 fs and 0.0 mrad ; 0.0 fs
Exercise 2 solution (Γrms\Gamma_{rms} from the ISF)

(a) Read off the coefficients. Match Γ(θ)=cosθ+12cos(2θ)\Gamma(\theta)=\cos\theta+\tfrac12\cos(2\theta) against the Fourier series Γ=c02+cncos(nθ+θn)\Gamma=\tfrac{c_0}{2}+\sum c_n\cos(n\theta+\theta_n): no constant term c0=0\Rightarrow c_0=0; first-harmonic amplitude c1=1c_1=1 (θ1=0\theta_1=0); second-harmonic amplitude c2=12c_2=\tfrac12 (θ2=0\theta_2=0); cn3=0c_{n\ge3}=0.

(b) Parseval. Spec formula 11:

n=0cn2=c02+c12+c22=0+12+(12)2=1.25.\sum_{n=0}^{\infty}c_n^2=c_0^2+c_1^2+c_2^2=0+1^2+\left(\tfrac12\right)^2=1.25.Γrms2=cn22=1.252=0.625Γrms=0.6250.791.\Gamma_{rms}^2=\frac{\sum c_n^2}{2}=\frac{1.25}{2}=0.625\quad\Longrightarrow\quad\Gamma_{rms}=\sqrt{0.625}\approx0.791.

Result: c0=0, c1=1, c2=0.5c_0=0,\ c_1=1,\ c_2=0.5; cn2=1.25\sum c_n^2=1.25; Γrms0.791\Gamma_{rms}\approx0.791.

Cross-check (direct integration): Γrms2=12π02π(cosθ+12cos2θ)2dθ\Gamma_{rms}^2=\tfrac{1}{2\pi}\int_0^{2\pi}(\cos\theta+\tfrac12\cos2\theta)^2d\theta; the cross term cosθcos2θ=0\int\cos\theta\cos2\theta=0 (orthogonality), leaving 12+1214=0.5+0.125=0.625\tfrac12+\tfrac12\cdot\tfrac14=0.5+0.125=0.625 ✓.

Dimension check: cnc_n and Γrms\Gamma_{rms} are all dimensionless ✓.

import numpy as np
from simulations.common.isf_utils import gamma_rms, compute_fourier_coefficients
theta = np.linspace(0, 2*np.pi, 8192, endpoint=False)
g = np.cos(theta) + 0.5*np.cos(2*theta)
print(gamma_rms(theta, g)) # -> 0.7906
a0, a, b, c, ph = compute_fourier_coefficients(theta, g, n_harmonics=3)
print(c[:3], np.sum(c**2)) # -> ~[1, 0.5] ... ; 1.25
Exercise 3 solution (white noise → L\mathcal{L}, applying Eq.(21))

Step-by-step substitution (with units). This is canonical Example B.

  1. Δω=2πΔf=2π×106=6.283×106 rad/s\Delta\omega=2\pi\Delta f=2\pi\times10^6=6.283\times10^6\ \text{rad/s}, Δω2=3.948×1013\Delta\omega^2=3.948\times10^{13}.
  2. Γrms2qmax2=0.25(1012)2=2.5×1023 C2\dfrac{\Gamma_{rms}^2}{q_{max}^2}=\dfrac{0.25}{(10^{-12})^2}=2.5\times10^{23}\ \text{C}^{-2}.
  3. Si4Δω2=10244×3.948×1013=6.332×1039\dfrac{S_i}{4\Delta\omega^2}=\dfrac{10^{-24}}{4\times3.948\times10^{13}}=6.332\times10^{-39}.
  4. Multiply: 2.5×1023×6.332×1039=1.583×10152.5\times10^{23}\times6.332\times10^{-39}=1.583\times10^{-15}.
  5. L=10log10(1.583×1015)=148.0 dBc/Hz\mathcal{L}=10\log_{10}(1.583\times10^{-15})=-148.0\ \text{dBc/Hz}.

Result: L(1MHz)148.0\mathcal{L}(1\,\text{MHz})\approx-148.0 dBc/Hz (the theoretical floor for a single ideal white-noise source).

Dimension check: inside the bracket, C2A2/Hz(rad/s)2\text{C}^{-2}\cdot\dfrac{\text{A}^2/\text{Hz}}{(\text{rad/s})^2}; with C=A⋅s\text{C}=\text{A·s} this reduces to s\text{s} (per-Hz), and taking 10log1010\log_{10} reads as dBc/Hz ✓. See white_noise_to_phase_noise.

import numpy as np
gamma_rms, qmax, Si = 0.5, 1e-12, 1e-24
dw = 2*np.pi*1e6
L = 10*np.log10((gamma_rms**2/qmax**2)*(Si/(4*dw**2)))
print(round(L,1), "dBc/Hz") # -> -148.0 dBc/Hz
Exercise 4 solution (solving for the required qmaxq_{max})

Back-calculation strategy. L1/qmax2\mathcal{L}\propto1/q_{max}^2 (denominator of Eq.(21)). The target is ΔL=160(148)=12\Delta L=-160-(-148)=-12 dB below Exercise 3. Writing L\mathcal{L} in linear form with everything else fixed, Llin1/qmax2\mathcal{L}_{\text{lin}}\propto1/q_{max}^2:

qmax,new2qmax,old2=Llin,oldLlin,new=10(148(160))/10=1012/10=101.2=15.85.\frac{q_{max,\text{new}}^2}{q_{max,\text{old}}^2}=\frac{\mathcal{L}_{\text{lin,old}}}{\mathcal{L}_{\text{lin,new}}}=10^{(-148-(-160))/10}=10^{12/10}=10^{1.2}=15.85.qmax,newqmax,old=15.85=3.98qmax,new3.98×1 pC=3.98 pC.\frac{q_{max,\text{new}}}{q_{max,\text{old}}}=\sqrt{15.85}=3.98\quad\Longrightarrow\quad q_{max,\text{new}}\approx3.98\times1\ \text{pC}=3.98\ \text{pC}.

Direct check (solving Eq.(21) for qmaxq_{max} outright): qmax=Γrms2LlinSi4Δω2q_{max}=\sqrt{\dfrac{\Gamma_{rms}^2}{\mathcal{L}_{\text{lin}}}\cdot\dfrac{S_i}{4\Delta\omega^2}}, with Llin=1016\mathcal{L}_{\text{lin}}=10^{-16}:

qmax=0.251016×6.332×1039=1.583×1023=3.98×1012 C=3.98 pC.q_{max}=\sqrt{\frac{0.25}{10^{-16}}\times6.332\times10^{-39}}=\sqrt{1.583\times10^{-23}}=3.98\times10^{-12}\ \text{C}=3.98\ \text{pC}.

Result: qmaxq_{max} must be scaled up by about to 3.98\approx3.98 pC (i.e., every 6 dB of phase-noise reduction costs qmaxq_{max} ×2\times2).

Intuition: this quantifies "increasing the signal swing is the most direct knob for lowering 1/f21/f^2 phase noise" (claim C3), but 12 dB demands 4× the charge swing, paid for in power/area — exactly the trade-off in tank_swing.

Dimension check: C2⋅s1\sqrt{\text{C}^{-2}\text{·s}^{-1}\cdots} inverts back to qmaxq_{max} in C ✓.

import numpy as np
gamma_rms, Si, dw = 0.5, 1e-24, 2*np.pi*1e6
L_lin = 10**(-160/10)
qmax = np.sqrt((gamma_rms**2/L_lin)*(Si/(4*dw**2)))
print(qmax*1e12, "pC") # -> 3.98 pC
Exercise 5 solution (c01/f3c_0\to1/f^3 corner)

Step-by-step substitution (with units). Use the c0/c1c_0/c_1 approximation of [P1] Eq.(24), Δω1/f3ω1/f(c0c1)2\Delta\omega_{1/f^3}\approx\omega_{1/f}\left(\dfrac{c_0}{c_1}\right)^2, then convert via Δf1/f3=Δω1/f3/(2π)\Delta f_{1/f^3}=\Delta\omega_{1/f^3}/(2\pi); since ω1/f=2πf1/f\omega_{1/f}=2\pi f_{1/f}, the 2π2\pi cancels: Δf1/f3f1/f(c0c1)2\Delta f_{1/f^3}\approx f_{1/f}\left(\dfrac{c_0}{c_1}\right)^2.

Asymmetric case (c0=0.2c_0=0.2, c1=1.0c_1=1.0):

Δf1/f3106×(0.21.0)2=106×0.04=4×104 Hz=40 kHz.\Delta f_{1/f^3}\approx10^6\times\left(\frac{0.2}{1.0}\right)^2=10^6\times0.04=4\times10^{4}\ \text{Hz}=40\ \text{kHz}.

After symmetrization (c0=0.02c_0=0.02, c1=1.0c_1=1.0):

Δf1/f3106×(0.021.0)2=106×4×104=400 Hz.\Delta f_{1/f^3}\approx10^6\times\left(\frac{0.02}{1.0}\right)^2=10^6\times4\times10^{-4}=400\ \text{Hz}.

Result: asymmetric, the 1/f31/f^3 corner is 40\approx40 kHz; after symmetrization (c0c_0 down 10×) the corner drops 100100× to 400\approx400 Hz.

Validity (approximate vs exact form): the (c0/c1)2(c_0/c_1)^2 approximation assumes the ISF is fundamental-dominated (Γrms2c12/2\Gamma_{rms}^2\approx c_1^2/2). Here c0=0.2c_0=0.2 is not negligible; using the exact form Δf1/f3=f1/fc022Γrms2\Delta f_{1/f^3}=f_{1/f}\cdot\dfrac{c_0^2}{2\Gamma_{rms}^2}, with Γrms2=(c02+c12)/2=(0.04+1)/2=0.52\Gamma_{rms}^2=(c_0^2+c_1^2)/2=(0.04+1)/2=0.52, gives Δf1/f3=106×0.042×0.5238.5\Delta f_{1/f^3}=10^6\times\dfrac{0.04}{2\times0.52}\approx38.5 kHz — about 4% off the approximate 40 kHz. After symmetrization (c0=0.02c_0=0.02, Γrms20.5\Gamma_{rms}^2\approx0.5) the two forms nearly coincide.

Design message: 1/f31/f^3 corner c02\propto c_0^2. Making the waveform up/down symmetric (suppressing c0c_0) is the most effective way to push flicker-upconverted close-in 1/f31/f^3 noise away from the carrier (see symmetry, flicker_noise_upconversion).

Dimension check: (c0/c1)2(c_0/c_1)^2 dimensionless × f1/f\times\ f_{1/f} (Hz) == Hz ✓.

f_1f = 1e6
for c0 in (0.2, 0.02):
f_corner = f_1f*(c0/1.0)**2
print(c0, "->", f_corner, "Hz") # -> 0.2 -> 40000.0 Hz ; 0.02 -> 400.0 Hz
Exercise 6 solution (frequency-translation meaning of the Fourier coefficients — derivation)

Target expression. The phase contribution of the nn-th harmonic term ([P1] Eq.(13)):

ϕn(t)=1qmaxt ⁣ ⁣cncos(nω0τ+θn)I0cos((nω0+Δω)τ)dτ.\phi_n(t)=\frac{1}{q_{max}}\int^{t}\!\!c_n\cos(n\omega_0\tau+\theta_n)\,I_0\cos\big((n\omega_0+\Delta\omega)\tau\big)\,d\tau.

Step (i): product-to-sum. Let A=nω0τ+θnA=n\omega_0\tau+\theta_n, B=(nω0+Δω)τB=(n\omega_0+\Delta\omega)\tau, and use cosAcosB=12[cos(AB)+cos(A+B)]\cos A\cos B=\tfrac12[\cos(A-B)+\cos(A+B)]:

AB=θnΔωτ,A+B=(2nω0+Δω)τ+θn.A-B=\theta_n-\Delta\omega\tau,\qquad A+B=(2n\omega_0+\Delta\omega)\tau+\theta_n.

Integrand =I0cn2[cos(Δωτθn)slow term, Δω+cos((2nω0+Δω)τ+θn)fast term, 2nω0]=\dfrac{I_0c_n}{2}\Big[\underbrace{\cos(\Delta\omega\tau-\theta_n)}_{\text{slow term, }\approx\Delta\omega}+\underbrace{\cos((2n\omega_0+\Delta\omega)\tau+\theta_n)}_{\text{fast term, }\approx2n\omega_0}\Big].

Step (ii): the integrator is a low-pass filter — the fast term averages out.

  • Slow term: cos(Δωτθn)dτ=sin(Δωτθn)Δω\int\cos(\Delta\omega\tau-\theta_n)d\tau=\dfrac{\sin(\Delta\omega\tau-\theta_n)}{\Delta\omega} — the denominator is only the tiny Δω\Delta\omega, so it gets amplified and survives.
  • Fast term: sin()2nω0+Δω\dfrac{\sin(\cdots)}{2n\omega_0+\Delta\omega} — the denominator is the huge 2nω02n\omega_0; the amplitude is crushed by a factor Δω/(2nω0)\sim\Delta\omega/(2n\omega_0), hence negligible.

Step (iii): keep only the slow term.

ϕn(t)1qmaxI0cn2sin(Δωtθn)Δω=I0cn2qmaxsin(Δωtθn)Δω.\phi_n(t)\approx\frac{1}{q_{max}}\cdot\frac{I_0c_n}{2}\cdot\frac{\sin(\Delta\omega t-\theta_n)}{\Delta\omega}=\frac{I_0 c_n}{2q_{max}}\cdot\frac{\sin(\Delta\omega t-\theta_n)}{\Delta\omega}.\qquad\blacksquare

Physical meaning (mixer view): the nn-th ISF harmonic cnc_n acts like one tooth of an LO (local-oscillator) comb, downconverting noise at the injection frequency nω0+Δωn\omega_0+\Delta\omega to Δω\Delta\omega in baseband; the fast term (sum frequency 2nω0\approx2n\omega_0) is filtered out by the integrator's low-pass action. The oscillator is itself a mixer sampling its own harmonics — this is why cnc_n is "the conversion coefficient from each harmonic to the phase output" (see fourier_series_of_isf).

Dimension check: the units of ϕn=I0cn2qmaxsin()Δω\phi_n=\dfrac{I_0 c_n}{2q_{max}}\cdot\dfrac{\sin(\cdots)}{\Delta\omega} are [A](dimensionless)[C][rad/s]\dfrac{[\text{A}]\cdot(\text{dimensionless})}{[\text{C}]\cdot[\text{rad/s}]}; substituting C=A⋅s\text{C}=\text{A·s} and treating rad as dimensionless, =A(A⋅s)(1/s)=AA=1=\dfrac{\text{A}}{(\text{A·s})\cdot(1/\text{s})}=\dfrac{\text{A}}{\text{A}}=1 (dimensionless), so ϕ\phi is dimensionless (phase in rad) ✓.

import numpy as np
# Numerical check: do the integral directly; the slow term survives, the fast term vanishes
n, w0, dw, c_n, I0, qmax, th_n = 1, 1.0, 1e-3, 1.0, 1.0, 1.0, 0.4
tau = np.linspace(0, 2000*np.pi, 4_000_000) # spans many slow periods
integrand = c_n*np.cos(n*w0*tau+th_n)*I0*np.cos((n*w0+dw)*tau)
phi = np.cumsum(integrand)*(tau[1]-tau[0])/qmax
analytic = I0*c_n/(2*qmax)*np.sin(dw*tau-th_n)/dw
print(np.max(np.abs(phi-analytic-np.mean(phi-analytic)))/np.max(np.abs(analytic)))
# -> slow-term envelope matches (relative error ~5e-4; the residual is the averaged-out fast term)
Exercise 7 solution (effective ISF, cyclostationary)

Step-by-step substitution. effective ISF ([P1] Eqs.(25)–(27)): Γeff(θ)=Γ(θ)α(θ)\Gamma_{eff}(\theta)=\Gamma(\theta)\,\alpha(\theta). Here α\alpha is square-wave gating (conducting for half the cycle), so

Γeff(θ)={sinθ,θ[0,π)0,θ[π,2π).\Gamma_{eff}(\theta)=\begin{cases}-\sin\theta,&\theta\in[0,\pi)\\[2pt]0,&\theta\in[\pi,2\pi).\end{cases}

Take the rms:

Γeff,rms2=12π02πΓeff2dθ=12π0πsin2θdθ=12ππ2=14.\Gamma_{eff,rms}^2=\frac{1}{2\pi}\int_0^{2\pi}\Gamma_{eff}^2\,d\theta=\frac{1}{2\pi}\int_0^{\pi}\sin^2\theta\,d\theta=\frac{1}{2\pi}\cdot\frac{\pi}{2}=\frac14.Γeff,rms=12=0.5.\Gamma_{eff,rms}=\frac12=0.5.

Comparison: always conducting gives Γrms=1/20.707\Gamma_{rms}=1/\sqrt2\approx0.707; with half-cycle gating, Γeff,rms=0.5\Gamma_{eff,rms}=0.5. The ratio is 0.5/0.707=1/20.5/0.707=1/\sqrt2 — gating off half the phase drops the rms by 2\sqrt2 (halves the power).

Result: Γeff,rms=0.5\Gamma_{eff,rms}=0.5 (3\approx3 dB lower in power than the always-on 0.7070.707).

Design message: letting the noise conduct only at phases where the ISF is small greatly reduces its effective contribution — this is the design intuition of steering noise current away from the high-sensitivity region (the zero crossings) (see effective_isf). The square-wave gating here is an illustrative toy; the real NMF α(θ)\alpha(\theta) is set by the device's bias-dependent thermal noise.

Dimension check: Γ\Gamma, α\alpha, Γeff\Gamma_{eff} are all dimensionless ✓.

import numpy as np
from simulations.common.isf_utils import gamma_lc_ideal, gamma_rms, effective_isf
theta = np.linspace(0, 2*np.pi, 8192, endpoint=False)
g = gamma_lc_ideal(theta)
alpha = (theta < np.pi).astype(float) # half-cycle square-wave gating
g_eff = effective_isf(g, alpha) # = g*alpha
print(gamma_rms(theta, g_eff)) # -> 0.5
Exercise 8 solution (Γrms/qmax\Gamma_{rms}/q_{max} from L\mathcal{L})

Back-calculation strategy. Solve Eq.(21) for Γrms2qmax2\dfrac{\Gamma_{rms}^2}{q_{max}^2}:

Γrms2qmax2=LlinSi/(4Δω2)=Llin4Δω2Si.\frac{\Gamma_{rms}^2}{q_{max}^2}=\frac{\mathcal{L}_{\text{lin}}}{S_i/(4\Delta\omega^2)}=\mathcal{L}_{\text{lin}}\cdot\frac{4\Delta\omega^2}{S_i}.

Step-by-step substitution (with units).

  1. Llin=10130/10=1013\mathcal{L}_{\text{lin}}=10^{-130/10}=10^{-13}.
  2. Δω=2π×106=6.283×106\Delta\omega=2\pi\times10^6=6.283\times10^6, 4Δω2=4×3.948×1013=1.579×10144\Delta\omega^2=4\times3.948\times10^{13}=1.579\times10^{14}.
  3. 4Δω2Si=1.579×10142×1023=7.896×1036\dfrac{4\Delta\omega^2}{S_i}=\dfrac{1.579\times10^{14}}{2\times10^{-23}}=7.896\times10^{36}.
  4. Γrms2qmax2=1013×7.896×1036=7.896×1023 C2\dfrac{\Gamma_{rms}^2}{q_{max}^2}=10^{-13}\times7.896\times10^{36}=7.896\times10^{23}\ \text{C}^{-2}.
  5. Γrmsqmax=7.896×1023=8.886×1011 C1\dfrac{\Gamma_{rms}}{q_{max}}=\sqrt{7.896\times10^{23}}=8.886\times10^{11}\ \text{C}^{-1}.

If qmax=1.5q_{max}=1.5 pC:

Γrms=Γrmsqmax×qmax=8.886×1011×1.5×1012=1.33.\Gamma_{rms}=\frac{\Gamma_{rms}}{q_{max}}\times q_{max}=8.886\times10^{11}\times1.5\times10^{-12}=1.33.

Result: Γrms/qmax8.89×1011 C1\Gamma_{rms}/q_{max}\approx8.89\times10^{11}\ \text{C}^{-1}; if qmax=1.5q_{max}=1.5 pC, then Γrms1.33\Gamma_{rms}\approx1.33.

Intuition check: Γrms1.33\Gamma_{rms}\approx1.33 is somewhat above the ideal sin-\sin value 0.7070.707 — reasonable, because this part's measured phase noise (130-130 dBc/Hz) sits about 18 dB above the canonical single ideal white-noise source (148-148), reflecting the reality of multiple sources, cyclostationarity, and a larger ISF. The back-calculation serves as a health check: does the measured PN imply an effective Γrms\Gamma_{rms} that is too large?

Dimension check: Llin\mathcal{L}_{\text{lin}} (per-Hz == s) ×(rad/s)2A2/Hz=ss2A2s=A2s2=C2\times\dfrac{(\text{rad/s})^2}{\text{A}^2/\text{Hz}}=\text{s}\cdot\dfrac{\text{s}^{-2}}{\text{A}^2\text{s}}=\text{A}^{-2}\text{s}^{-2}=\text{C}^{-2} ✓.

import numpy as np
L_lin, Si, dw = 10**(-130/10), 2e-23, 2*np.pi*1e6
ratio2 = L_lin*(4*dw**2/Si) # (Gamma_rms/qmax)^2
ratio = np.sqrt(ratio2)
print(ratio, "1/C ;", ratio*1.5e-12, "= Gamma_rms") # -> 8.89e11 1/C ; 1.33

Key takeaways

  • impulse→phase: Δϕ=ΓΔq/qmax\Delta\phi=\Gamma\,\Delta q/q_{max}; Γ=1\Gamma=1 at 5 GHz gives 31.8 fs (Exercise 1).
  • Γrms\Gamma_{rms} from the ISF: Parseval cn2=2Γrms2\sum c_n^2=2\Gamma_{rms}^2; two-harmonic example Γrms=0.791\Gamma_{rms}=0.791 (Exercise 2).
  • White noise→L\mathcal{L}: canonical Example B 148\approx-148 dBc/Hz (Exercise 3); back-solving qmaxq_{max}: every 6 dB lower costs ×2\times2 (Exercise 4).
  • c01/f3c_0\to1/f^3 corner: corner c02\propto c_0^2; symmetrizing by 10× → corner drops 100× (Exercise 5).
  • Fourier coefficients = mixer conversion: cnc_n downconverts noise near nω0n\omega_0 to Δω\Delta\omega; fast terms are filtered out by the integrator (Exercise 6).
  • effective ISF: half-cycle gating gives Γeff,rms=0.5<0.707\Gamma_{eff,rms}=0.5 < 0.707; steering noise away from high-sensitivity regions lowers noise (Exercise 7).
  • Back-solving Γrms/qmax\Gamma_{rms}/q_{max}: measured PN can health-check whether the effective ISF is too large (Exercise 8).
  • All Python verifications import from simulations/common/ (isf_utils, noise_utils).

Further reading

Other exercises

  • Foundations chapter exercises (PSD / jitter dialects / random processes): 02 Foundations exercises
  • Design chapter exercises (swing / topology / PLL budget / SerDes back-calculation): 06 Design chapter exercises
  • Graded worked examples (basic conversions / ISF→PN / jitter integration / design back-calculation; each with a step-by-step solution + Python verification): worked_examples