跳至主要内容

期末總測驗:5 GHz LC VCO 到 25 Gb/s SerDes 一條龍

先備capstone_lc_end_to_end(全站主脊一條龍)與三章成套習題——02 基礎章03 核心理論章06 設計章(先做完再來)|接下來:無——這是最後一頁。11 題全對,你畢業了。

這不是又一份習題集。這是一場考試:一個設計故事、11 個關卡,從單一電荷脈衝打進 LC tank 的那一瞬間,一路走到 SerDes 鏈路在 BER =1012=10^{-12} 的 eye 開度。每一題都只考 一個「乾淨的數字」,但每個數字都得跨章調度——你需要 [P1] 的 ISF、[P2] 的 κ 與 App. B 閉式、擴散字典的換裝、時脈鏈的四條記帳規則、PLL 閉環代數、與 dual-Dirac 外插。 建議先自己算、輸入作答,再展開解答對照。

設計情境(全卷共用)

你負責一條 25 Gb/s NRZ SerDes link(UI =40=40 ps、目標 BER =1012=10^{-12})的時脈路徑:

單位出處
VCO 載波 f0f_05GHz全站 canonical
qmaxq_{max}1pC例 A / 例 B
Γrms\Gamma_{rms}(代表值)0.5例 B(真 LC 為 1/21/\sqrt2
白噪源 SiS_i102410^{-24}A²/Hz例 B
實測 L(1MHz)\mathcal{L}(1\,\text{MHz})100-100dBc/Hz例 C(datasheet 級)
PLLζ=0.707\zeta=0.707、type-II 二階pll_noise_budget
buffer 床155-155(平坦)dBc/Hzclock_chain_budget
鏈路 DJDJδδ=1\mathrm{DJ}_{\delta\delta}=1ps本卷題 10 給定

兩條軌的誠實聲明(考前必讀):本卷刻意讓兩組數字並行。 理想單源下限軌(題 2、3、7):單一白噪源、[P1] Eq.(21) 算出的 148-148 dBc/Hz——這是物理下限,真實電路到不了。 實測軌(題 5、6、9、10):datasheet 級的 100-100 dBc/Hz——比理想下限高 48 dB, 反映多源、cyclostationary、flicker 與 buffer chain 的現實。兩軌不能混用; 每題會標明用哪一軌。

慣例旗標(全卷紀律)L\mathcal{L} 皆 SSB dBc/Hz。凡由電路雜訊預測者標明 [P1] Eq.(21) 的 SSB /4/4 慣例(時域 /2/2 慣例整條 +3+3 dB);凡量測值(100-100 dBc/Hz) 依站規以小角 L=12Sϕ\mathcal{L}=\tfrac12 S_\phi/2/2)記帳。1/f³ corner 標明 [P2] Eq.(57) vs [P1] Eq.(24) 的 2 倍差。每個 2 都要有名有姓——這正是考點之一。


第 1 幕:振盪器核心物理(題 1–4)

題 1 — 一顆脈衝打進 tank(impulse → Δφ)

故事開場:VCO 還在 schematic 階段。你先問最原始的問題——supply 上竄進一顆 Δq=1\Delta q=1 fC 的電荷脈衝,注入時刻的 ISF 值 Γ(ω0τ)=0.5\Gamma(\omega_0\tau)=0.5(例 A 的代表值), qmax=1q_{max}=1 pC、f0=5f_0=5 GHz。求永久相位步階 Δϕ\Delta\phi 與等效 timing error Δt\Delta t

小測驗(先自己算,再檢查)
fs
判定:相對誤差 ±1% 內算對;可用科學記號輸入。
題 1 完整解答(impulse → Δφ → Δt)

