跳至主要内容

Lab 17 — 設計掃描:swing / Γrms / N 三條設計曲線

麵包屑模擬實驗室 › 系統與進階 › 本頁(設計掃描進階)。口算入門版:lab_09;上游:lab_06lab_08

lab_09 用口算把 [P1] Eq.(21) 讀成 scaling law。 這個 lab 把同一條式子真的掃出來、畫成三條曲線:固定其他條件,分別掃節點電荷擺幅 qmaxq_{max}(swing)、ISF rms Γrms\Gamma_{rms}、ring 級數 NN,看 11 MHz offset 的 phase noise L\mathcal{L} 怎麼動。圖上你會親眼看到「20-20 dB/decade」的直線斜率、「2×2\times swing 6\to-6 dB」 的箭頭,以及 ring 振盪器那條幾乎水平NN 曲線(著名的 NN-無關性)。

物理直覺(先講結論)1/f21/f^2 phase noise Γrms2/qmax2\propto\Gamma_{rms}^2/q_{max}^2。 兩個旋鈕都進 20log1020\log_{10}qmaxq_{max} 加倍 → 6-6 dB;Γrms\Gamma_{rms} 減半 → 6-6 dB。 ring 的 NN 比較陰險:增級雖讓 ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2} 變小,但每節 qmaxq_{max} 變小、 吵的 device 變多,三者在固定 f0f_0/功率下大致抵消,淨 phase noise 幾乎與 NN 無關。

1. 教學目標

  • 把 [P1] Eq.(21) 的 LΓrms2/qmax2\mathcal{L}\propto\Gamma_{rms}^2/q_{max}^2 畫成三條設計曲線。
  • qmaxq_{max} 曲線上量化「20-20 dB/decade」與「2×2\times swing 6\to-6 dB」。
  • Γrms\Gamma_{rms} 曲線上看「對稱波形/低 Γrms\Gamma_{rms}\to PN↓」。
  • 在 ring NN 曲線上看 NN-無關性的由來([P2] Eq.(16), p.794,v7 已重核:ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2})。
  • 把曲線連回 lab_09 與第 06 章 design insight 頁。

2. 數學模型

起點同樣是 [P1] Eq.(21), p.185(1/f21/f^2 區、固定 offset):

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)

把對數展開,看出每個旋鈕各自的斜率:

L=20log10Γrms20log10qmax+10log10 ⁣(in2/Δf)20log10(2Δω)+const.\mathcal{L}=20\log_{10}\Gamma_{rms}-20\log_{10}q_{max}+10\log_{10}\!\big(\overline{i_n^2}/\Delta f\big)-20\log_{10}(2\Delta\omega)+\text{const}.
  • 旋鈕 1(qmaxq_{max}20log10qmax-20\log_{10}q_{max} → 對 qmaxq_{max}log\log 橫軸是斜率 20-20 dB/decade 的直線;qmax×220log102=6.02q_{max}\times2\Rightarrow20\log_{10}2=6.02 dB → 6-6 dB
  • 旋鈕 2(Γrms\Gamma_{rms}+20log10Γrms+20\log_{10}\Gamma_{rms}Γrms\Gamma_{rms} 減半 → 6-6 dB; 本 lab 用 linear 橫軸,曲線是 20log10Γrms20\log_{10}\Gamma_{rms} 的對數型上升。

ring 的 NN([P2] Eq.(16), p.794(v7 已重核:根號只蓋常數,ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2}; 正文 4/N^1.5@η=0.75 與 App.B Eq.(55) 三重驗證。v3 曾誤讀為 N^-0.75)):增級同時動三件事,三者在固定 f0f_0/功率下相互抵消:

ΓrmsN3/2 [P2] Eq.(16),qmaxN1 (每節擺幅變小),in2N (device 變多).\Gamma_{rms}\propto N^{-3/2}\ \text{[P2] Eq.(16)},\qquad q_{max}\propto N^{-1}\ (\text{每節擺幅變小}),\qquad \overline{i_n^2}\propto N\ (\text{device 變多}).

代入 Γrms2/qmax2in2\Gamma_{rms}^2/q_{max}^2\cdot\overline{i_n^2}

(N3/2)2(N1)2N=N3N2N=N1N=N0=const.\frac{(N^{-3/2})^2}{(N^{-1})^2}\cdot N=\frac{N^{-3}}{N^{-2}}\cdot N=N^{-1}\cdot N=N^{0}=\text{const}.
  • 結論:在這組 toy scaling 下淨效果 N0\propto N^0phase noise 與 NN 無關([P2] 的招牌結論)。
  • Dimension checkΓrms2/qmax2(A2/Hz)/(rad/s)2\Gamma_{rms}^2/q_{max}^2\cdot(\text{A}^2/\text{Hz})/(\text{rad/s})^2 → 括號內無因次(取 10log1010\log_{10} 前),合法 ✓;NN 全程無因次 ✓。

本 lab 的數值:在 Δf=1\Delta f=1 MHz 評估,in2/Δf=1022\overline{i_n^2}/\Delta f=10^{-22} A²/Hz;基準 qmax=1q_{max}=1 pC、Γrms=0.5\Gamma_{rms}=0.5L=128.0\mathcal{L}=-128.0 dBc/Hz。

3. Block diagram

4. Python 核心 code

simulations/lab_17_design_sweep.py 用一個共用的 L_dbc 把 [P1] Eq.(21) 算成 dBc/Hz, 再對三個旋鈕各掃一條曲線:

import numpy as np


def L_dbc(Grms, qmax, in2_df, dw):
return 10 * np.log10(Grms ** 2 / qmax ** 2 * in2_df / (4 * dw ** 2))


dw = 2 * np.pi * 1e6 # evaluate at 1 MHz offset
in2_df = 1e-22

# (a) sweep q_max: 0.1 pC .. 10 pC -> slope -20 dB/decade, 2x -> -6 dB
q = np.logspace(-13, -11, 50)
L_q = L_dbc(0.5, q, in2_df, dw) # baseline qmax=1pC -> -128 dBc/Hz

# (b) sweep Gamma_rms: low Grms -> lower PN
g = np.linspace(0.1, 1.5, 50)
L_g = L_dbc(g, 1e-12, in2_df, dw)

# (c) ring N: Gamma_rms ~ N^-3/2, per-node qmax ~ 1/N, more noisy devices ~ N
N = np.arange(3, 31)
Grms_N = 0.5 * (5.0 / N) ** 1.5 # scaling (illustrative; [P2])
qmax_N = 1e-12 * (5.0 / N) # lower per-node swing as N grows
noise_N = in2_df * (N / 5.0) # more noisy devices
L_N = 10 * np.log10(Grms_N ** 2 / qmax_N ** 2 * noise_N / (4 * dw ** 2))
print(round(L_N[0], 1), round(L_N[-1], 1))
# -> -128.0 -128.0 (essentially flat for all N: the famous N-independence)
  • L_dbc 與 lab_08 的差別:lab_08 從量到的 L\mathcal{L} 積分出 jitter;這裡反向用 Eq.(21) 產生 L\mathcal{L} 再掃旋鈕。兩頁互為正反操作(同 lab_09 的說明)。
  • (c) 的三個 scaling 是 illustrativeΓrmsN3/2\Gamma_{rms}\propto N^{-3/2} 的常數與每節 qmaxq_{max}、 device 數的指數都是 toy 假設,目的是把「為何 NN 大致抵消」具體畫出來。

5. 完整 script path

simulations/lab_17_design_sweep.pymain() 畫三個子圖;L_dbc 為 [P1] Eq.(21) 的 dBc/Hz 封裝;(c) 用 ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2}qmaxN1q_{max}\propto N^{-1}in2N\overline{i_n^2}\propto N 的 toy scaling)。重跑:python scripts/run_all_sims.py

註:此頁檔名為 lab_17_design_tradeoffs.md(對齊 sidebar 命名慣例),對應的 script 是 lab_17_design_sweep.py,圖檔 design_tradeoff_sweeps.png

6. 參數表