第 1 步(操作型 ISF 定義,規範公式 5;推導見 impulse_to_phase_shift

Δϕ=Γ(ω0τ)qmaxΔq=0.5×(1×1015 C)1×1012 C=5×104 rad=0.0286.\Delta\phi=\frac{\Gamma(\omega_0\tau)}{q_{max}}\,\Delta q=\frac{0.5\times(1\times10^{-15}\ \text{C})}{1\times10^{-12}\ \text{C}}=5\times10^{-4}\ \text{rad}=0.0286^\circ.

第 2 步(phase→time,規範公式 17)

Δt=Δϕ2πf0=5×1042π×5×109=1.59×1014 s=15.9 fs.\Delta t=\frac{\Delta\phi}{2\pi f_0}=\frac{5\times10^{-4}}{2\pi\times5\times10^{9}}=1.59\times10^{-14}\ \text{s}=15.9\ \text{fs}.

結果Δϕ=5×104\Delta\phi=5\times10^{-4} rad、Δt=15.9\Delta t=15.9 fs(canonical 例 A)。

Dimension checkΓ\Gamma 無因次 ×\times C/C == rad ✓;rad ÷ (rad/s) == s ✓。

故事註:這 15.9 fs 是「單顆脈衝、一次性」的位移;振盪器沒有相位恢復力, 它永久留在相位裡(LTV 的核心,見 lti_vs_ltv)。 接下來三題把「一顆脈衝」升級成「連續白噪」。

from simulations.common.isf_utils import impulse_to_phase_step
from simulations.common.noise_utils import phase_to_time_error
dphi = impulse_to_phase_step(1e-15, 0.5, qmax=1e-12)
print(dphi, round(phase_to_time_error(dphi, 5e9)*1e15, 1)) # -> 0.0005 15.9

題 2 — 白噪打滿一整條裙邊(Eq.(21) → L\mathcal{L}

單一白噪源 Si=in2/Δf=1024 A2/HzS_i=\overline{i_n^2}/\Delta f=10^{-24}\ \text{A}^2/\text{Hz} 連續打進同一顆 VCO (Γrms=0.5\Gamma_{rms}=0.5qmax=1q_{max}=1 pC)。用 [P1] Eq.(21), p.185 求 L(1MHz)\mathcal{L}(1\,\text{MHz})

小測驗(先自己算,再檢查)
dBc/Hz
判定:相對誤差 ±1% 內算對;可用科學記號輸入。
題 2 完整解答([P1] Eq.(21),含 /4 vs /2 慣例旗標)

逐步代入(帶單位)。[P1] Eq.(21), p.185(規範公式 12):

L{Δω}=10log10 ⁣(Γrms2qmax2in2/Δf4Δω2)\mathcal{L}\{\Delta\omega\}=10\log_{10}\!\left(\frac{\Gamma_{rms}^2}{q_{max}^2}\cdot\frac{\overline{i_n^2}/\Delta f}{4\,\Delta\omega^2}\right)
  1. Δω=2π×106=6.283×106\Delta\omega=2\pi\times10^6=6.283\times10^6 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=10241.579×1014=6.33×1039\dfrac{S_i}{4\Delta\omega^2}=\dfrac{10^{-24}}{1.579\times10^{14}}=6.33\times10^{-39}
  4. 相乘 =1.583×1015=1.583\times10^{-15}L=10log10(1.583×1015)=148.0\mathcal{L}=10\log_{10}(1.583\times10^{-15})=-148.0 dBc/Hz。

結果L(1MHz)=148.0\mathcal{L}(1\,\text{MHz})=-148.0 dBc/Hz(canonical 例 B——理想單源下限軌)。

慣例旗標:這是 [P1] Eq.(21) 的 SSB /4/4 記帳;時域乾淨推導的 /2/2 慣例給 145.0-145.0 dBc/Hz(差 3 dB 的著名慣例之爭,見 white_noise_to_phase_noise)。題 3 要用 /2/2 版本,先記住這件事。

Dimension checkC2A2/Hz(rad/s)2\text{C}^{-2}\cdot\dfrac{\text{A}^2/\text{Hz}}{(\text{rad/s})^2}C=A⋅s\text{C}=\text{A·s} 化簡為 s(per-Hz),取 10log1010\log_{10} 讀作 dBc/Hz ✓。

import numpy as np
dw = 2*np.pi*1e6
print(round(10*np.log10((0.5**2/1e-24)*(1e-24/(4*dw**2))), 1)) # -> -148.0

題 3 — 換上五件衣服的第一件(Lκ2\mathcal{L}\to\kappa^2\to 線寬)

同一顆理想單源 VCO。系統同事問你:「這顆自由跑的載波線寬多少?」用 diffusion_dictionary 的反向查字典: 先把題 2 的 L\mathcal{L} 換回 κ2\kappa^2,再換成 Lorentzian 3-dB 線寬(v5 已裁決的映射Δf3dB=κ2/(2π)\Delta f_{3\mathrm{dB}}=\kappa^2/(2\pi),不是 κ2/π\kappa^2/\pi)。

小測驗(先自己算,再檢查)
mHz
判定:相對誤差 ±1% 內算對;可用科學記號輸入。
題 3 完整解答(v5 映射:Lκ2Δf3dB\mathcal{L}\to\kappa^2\to\Delta f_{3\mathrm{dB}} 的 19.9 mHz 鏈)

第 1 步(先對慣例,再換裝)。反向查字典公式是 κ2=L/2Δω2\kappa^2=\mathcal{L}_{/2}\cdot\Delta\omega^2 ——它吃的是時域 /2/2 慣例L\mathcal{L}。題 2 的 148.0-148.0/4/4 慣例,先加 3 dB:

L/2(1MHz)=145.0 dBc/Hz    Llin=3.17×1015 1/Hz.\mathcal{L}_{/2}(1\,\text{MHz})=-145.0\ \text{dBc/Hz}\;\Rightarrow\;\mathcal{L}_{\text{lin}}=3.17\times10^{-15}\ \text{1/Hz}.

第 2 步(換回主角 κ2\kappa^2

κ2=L/2Δω2=3.17×1015×3.948×1013=0.125 rad2/s.\kappa^2=\mathcal{L}_{/2}\cdot\Delta\omega^2=3.17\times10^{-15}\times3.948\times10^{13}=0.125\ \text{rad}^2/\text{s}.

交叉驗證(直接用 [P2] Eq.(11)/(12), p.793 的定義,不經 L\mathcal{L}):

κ2=Γrms22qmax2in2Δf=0.252×1024×1024=0.125 rad2/\kappa^2=\frac{\Gamma_{rms}^2}{2\,q_{max}^2}\cdot\frac{\overline{i_n^2}}{\Delta f}=\frac{0.25}{2\times10^{-24}}\times10^{-24}=0.125\ \text{rad}^2/\text{s}\ \checkmark

第 3 步(穿上衣服三:線寬)。v5 裁決的映射(lab_23 以 MC 方差斜率 0.12520.1252、 線寬擬合 20.020.0 mHz 實測裁定,見 diffusion_dictionary 衣服三):

Δf3dB=κ22π=0.1252π=1.99×102 Hz=19.9 mHz.\Delta f_{3\mathrm{dB}}=\frac{\kappa^2}{2\pi}=\frac{0.125}{2\pi}=1.99\times10^{-2}\ \text{Hz}=19.9\ \text{mHz}.

結果κ2=0.125 rad2/s\kappa^2=0.125\ \text{rad}^2/\text{s}Δf3dB=19.9\Delta f_{3\mathrm{dB}}=19.9 mHz (真 LC 的 Γrms=1/2\Gamma_{rms}=1/\sqrt2κ2=0.25\kappa^2=0.25、線寬 39.839.8 mHz)。

慣例旗標(本題就是三個 factor-of-2 的地雷區):(1) /4/2/4\to/2 差 3 dB——忘了換, κ2\kappa^2 少一半;(2) DD 的兩種慣例:D=κ2=0.125D_{\text{甲}}=\kappa^2=0.125Var=Dt\mathrm{Var}=D\vert t\vert)、 D=κ2/2=0.0625D_{\text{乙}}=\kappa^2/2=0.0625Var=2Dt\mathrm{Var}=2D\vert t\vert);(3) 線寬公式 Δf3dB=κ2/(2π)=D/π\Delta f_{3\mathrm{dB}}=\kappa^2/(2\pi)=D_{\text{乙}}/\pi——v3 曾把甲值塞進乙式得 40 mHz (大 2 倍),v5 已全站修正。1/f² 假發散在 ΔfΔf3dB\Delta f\lesssim\Delta f_{3\mathrm{dB}} 轉平成 Lorentzian,見 lorentzian_linewidth

Dimension check1/Hz×(rad/s)2=rad2/s\text{1/Hz}\times(\text{rad/s})^2=\text{rad}^2/\text{s} ✓; rad2/s÷2π=Hz\text{rad}^2/\text{s}\div2\pi=\text{Hz} ✓。

import numpy as np
dw = 2*np.pi*1e6
kappa2 = 10**((-148.0 + 3.01)/10)*dw**2 # /4 -> /2 再反查
print(round(kappa2, 3), round(kappa2/(2*np.pi)*1e3, 1)) # -> 0.125 19.9

題 4 — Plan B:如果改用 ring(App. B 閉式 → 1/f³ corner)

專案審查會上有人提議:「LC 佔面積,改 5 級單端 ring 如何?」你用 [P2] Appendix B 的閉式(asymmetric_isf_closed_form) 當場回答 flicker 上轉的代價:N=5N=5η=1\eta=1、波形不對稱比 A=frise/ffall=1.5A=f'_{rise}/f'_{fall}=1.5、 device 1/f corner f1/f=1f_{1/f}=1 MHz。求頻譜的 1/f31/f^3 corner([P2] Eq.(57) 慣例)。

小測驗(先自己算,再檢查)
kHz
判定:相對誤差 ±1% 內算對;可用科學記號輸入。
題 4 完整解答([P2] App. B Eq.(55)–(57),含 2 倍慣例旗標)

逐步代入(帶單位)。[P2] Eq.(57), p.803:

f1/f3=f1/f32ηN(1A)21A+A2=106 Hz×32×1×5×(0.5)211.5+2.25=106×0.3×0.251.75=42.86 kHz.f_{1/f^3}=f_{1/f}\cdot\frac{3}{2\eta N}\cdot\frac{(1-A)^2}{1-A+A^2} =10^6\ \text{Hz}\times\frac{3}{2\times1\times5}\times\frac{(-0.5)^2}{1-1.5+2.25} =10^6\times0.3\times\frac{0.25}{1.75}=42.86\ \text{kHz}.

順帶把中間量算全([P2] Eq.(55)/(56),同頁 lab_33 三重驗證):

Γrms2=2π23η3N3[41+A3(1+A)3]=0.05895    Γrms=0.2428,c0=2Γdc=22πη2N21A1+A=0.1005.\Gamma_{rms}^2=\frac{2\pi^2}{3\eta^3 N^3}\left[4\,\frac{1+A^3}{(1+A)^3}\right]=0.05895\;\Rightarrow\;\Gamma_{rms}=0.2428, \qquad c_0=2\Gamma_{dc}=2\cdot\frac{2\pi}{\eta^2N^2}\frac{1-A}{1+A}=-0.1005.

結果:corner =42.86=42.86 kHz([P2] Eq.(57) 慣例)。

慣例旗標:把 c0=2Γdcc_0=2\Gamma_{dc} 代進 [P1] Eq.(24) Δω1/f3=ω1/fc02/(2Γrms2)\Delta\omega_{1/f^3}=\omega_{1/f}\,c_0^2/(2\Gamma_{rms}^2)85.71 kHz——恰為 2 倍 (DC 通道記帳慣例差,兩篇論文各自自洽;scaling 與比值不受影響)。報數字必標慣例。

設計判讀:corner (1A)2/(1A+A2)\propto(1-A)^2/(1-A+A^2)1/N\propto1/N——42.86 kHz 的 close-in 1/f31/f^3 對 SerDes 的 PLL(loop BW 遠大於 42.86 kHz)會被高通洗掉大半,flicker 不是 否決 ring 的理由;ring 真正的代價在白噪區 FOM(lc_vs_ring)。 本卷維持 LC 方案,此題是 Plan B 的定量存檔。對稱化(A1A\to1)corner 二次趨零—— 這就是 symmetry 的閉式版本。

Dimension check:Hz ×\times 無因次 ×\times 無因次 == Hz ✓。

N, A, eta, f1f = 5, 1.5, 1.0, 1e6
print(round(f1f*3/(2*eta*N)*(1-A)**2/(1-A+A**2)/1e3, 2)) # -> 42.86

第 2 幕:從 datasheet 到時脈樹(題 5–7)

題 5 — 積分出真實時脈的 RJ(Lσt\mathcal{L}\to\sigma_t

矽回來了。實測整合後的 VCO:L(1MHz)=100\mathcal{L}(1\,\text{MHz})=-100 dBc/Hz、1/f21/f^2 斜率 (實測軌——比題 2 的理想單源下限高 48 dB,多源、cyclostationary、flicker 與 buffer chain 的現實)。積分頻帶 1–100 MHz。求 rms jitter σt\sigma_t

小測驗(先自己算,再檢查)
fs
判定:相對誤差 ±1% 內算對;可用科學記號輸入。
題 5 完整解答(jitter 積分,canonical 例 C)

逐步代入(帶單位;全程 lab_08 的四步鏈)

Sϕ(1MHz)=2×10100/10=2×1010 rad2/Hz(L12Sϕ,小角 SSB 慣例,規範公式 16),σϕ2=Sϕ(fref)fref2(1f11f2)=2×1010×(106)2×(106108)=1.98×104 rad2,σϕ=1.407×102 rad=14.07 mrad,σt=σϕ2πf0=1.407×1022π×5×109=4.479×1013 s=447.9 fs.\begin{aligned} S_\phi(1\,\text{MHz})&=2\times10^{-100/10}=2\times10^{-10}\ \text{rad}^2/\text{Hz} \quad(\mathcal{L}\approx\tfrac12 S_\phi\text{,小角 SSB 慣例,規範公式 16}),\\[2pt] \sigma_\phi^2&=S_\phi(f_{ref})\,f_{ref}^2\left(\frac{1}{f_1}-\frac{1}{f_2}\right) =2\times10^{-10}\times(10^6)^2\times(10^{-6}-10^{-8})=1.98\times10^{-4}\ \text{rad}^2,\\[2pt] \sigma_\phi&=1.407\times10^{-2}\ \text{rad}=14.07\ \text{mrad},\\[2pt] \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}. \end{aligned}

結果σϕ=14.07\sigma_\phi=14.07 mrad、σt=447.9\sigma_t=447.9 fs(canonical 例 C)。

慣例旗標100-100量測 SSB,依站規用 L=12Sϕ\mathcal{L}=\tfrac12S_\phi/2/2)還原 SϕS_\phi——量測值沒有 /4/4 的事(那是從電路雜訊預測時才進場,見題 2/3)。

手感1/f21/f^2 的積分由下限主導1/f11/f_1 佔 99%);「從哪裡開始積」由 PLL loop BW 決定——這正是題 8 的伏筆。Dimension checkrad2/Hz×Hz=rad2\text{rad}^2/\text{Hz}\times\text{Hz}=\text{rad}^2 ✓; rad ÷ (rad/s) == s ✓。

import numpy as np
from simulations.common.noise_utils import integrate_rms_jitter
f = np.logspace(6, 8, 4000)
st, sp = integrate_rms_jitter(f, -100.0 - 20*np.log10(f/1e6), 5e9, 1e6, 100e6)
print(round(sp*1e3, 2), round(st*1e15, 1)) # -> 14.07 447.9

題 6 — 同一顆時脈的 period jitter(jitter 核閉式)

數位同事只在乎相鄰 edge:「單週期的 period jitter 多少?」用 jitter_kernels 的白噪 FM 閉式:先由實測裙邊反查 κ2\kappa^2(字典衣服四的反向),再套 σP(1)=κT/ω0\sigma_P(1)=\kappa\sqrt{T}/\omega_0

小測驗(先自己算,再檢查)
fs
判定:相對誤差 ±2% 內算對;可用科學記號輸入。
題 6 完整解答4sin24\sin^2 核閉式:σΔϕ2(N)=κ2NT\sigma_{\Delta\phi}^2(N)=\kappa^2NT