參數符號值 / 掃描範圍角色
offset(評估點)Δf\Delta f11 MHz固定
電流雜訊 PSDin2/Δf\overline{i_n^2}/\Delta f102210^{-22} A²/Hz固定(基準);(c) 隨 NN
最大電荷擺幅qmaxq_{max}(a) 0.10.11010 pC;基準 11 pC旋鈕 1
ISF rmsΓrms\Gamma_{rms}(b) 0.10.11.51.5;基準 0.50.5旋鈕 2
ring 級數NN(c) 333030;基準 55旋鈕 3
基準相位雜訊L\mathcal{L}128.0-128.0 dBc/Hz由 Eq.(21) 得(qmax=1q_{max}=1 pC、Γrms=0.5\Gamma_{rms}=0.5

7. 單位表

符號單位
最大電荷擺幅qmaxq_{max}C
ISF rmsΓrms\Gamma_{rms}無因次
ring 級數NN無因次
offset 頻率Δf, Δω\Delta f,\ \Delta\omegaHz, rad/s
相位雜訊L\mathcal{L}dBc/Hz
電流雜訊 PSDin2/Δf\overline{i_n^2}/\Delta fA²/Hz

8. 模擬圖

三條設計曲線:(a) q_max 掃描 -20dB/dec、(b) Γrms 掃描、(c) ring N 幾乎水平

9. 如何解讀圖

  • (a) swing 掃描(藍):log 橫軸 qmaxq_{max}(0.1–10 pC)對 L\mathcal{L} 是一條直線,斜率 20-20 dB/decade——qmaxq_{max} 從 0.1 → 10 pC(兩個 decade)L\mathcal{L}108-108148-148 dBc/Hz 剛好降 4040 dB。紅箭頭標出「2×2\times swing 6\to-6 dB」(121\to2 pC,128134-128\to-134 dBc/Hz)。 記憶點:swing 加倍,phase noise 賺 6 dB。
  • (b) Γrms\Gamma_{rms} 掃描(綠):linear 橫軸,L=20log10Γrms+\mathcal{L}=20\log_{10}\Gamma_{rms}+const 的對數型 曲線——Γrms\Gamma_{rms} 越小 phase noise 越低,且在小 Γrms\Gamma_{rms} 端下降最陡(Γrms\Gamma_{rms} 從 0.5 減半到 0.25 → 6-6 dB)。這就是「對稱波形/低敏感度」的回報。
  • (c) ring NN 掃描(紫):一條幾乎完全水平的線(128\approx-128 dBc/Hz,與 NN 無關)。 這不是巧合,是第 2 節算出的 N0N^0:增級讓 Γrms\Gamma_{rms} 小(好)、但 qmaxq_{max} 也小、device 也 多(壞),三者在固定 f0f_0/功率下抵消。ring 多加級數不會白白改善 phase noise([P2])。
  • 怎麼合起來用:(a)(b) 是「真正能賺 dB 的旋鈕」(提 swing、壓 Γrms\Gamma_{rms});(c) 是 「看似能調、其實抵消」的旋鈕——選 NN 要看 f0f_0、功率、面積、相位數需求,不是為了 phase noise。

10. 對應 paper 公式/figure

  • 主 scaling:[P1] Eq.(21), p.185,LΓrms2/qmax2\mathcal{L}\propto\Gamma_{rms}^2/q_{max}^2
  • Parseval / Γrms\Gamma_{rms}:[P1] Eq.(20), p.185。
  • ring Γrms\Gamma_{rms} scaling:[P2] Eq.(16), p.794(v7 已重核:根號只蓋常數,ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2}; 正文 4/N^1.5@η=0.75 與 App.B Eq.(55) 三重驗證。v3 曾誤讀為 N^-0.75)。
  • ring 頻率:[P2] Eq.(15), p.794,f0=1/(2NτD)f_0=1/(2N\tau_D)
  • ring 白噪 FOM / NN-無關性:[P2], p.795,L1/f283ηVDDVcharkTP(ω0/Δω)2\mathcal{L}\vert_{1/f^2}\approx\frac{8}{3\eta}\,\frac{V_{DD}}{V_{char}}\,\frac{kT}{P}(\omega_0/\Delta\omega)^2 ([P2] Eq.(23), p.796 的前置係數是 8/(3η)8/(3\eta)η\eta 為級延遲比例常數 Eq.14,1\approx1);γ\gamma 僅透過 Vchar=ΔV/γV_{char}=\Delta V/\gamma 進入。v2 曾誤改為 8/(3γ)8/(3\gamma) 並誤標『逐字核實』,v3 已對照原始 PDF p.796 更正)。

11. 限制與 approximation

  • toy scaling,非 transistor-level:(a)(b) 假設「只動一個旋鈕、其他完全不變」;真實電路 qmaxq_{max}Γrms\Gamma_{rms}NN、功率、面積、f0f_0 彼此耦合,不能孤立調。
  • ring (c) 的三個指數是 illustrativeΓrmsN3/2\Gamma_{rms}\propto N^{-3/2}qmaxN1q_{max}\propto N^{-1}in2N\overline{i_n^2}\propto N 都是 toy 假設以演示抵消;確切常數標 TODO: manual verification needed from [P2] page 794–796NN 改變也改 f0=1/(2NτD)f_0=1/(2N\tau_D)(除非縮 τD\tau_D),本圖未一併呈現。
  • 只看 1/f21/f^2 區、固定 offset:在 11 MHz 評估;close-in 1/f31/f^3c0c_0 與積分下限主導, 此三圖不適用(見 lab_07)。
  • 單一白噪源:忽略多源、cyclostationary(Γeff=Γα\Gamma_{eff}=\Gamma\alphalab_14)與 AM–PM。
  • factor-of-2:用 Eq.(21) 的 4Δω24\Delta\omega^2 慣例;SSB 記帳 2 倍差不影響任何相對(dB)斜率。
  • jitter 推論σtΓrms/qmax\sigma_t\propto\Gamma_{rms}/q_{max}6-6 dB phase noise = jitter 減半)需固定 積分範圍與 1/f21/f^2 形狀;見 lab_08lab_09

重點回顧

  • qmaxq_{max} 曲線:20-20 dB/decade;2×2\times swing 6\to-6 dB(基準 128-128134-134 dBc/Hz)。
  • Γrms\Gamma_{rms} 曲線:20log10Γrms20\log_{10}\Gamma_{rms},減半 6\to-6 dB;對稱波形/低敏感度有回報。
  • ring NN 曲線:幾乎水平——Γrms2/qmax2in2N0\Gamma_{rms}^2/q_{max}^2\cdot\overline{i_n^2}\propto N^0phase noise 與 NN 無關([P2] Eq.(16), p.794,v7 已重核:ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2})。
  • 基準:qmax=1q_{max}=1 pC、Γrms=0.5\Gamma_{rms}=0.5in2/Δf=1022\overline{i_n^2}/\Delta f=10^{-22}11 MHz L=128.0\to\mathcal{L}=-128.0 dBc/Hz。

延伸閱讀