第 1 步(由裙邊反查 κ2\kappa^21/f21/f^2 區、時域 /2/2 慣例(量測值直接可用):

κ2=Llin(Δf)Δω2=1010×(2π×106)2=3.95×103 rad2/s.\kappa^2=\mathcal{L}_{\text{lin}}(\Delta f)\cdot\Delta\omega^2=10^{-10}\times(2\pi\times10^6)^2=3.95\times10^{3}\ \text{rad}^2/\text{s}.

(這就是 diffusion_dictionary 的「100-100 dBc/Hz 錨點」行:κ2=3.95×103\kappa^2=3.95\times10^3、線寬 628 Hz、κt=2.0×109s\kappa_t=2.0\times10^{-9}\sqrt{\text{s}}。)

第 2 步(白噪 FM 封閉式)jitter_kernels 第 4 步: 把 Sϕ=2κ2/(2πf)2S_\phi=2\kappa^2/(2\pi f)^2 代入一階差分核 4sin2(πfNT)4\sin^2(\pi fNT),積分精確給出 σΔϕ2(N)=κ2NT\sigma_{\Delta\phi}^2(N)=\kappa^2NT(正是 [P2] Eq.(8) 的 κΔt\kappa\sqrt{\Delta t},一個係數都不差)。 取 N=1N=1T=1/f0=200T=1/f_0=200 ps:

σΔϕ(1T)=3947.8×2×1010=8.886×104 rad,σP(1)=σΔϕ2πf0=8.886×1043.142×1010=28.28 fs.\sigma_{\Delta\phi}(1T)=\sqrt{3947.8\times2\times10^{-10}}=8.886\times10^{-4}\ \text{rad}, \qquad \sigma_P(1)=\frac{\sigma_{\Delta\phi}}{2\pi f_0}=\frac{8.886\times10^{-4}}{3.142\times10^{10}}=28.28\ \text{fs}.

結果σP(1)28.3\sigma_P(1)\approx28.3 fs(週期的 1.4×1041.4\times10^{-4})。

慣例旗標(兩個):(1) 反查公式吃 /2/2 慣例的 L\mathcal{L}——量測值直接代; 若這裡誤代 /4/4 慣例的預測值會少 2\sqrt2。(2) 核的前置常數在「單邊 SϕS_\phi0\int_0^\infty」 慣例下是 1/ω021/\omega_0^2(不是 2/ω022/\omega_0^2——那個 2 屬雙邊譜記帳,jitter_kernels 第 0 步 對照表+MC 已裁決)。worked_examples 例 C3 的 27.6 fs 就是本式在 10310^3101010^{10} Hz 頻帶截斷後的數字——同一個物理。

對照題 5:同一顆時脈,累積 jitter(TIE,1–100 MHz 頻帶)447.9 fs vs 單週期 28.3 fs ——TIE 吃低頻、period 核是一階高通把 close-in 壓掉,兩個數字都對、量的東西不同 (psd_phase_noise_jitter)。

Dimension checkrad2/s×s=rad2\text{rad}^2/\text{s}\times\text{s}=\text{rad}^2 ✓;rad ÷ (rad/s) == s ✓。

import numpy as np
kappa2 = 10**(-100/10)*(2*np.pi*1e6)**2
print(round(kappa2, 1), round(np.sqrt(kappa2/5e9)/(2*np.pi*5e9)*1e15, 2))
# -> 3947.8 28.28

題 7 — ÷2 到 2.5 GHz、過 buffer:床什麼時候當家?

時脈樹:5 GHz 經理想 ÷2 到 2.5 GHz,再過一級床 155-155 dBc/Hz(平坦)的輸出 buffer。 看 10 MHz offset(PLL out-of-band,VCO 自由跑裙邊當家)。用理想單源下限軌: VCO 裙邊由題 2 的 148-148 dBc/Hz @ 1 MHz 錨點以 1/f21/f^2 外推。求 buffer 輸出的 L(10MHz)\mathcal{L}(10\,\text{MHz})

小測驗(先自己算,再檢查)
dBc/Hz
判定:相對誤差 ±0% 內算對;可用科學記號輸入。
題 7 完整解答(clock_chain 規則 2+4:÷N 與加成床)

第 1 步(1/f21/f^2 外推)

Lvco(10MHz)=14820log10 ⁣10MHz1MHz=168.00 dBc/Hz.\mathcal{L}_{vco}(10\,\text{MHz})=-148-20\log_{10}\!\frac{10\,\text{MHz}}{1\,\text{MHz}}=-168.00\ \text{dBc/Hz}.

第 2 步(規則 2:理想 ÷2 是 edge-picking,ϕout=ϕin/2\phi_{out}=\phi_{in}/2

L(10MHz)2.5GHz=168.0020log102=174.02 dBc/Hz.\mathcal{L}(10\,\text{MHz})\big|_{2.5\,\text{GHz}}=-168.00-20\log_{10}2=-174.02\ \text{dBc/Hz}.

第 3 步(規則 4:buffer 床與輸入不相關,功率相加、絕不是 dB 相加)

Lout=10log10 ⁣(10174.02/10+10155/10)=154.95 dBc/Hz.\mathcal{L}_{out}=10\log_{10}\!\big(10^{-174.02/10}+10^{-155/10}\big)=-154.95\ \text{dBc/Hz}.

結果154.95-154.95 dBc/Hz——訊號比床低 19 dB,床當家,輸出被鉗在 buffer 床上。 再乾淨的源頭過一級吵 buffer 就毀了:這 19 dB 的 margin 全數作廢,正是 clock_chain_budget 的核心教訓 (該頁 worked chain 同一組數字:168174.02154.95-168\to-174.02\to-154.95)。

慣例旗標±20log10N\pm20\log_{10}N 與功率相加都是比值/加法運算/2/2 vs /4/4 慣例在 輸入輸出間對消——唯一吃慣例的是錨點本身(148-148=[P1] Eq.(21) 的 /4/4/2/2 記帳整條 +3+3 dB,結論「床當家」不變,輸出仍 154.9\approx-154.9)。另注意守恆量:理想 ÷2 讓 L\mathcal{L} 好 6.02 dB,但以秒計的 σt\sigma_t 一顆 fs 都不變(題 9 要用)。

Dimension check:dB 運算全作用在無因次功率比上 ✓。

import numpy as np
L_div = (-148.0 - 20*np.log10(10)) - 20*np.log10(2)
print(round(L_div, 2)) # -> -174.02
print(round(10*np.log10(10**(L_div/10) + 10**(-155.0/10)), 2)) # -> -154.95

第 3 幕:迴路與鏈路(題 8–11)

題 8 — PLL 的鼓包稅(type-II peaking 閉式)

VCO 進 type-II 二階 PLL(ζ=0.707\zeta=0.707)。系統規格書問:jitter transfer 的 peaking (峰值超出 0 dB 多少)是多少?用 pll_noise_budget 的閉式解。

小測驗(先自己算,再檢查)
dB
判定:相對誤差 ±1% 內算對;可用科學記號輸入。
題 8 完整解答(peaking 閉式:ζ=0.7072.09\zeta=0.707\to2.09 dB @ 0.786fn0.786f_n

閉式(該頁補充推導的結果,純代數自含)。令 s=1+8ζ2s=\sqrt{1+8\zeta^2}

Hlpmax2=(s+1)2(s1)(s+3),fpk=fn2s+1.\lvert H_{lp}\rvert^2_{max}=\frac{(s+1)^2}{(s-1)(s+3)},\qquad f_{pk}=f_n\sqrt{\frac{2}{s+1}}.

逐步代入ζ=1/2\zeta=1/\sqrt2ζ2=12\zeta^2=\tfrac12):s=1+4=5=2.236s=\sqrt{1+4}=\sqrt5=2.236

Hlpmax2=(5+1)2(51)(5+3)=5+12=φ=1.618,fpk=fn25+1=0.786fn.\lvert H_{lp}\rvert^2_{max}=\frac{(\sqrt5+1)^2}{(\sqrt5-1)(\sqrt5+3)}=\frac{\sqrt5+1}{2}=\varphi=1.618, \qquad f_{pk}=f_n\sqrt{\frac{2}{\sqrt5+1}}=0.786\,f_n.peaking=10log101.618=2.09 dB.\text{peaking}=10\log_{10}1.618=2.09\ \text{dB}.

(峰值恰是黃金比例——該頁的彩蛋,pll_utils.H_lowpass_mag2 400 萬點細掃 數值同給 0.7862/2.09030.7862/2.0903 dB。)

結果:peaking =2.09=2.09 dB @ fpk=0.786fnf_{pk}=0.786f_n(phase margin 65.565.5^\circ)。

慣例旗標:這是功率轉移的 10log1010\log_{10}(數值上等於幅度的 20log1020\log_{10})—— 沒有 SSB /2/2/4/4 的事(那是 SϕLS_\phi\leftrightarrow\mathcal{L} 換算才有)。 type-II 帶零點必有 peaking(DC 處導數恆正),這是穩定性的代價不是設計失誤; 級聯 MM 級 dB 直接相加——20 級 regenerator 就是 41.841.8 dB,所以電信規格把單級 peaking 壓在 0.1 dB(需 ζ4.32\zeta\approx4.32)。對本卷:fpkf_{pk} 附近的 reference/in-band 雜訊會被多收 2.09 dB 的稅,做 jitter 預算時別漏。

Dimension checkζ,s,x\zeta,s,x 全無因次;fpk=fn×f_{pk}=f_n\times無因次 == Hz ✓。

import numpy as np
s = np.sqrt(1 + 8*0.707**2)
print(round(np.sqrt(2/(s+1)), 4), round(10*np.log10((s+1)**2/((s-1)*(s+3))), 2))
# -> 0.7862 2.09

題 9 — 這顆 2.5 GHz 時脈拿去取樣,值幾個 bit?(aperture SNR)

RX 端的監測 ADC 用最終的 2.5 GHz 時脈取樣一個滿刻度 2.5 GHz 校正單音。時脈 RJ 用 實測軌:題 5 的 σt=447.9\sigma_t=447.9 fs——理想 ÷2 不改變以秒計的 σt\sigma_t(題 7 的 守恆量;buffer 床在同頻帶另加約 16 fs,RSS 後 +0.06%+0.06\%,可忽略)。求 jitter 限制的 SNR。

小測驗(先自己算,再檢查)
dB
判定:相對誤差 ±1% 內算對;可用科學記號輸入。
題 9 完整解答(aperture SNR 與 ENOB)

逐步代入(帶單位;推導見 adc_aperture_jitter。 取樣誤差 == 斜率 ×\times 時間誤差,對取樣相位與 jitter 取均方後兩個 12\tfrac12 對消:

σϕ,in=2πfinσt=2π×2.5×109 Hz×4.479×1013 s=7.036×103 rad,\sigma_{\phi,in}=2\pi f_{in}\,\sigma_t=2\pi\times2.5\times10^9\ \text{Hz}\times4.479\times10^{-13}\ \text{s}=7.036\times10^{-3}\ \text{rad},SNRjitter=20log10 ⁣(2πfinσt)=20log10(7.036×103)=43.05 dB,\text{SNR}_{jitter}=-20\log_{10}\!\big(2\pi f_{in}\sigma_t\big)=-20\log_{10}(7.036\times10^{-3})=43.05\ \text{dB},ENOB=43.051.766.02=6.86 bit.\text{ENOB}=\frac{43.05-1.76}{6.02}=6.86\ \text{bit}.

結果:SNR =43.05=43.05 dB、ENOB =6.86=6.86 bit——與 adc_aperture_jitter 設計表的 2.5 GHz 列 逐字一致。買 12-bit ADC 也沒用:高頻 SNR 被時脈卡死。

慣例旗標:公式本身不依賴 SSB/DSB 或 L\mathcal{L} 慣例(PsigP_{sig}12\tfrac12cos2\langle\cos^2\rangle12\tfrac12 對消);慣例藏在 σt\sigma_t 的上游——447.9 fs 是量測 L\mathcal{L}/2/2 小角換算積出來的(題 5),全鏈一致即無歧義。

守恆量的使用σt\sigma_t(秒)過理想 ÷2 不變(clock_chain_budget 第 5 步)——÷2 省的是 L\mathcal{L} 的 dB,不是 fs;所以 2.5 GHz 時脈直接繼承 447.9 fs。 誠實註:buffer 床貢獻 447.92+16.02=448.2\sqrt{447.9^2+16.0^2}=448.2 fs(+0.06%+0.06\%),本題忽略。

Dimension check:Hz ×\times s ×2π=\times2\pi= rad(無因次)✓,log 引數合法;dB、bit 無因次 ✓。

import numpy as np
snr = -20*np.log10(2*np.pi*2.5e9*447.9e-15)
print(round(snr, 2), round((snr - 1.76)/6.02, 2)) # -> 43.05 6.86

題 10 — 期末魔王:eye 還剩多少?(dual-Dirac TJ@101210^{-12}

鏈路收尾。25 Gb/s(UI =40=40 ps)、量測分解得 DJδδ=1\mathrm{DJ}_{\delta\delta}=1 ps; RJ 用實測軌時脈的 σt=447.9\sigma_t=447.9 fs。用 dual-Dirac 外插 (dj_dual_dirac)求 BER =1012=10^{-12} 的 total jitter。

小測驗(先自己算,再檢查)
ps
判定:相對誤差 ±1% 內算對;可用科學記號輸入。
題 10 完整解答(dual-Dirac 外插與 eye 預算)

逐步代入(帶單位)。dual-Dirac 外插式(深尾單高斯主導):

TJ(BER)=DJδδ+2Q1(BER)σ,Q1(1012)=7.034 (本站記 7.03).\mathrm{TJ}(\mathrm{BER})=\mathrm{DJ}_{\delta\delta}+2\,Q^{-1}(\mathrm{BER})\,\sigma, \qquad Q^{-1}(10^{-12})=7.034\ (\text{本站記 }7.03).TJ=1 ps+2×7.034×0.4479 ps=1 ps+6.30 ps=7.30 ps.\mathrm{TJ}=1\ \text{ps}+2\times7.034\times0.4479\ \text{ps}=1\ \text{ps}+6.30\ \text{ps}=7.30\ \text{ps}.eye 開度=UITJ=407.30=32.7 ps=0.82 UI.\text{eye 開度}=UI-\mathrm{TJ}=40-7.30=32.7\ \text{ps}=0.82\ UI.

結果:TJ@1012=7.3010^{-12}=7.30 ps、eye 開度 32.732.7 ps(0.82UI0.82\,UI)——RJ 項 6.30 ps 與 serdes_clocking_connection 的 「448 fs → RJ 吃掉 6.3 ps」一致 ✓。這條 25 Gb/s link 的時脈預算過關。

慣例旗標Q1(1012)=7.034Q^{-1}(10^{-12})=7.034業界 per-Gaussian 慣例(每顆高斯尾巴 == BER); 嚴格把 Dirac 權重 ½ 與 transition density ½ 都記進去是 Q=4×BERQ=4\times\mathrm{BER} 慣例 (Q1=6.839Q^{-1}=6.839),差約 0.2σ0.2\sigma/側——比對儀器報告前先對慣例 (dj_dual_dirac 第 6 步稽核表)。另記得 DJδδDJpp\mathrm{DJ}_{\delta\delta}\le\mathrm{DJ}_{pp}:模型參數故意低報才讓外插準—— 別拿 DJpp\mathrm{DJ}_{pp} 塞進這條公式。

Dimension check[s]+[無因次]×[s]=[s][\text{s}]+[\text{無因次}]\times[\text{s}]=[\text{s}] ✓。

全卷閉環:題 1 的一顆 1 fC 脈衝(15.9 fs)→ 題 2–3 白噪裙邊與線寬 → 題 5 積分成 447.9 fs 的 RJ → 題 7 時脈樹記帳 → 題 10 在 eye 上收帳。一顆電荷的去向,就是一條 SerDes link 的 margin。

import numpy as np
from scipy.special import erfcinv
qinv = float(np.sqrt(2)*erfcinv(2*1e-12))
tj = 1e-12 + 2*qinv*447.9e-15
print(round(qinv, 3), round(tj*1e12, 2)) # -> 7.034 7.3

題 11 — 加碼題:如果不走 PLL,直接注入鎖定倍頻呢?

畢業前的最後一個岔路。題 7–9 選的是「PLL ×50 → ÷2 → buffer」這條路。有學弟問: 「如果乾脆不用 PLL,直接把 fref=250f_{ref}=250 MHz 的參考脈衝(qinj=50q_{inj}=50 fC)打進同一顆 55 GHz LC VCO(qmax=1q_{max}=1 pC)做 N=20N=20 倍頻的 injection-locked clock multiplier (ILCM,注入鎖定倍頻器),這條路的半 lock range 有多寬?」用 subharmonic_injection 的 impulse-train 算術 ([P3] Sec. IV footnote 7 的離散版)求 fLf_L

小測驗(先自己算,再檢查)
MHz
判定:相對誤差 ±1% 內算對;可用科學記號輸入。
題 11 完整解答(ILCM 的 1/N1/N lock range,取代 PLL 的另一條路)

第 1 步([P3] footnote 7 的離散算術,完整推導見 subharmonic_injection 第 2 節):每 NN 個振盪 週期吃一次 kick,固定點存在的條件(弱注入、Γ=sin\Gamma=-\sin 的特例)是

ΔωL=qinjΓ~maxNT0  Γ=sin  qinjqmax1NT0=qinjqmaxf0N.\Delta\omega_L=\frac{q_{inj}\,\vert\tilde\Gamma\vert_{max}}{NT_0}\ \xrightarrow{\ \Gamma=-\sin\ }\ \frac{q_{inj}}{q_{max}}\cdot\frac{1}{NT_0}=\frac{q_{inj}}{q_{max}}\cdot\frac{f_0}{N}.

逐步代入(帶單位)

qinjqmax=50 fC1 pC=0.05(弱注入1 ),T0=1f0=200 ps,NT0=20×200 ps=4 ns,\frac{q_{inj}}{q_{max}}=\frac{50\ \text{fC}}{1\ \text{pC}}=0.05\quad(\text{弱注入}\ll1\ \checkmark),\qquad T_0=\frac{1}{f_0}=200\ \text{ps},\qquad NT_0=20\times200\ \text{ps}=4\ \text{ns},ΔωL=0.054×109 s=1.25×107 rad/s,fL=ΔωL2π=1.989 MHz.\Delta\omega_L=\frac{0.05}{4\times10^{-9}\ \text{s}}=1.25\times10^{7}\ \text{rad/s},\qquad f_L=\frac{\Delta\omega_L}{2\pi}=1.989\ \text{MHz}.

結果fL=1.989f_L=1.989 MHz(canonical 例 1,subharmonic_injection)。

Dimension check:無因次 ÷\div s == rad/s;rad/s ÷2π=\div2\pi= Hz ✓。

故事收尾(為什麼本卷最後選了 PLL、不是 ILCM):分數 lock range fL/(Nfref)=(qinj/qmax)/(2πN)=3.98×104f_L/(Nf_{ref})=(q_{inj}/q_{max})/(2\pi N)=3.98\times10^{-4}398 ppm——比 PVT 造成的自由跑頻率不確定度(百分級)小兩個數量級,代表這顆 VCO 得先被拉到 398398 ppm 之內 ILCM 才鎖得住,實務上要另外配一個頻率追蹤迴路(FLL)。反觀題 8 的 type-II PLL:PFD 天生自帶寬頻率捕獲,不需要額外的 FLL——這正是本卷第 2 幕最終選 PLL 而非 ILCM 的理由。 但 ILCM 也不是沒有代價可省:它完全沒有 divider/CP,in-band 雜訊記帳走的是 N2SrefHref2N^2S_{ref}\vert H_{ref}\vert^2HrefH_{ref} 是一階離散低通),跟題 3 的 PLL in-band N2SrefHlp2N^2S_{ref}\vert H_{lp}\vert^2 系出同門但機制不同——兩條路殊途同歸都是 ×N2\times N^2, 只是「怎麼把 divider 踢出去」的手法不一樣。

慣例旗標:本題數字取 δ\delta-pulse(impulse-train)idealization,與 subharmonic_injection 的 canonical 例 1 一致; 若計入 1010 ps 有限脈寬的 sinc 修正則降為 1.9811.981 MHz(差 0.4%0.4\%,本題不計)。

qinj, qmax, f0, N = 50e-15, 1e-12, 5e9, 20
T0 = 1 / f0
dwL = (qinj/qmax) / (N*T0)
fL = dwL / (2*np.pi)
print(round(fL/1e6, 3)) # -> 1.989
print(round((qinj/qmax)/(2*np.pi*N), 6)) # -> 0.000398 (398 ppm,分數 lock range)

畢業檢定:Python 附錄(一次重算全部 11 題)

在專案根目錄以 PYTHONPATH=. 執行;每個 # -> 都是實跑輸出,與各題解答逐字一致。

import numpy as np
from scipy.special import erfcinv
from simulations.common.isf_utils import impulse_to_phase_step
from simulations.common.noise_utils import phase_to_time_error, integrate_rms_jitter
from simulations.common.pll_utils import H_lowpass_mag2

f0, qmax, grms, Si = 5e9, 1e-12, 0.5, 1e-24
dw = 2*np.pi*1e6 # 1 MHz offset [rad/s]

# --- 題 1: impulse -> Delta_phi -> Delta_t(例 A)
dphi = impulse_to_phase_step(1e-15, 0.5, qmax=qmax)
print(dphi, round(phase_to_time_error(dphi, f0)*1e15, 1)) # -> 0.0005 15.9

# --- 題 2: [P1] Eq.(21)(SSB /4 慣例)
L4 = 10*np.log10((grms**2/qmax**2)*(Si/(4*dw**2)))
print(round(L4, 1)) # -> -148.0

# --- 題 3: /4 -> /2 -> kappa^2 -> Lorentzian 線寬
L2_lin = 10**((L4 + 3.01)/10) # 換回 /2 慣例(+3.01 dB)
kappa2 = L2_lin*dw**2 # 反向查字典 kappa^2 = L_/2 * dw^2
print(round(kappa2, 3), round(grms**2*Si/(2*qmax**2), 3)) # -> 0.125 0.125
print(round(kappa2/(2*np.pi)*1e3, 1)) # -> 19.9 (mHz)

# --- 題 4: [P2] App.B Eq.(55)-(57),N=5、A=1.5、eta=1、f_1/f=1 MHz
N, A, eta, f1f = 5, 1.5, 1.0, 1e6
corner = f1f*3/(2*eta*N)*(1-A)**2/(1-A+A**2)
print(round(corner/1e3, 2), round(2*corner/1e3, 2)) # -> 42.86 85.71([P2];[P1] 慣例)

# --- 題 5: 實測 -100 dBc/Hz@1MHz、1/f^2、積 1-100 MHz
f = np.logspace(6, 8, 4000)
sigma_t, sigma_phi = integrate_rms_jitter(f, -100.0 - 20*np.log10(f/1e6), f0, 1e6, 100e6)
print(round(sigma_phi*1e3, 2), round(sigma_t*1e15, 1)) # -> 14.07 447.9

# --- 題 6: 同一顆實測時脈的 period jitter(jitter_kernels 閉式)
kappa2_m = 10**(-100/10)*dw**2 # 量測 SSB = /2 慣例
print(round(kappa2_m, 1)) # -> 3947.8 (rad^2/s)
print(round(np.sqrt(kappa2_m/f0)/(2*np.pi*f0)*1e15, 2)) # -> 28.28 (fs)

# --- 題 7: 理想裙邊 ÷2 到 2.5 GHz + buffer 床(10 MHz offset)
L_div = (-148.0 - 20*np.log10(10)) - 20*np.log10(2)
print(round(L_div, 2)) # -> -174.02
print(round(10*np.log10(10**(L_div/10) + 10**(-155.0/10)), 2)) # -> -154.95

# --- 題 8: type-II peaking 閉式 vs pll_utils 數值
s = np.sqrt(1 + 8*0.707**2)
print(round(np.sqrt(2/(s+1)), 4), round(10*np.log10((s+1)**2/((s-1)*(s+3))), 2))
# -> 0.7862 2.09
x = np.linspace(0.001, 5, 400001)
m2 = H_lowpass_mag2(x, 1.0, 0.707)
print(round(10*np.log10(np.max(m2)), 2)) # -> 2.09

# --- 題 9: aperture SNR(sigma_t 過理想 ÷2 守恆)
st = 447.9e-15
snr = -20*np.log10(2*np.pi*2.5e9*st)
print(round(snr, 2), round((snr - 1.76)/6.02, 2)) # -> 43.05 6.86

# --- 題 10: dual-Dirac TJ@1e-12(per-Gaussian 慣例),UI = 40 ps
qinv = float(np.sqrt(2)*erfcinv(2*1e-12))
tj = 1e-12 + 2*qinv*st
print(round(qinv, 3), round(tj*1e12, 2)) # -> 7.034 7.3
print(round((40e-12 - tj)*1e12, 1), round((40e-12 - tj)/40e-12, 2)) # -> 32.7 0.82

# --- 題 11(加碼): ILCM 的 1/N lock range([P3] footnote 7 離散算術)
qinj, qmax_ilcm, N_ilcm = 50e-15, 1e-12, 20
T0_ilcm = 1 / f0
dwL = (qinj/qmax_ilcm) / (N_ilcm*T0_ilcm)
fL = dwL / (2*np.pi)
print(round(fL/1e6, 3)) # -> 1.989
print(round((qinj/qmax_ilcm)/(2*np.pi*N_ilcm), 6)) # -> 0.000398

重點回顧(帶著走的 11 個數字)

考點答案慣例旗標
1impulse→Δϕ\Delta\phiΔt\Delta t5×1045\times10^{-4} rad、15.9 fs
2[P1] Eq.(21) 白噪 L\mathcal{L}148.0-148.0 dBc/HzSSB /4/4/2/2145.0-145.0
3Lκ2\mathcal{L}\to\kappa^2\to 線寬κ2=0.125\kappa^2=0.125 rad²/s、19.9 mHz反查吃 /2/2Δf3dB=κ2/2π\Delta f_{3\mathrm{dB}}=\kappa^2/2\pi(v5)
4App. B 1/f³ corner42.86 kHz[P2] Eq.(57);[P1] Eq.(24) =2×=85.71=2\times=85.71 kHz
5jitter 積分 1–100 MHz14.07 mrad、447.9 fs量測 SSB 用 L=12Sϕ\mathcal{L}=\tfrac12S_\phi
6period jitter 閉式28.3 fs單邊 SϕS_\phi 核前置 1/ω021/\omega_0^2
7÷2+buffer 床154.95-154.95 dBc/Hz規則是比值運算,慣例對消;床當家
8type-II peaking2.09 dB @ 0.786fn0.786f_n10log1010\log_{10} 功率,無 SSB 之事
9aperture SNR @ 2.5 GHz43.05 dB(6.86 bit)公式 convention-free;σt\sigma_t 守恆過 ÷2
10dual-Dirac TJ@101210^{-12}7.30 ps(eye 0.82 UI)per-Gaussian Q1=7.034Q^{-1}=7.034
11(加碼)ILCM 的 1/N1/N lock rangefL=1.989f_L=1.989 MHz(398 ppm)δ\delta-pulse idealization;含脈寬 sinc 修正為 1.981 MHz

11 題全對——恭喜畢業。你已經能從一顆電荷脈衝,一路記帳到 SerDes link 的 eye margin。

延伸閱讀(每題的深入版)