先備:tank_swing(FOM 定義與 phase-noise × power 取捨)、white_noise_to_phase_noise([P1] Eq.(21) 與 factor-of-2 慣例)、lc_vs_ring([P2] Eq.(23) ring FOM、−91 dBc/Hz 例)|接下來:real_oscillator_topologies、pll_noise_budget
這頁回答三個所有 VCO 設計者遲早會問的問題:
- FOM(figure of merit,振盪器品質指標)有沒有物理上限? 上限是多少、由什麼決定?
- 文獻上最好的 LC 設計 FOM 在 190 dB 上下——它們離天花板還有幾 dB?
- ring oscillator 為什麼天生落後 LC 約 25 dB? 落後的每一 dB 是誰吃掉的?
物理直覺(先講結論):FOM 的構造刻意把 (f0/Δf)2 與功率 P 完全消掉,
剩下的只有兩個東西:一個是大自然的價目表 kT(1 Hz 頻寬內的熱雜訊能量 vs 1 mW),
在 300 K 折合 173.8 dB;另一個是拓樸雜訊因子 Feff——你的電路把 kT 放大
(ring:Feff≥3.6,天花板 168.3 dB)或用高 Q 儲能把它比下去
(LC:Feff∝1/Q2,天花板隨 Q 每十倍升 20 dB)。
所以沒有單一魔術數字:天花板是一個「家族」,家族成員由你允許 Feff 裡放什麼物理決定。
第 0 步:FOM 的定義與正負號慣例
本頁採用正值慣例(越大越好,survey 表格最常見):
FOM=−L(Δf)+20log10(Δff0)−10log10(1 mWP)[dB]
- L(Δf):offset Δf 處的 SSB phase noise,單位 dBc/Hz(負數,故 −L 為正)。
- f0:載波頻率 [Hz];Δf:offset 頻率 [Hz];P:總 DC 功耗 [W],以 1 mW 歸一化。
- 與 tank_swing 的對照:該頁寫的是
FOM′=L−20log10(f0/Δf)+10log10(P/1mW)——正負號相反的同一個量
(FOM=−FOM′,該慣例下越負越好)。兩種寫法文獻都有;本頁用正值慣例,
數值上例如 ring 例的 FOM=165.0 dB 就是該頁慣例的 FOM′=−165.0 dB。
- 隱藏的參考單位:L 的「per Hz」其實是「1 Hz 量測頻寬內的 sideband 功率 ÷ 載波功率」。
把這個 Bref=1 Hz 寫出來,FOM 的 log 引數才嚴格無因次;FOM 的完整參考基準是
「1 Hz 頻寬、1 mW 功率」。下一步會看到這件事不是學究——它正好讓 kT 乾淨現身。
- Dimension check:三項各是無因次比值的 10log10(LlinBref、(f0/Δf)2、P/Pref)→ dB ✓。
第 1 步:參考常數——173.8 dB 是 1⋅kT,不是 2kT
假設某拓樸在 1/f2(白噪)區的 phase noise 可以整理成下面這個萬用形(下兩步會證明
ring 與 LC 都可以):
Llin(Δf)=Feff⋅PkT⋅(Δff0)2[Hz1]
其中 Feff 是無因次的拓樸雜訊因子(這條式子就是它的定義)。
單位檢查:PkT=[W][J]=[s]=[Hz]1,
乘無因次的 Feff(f0/Δf)2 後正是 Llin 需要的 per-Hz ✓。代入 FOM 定義,逐步約分:
FOM=−10log10(FeffPkTBref(Δff0)2)+10log10((Δff0)2)−10log10(PrefP)=−10log10(Feff⋅PkTBref⋅PrefP)(兩個 (f0/Δf)2 項相消)=≡Cref(T),只跟溫度有關−10log10(PrefkTBref)−10log10Feff.
- 每一步用到什麼:第 1→2 行,(f0/Δf)2 在 −L 與 +20log10(f0/Δf)
之間精確相消;第 2→3 行,P 在 kT/P 與 P/Pref 之間精確相消。
這兩個相消就是 FOM 被發明的目的(把「L×P≈ 常數」的取捨歸一化掉,
見 tank_swing 第 4 步)。
- Dimension check:PrefkTBref=[W][J][Hz]=[W][W] 無因次 ✓——
第 0 步藏的 Bref=1 Hz 在這裡剛好把 kT 的量綱補齊。
- 物理意義:kT⋅(1 Hz) 是 1 Hz 頻寬內電阻能交出的熱雜訊可用功率
(kT≈4.14×10−21 J @ 300 K);Cref 就是「1 mW 比熱雜訊地板大幾個 dB」。
數值(k=1.380649×10−23 J/K,T=300 K):kT=4.142×10−21 J,
kT⋅1Hz/1mW=4.142×10−18,Cref=−10log10(4.142×10−18)=173.83 dB。
FOM=173.8 dB−10log10Feff(T=300 K)
⚠️ 記憶陷阱(本站算過, 別背錯):快速筆記常把這個常數寫成「−10log10(2kT/1mW)=173.8」——
錯。2kT 配對的是 170.8 dB;173.8 dB 配對的是 1⋅kT。
本頁的推導自然落在 1⋅kT:因為 [P2] Eq.(23) 印出來的就是 kT/P 形式(第 2 步),
而 LC 的歸約(第 3 步)把所有 2 與 4 都收進 Feff。所有 factor-of-2 慣例
(SSB 的 /4 vs 時域的 /2)都住在 Feff 裡、只挪動 FOM 共 3.01 dB;Cref 本身是無慣例的。
import numpy as np
kB, T = 1.380649e-23, 300.0
print(round(-10*np.log10(kB*T*1.0/1e-3), 2))
print(round(-10*np.log10(2*kB*T/1e-3), 2))
print(round(10*np.log10(kB*290.0/1e-3), 2))
- 順帶收穫:kT 用 T0=290 K(IEEE 雜訊指數的參考溫度,源自 Friis 1944,外部文獻,非本站 5 篇 PDF,
完整引用見頁尾)換算成 dBm/Hz 就是著名的 −174 dBm/Hz;300 K 給 −173.83,兩者都四捨五入成 −174。
- 溫度效應:Cref 每升溫 10 K 降約 0.14 dB(Cref(310K)−Cref(300K)=−0.142 dB)——
比較不同溫度量的 FOM 時要記得這條斜率。
第 2 步:ring——[P2] Eq.(23) 一步歸約,天花板 168.3 dB
[P2] Eq.(23), p.796(已對照原始 PDF 核實,前置係數 8/(3η))本身已經是萬用形:
Llin{Δf}=3η8⋅PkT⋅VcharVDD⋅(Δff0)2⟹Feffring=3η8⋅VcharVDD
- η:級延遲比例常數([P2] Eq.(14),≈1,無因次);VDD:supply 電壓 [V];
Vchar=ΔV/γ:device 的特徵電壓 [V](ΔV = gate overdrive [V]、γ = 通道熱雜訊係數,無因次)。
- 單位檢查:Feffring 是(無因次)×(V/V)= 無因次 ✓;整條 Llin 的單位由 kT/P=[s] 提供 per-Hz ✓。
- 為什麼 P 會自然出現:[P2] Eq.(21) 給 P=2ηNVDDqmaxf0——功率把 N、qmax、f0
全部吸收,這正是 lc_vs_ring 講的 N-independence 在 FOM 語言下的樣子。
天花板:Vchar=ΔV/γ,而 overdrive 受 supply 限制 ΔV≤VDD/2(VT=0 時取等號),所以
VcharVDD=γΔVVDD≥2γ⟹Feffring≥3η16γ
這就是 [P2] Eq.(25), p.796 的下限。取長通道 γ=2/3、η=1:Feff,minring=32/9=3.556,
10log10(3.556)=5.51 dB,
FOMmaxring=173.83−5.51=168.32 dB(300 K)
本站 ring worked example 的驗證(lc_vs_ring 例 1:
L=−91.0 dBc/Hz @ 1 MHz、f0=5 GHz、P=1 mW、VDD/Vchar=3):
FOM=91.0+20log10(5000)−0=91.0+73.98=165.0 dB
import numpy as np
kB, f0, df = 1.380649e-23, 5e9, 1e6
Cref = -10*np.log10(kB*300/1e-3)
Feff_ring = 8/3 * 3
print(round(Cref - 10*np.log10(Feff_ring), 2))
print(round(91.0 + 20*np.log10(f0/df) - 0.0, 2))
Feff_min = 16*(2/3)/3
print(round(Cref - 10*np.log10(Feff_min), 2))
- 兩條路差 0.2 dB 的來源(誠實記帳):Feff 路徑用精確 kT(300K)=4.142×10−21 J
得 164.80;lc_vs_ring 的鏈用了四捨五入的 kT=4.0×10−21 J
(那其實是 290 K 的值)得 L=−91.0、FOM=165.0。兩者在 kT 取值一致時逐位相等
(
simulations/fig_fom_limit.py 印出 identity check =0.00)。本頁引用時一律寫「≈165 dB」。
- 這個例子離 ring 天花板只有 168.32−164.80=3.52 dB(正好是 VDD/Vchar=3 vs 下限 2γ=4/3
的比值 2.25→3.52 dB)——ring 的萬用形幾乎沒有揮灑空間,這是重點。
- 適用/失效:single-ended CMOS inverter ring、白噪、long-channel γ=2/3。短通道 γ 更大
→ 天花板更低(γ=1 時 16γ/3=5.33→166.6 dB);flicker、supply/substrate 耦合都只會再往下扣。
第 3 步:LC——從 [P1] Eq.(21) 推 Feff=2Q2ηPFΓrms2
LC 沒有現成的 kT/P 形式,要自己走。從 [P1] Eq.(21), p.185(SSB、分母 4Δω2 慣例)出發:
Llin{Δω}=qmax2Γrms2⋅4Δω2in2/Δf
引入四條標準電路關係(每條先檢查單位):
- 雜訊源:tank 損耗電阻 Rp 的熱雜訊 in2/Δf=4kT/Rp
([J]/[Ω]=[A2s]=[A2/Hz] ✓;見
tank_Q_and_energy_restoration)。
多個雜訊源時定義噪聲因子 F(無因次):把所有源經各自 Γeff 加權後折算回 tank 源,
in2/Δftot=F⋅4kT/Rp,F≥1(tank 自己就貢獻 1)。
理想 class-B cross-coupled(tail 理想濾波)F=1+γ——此值為外部文獻標準結果
(Hegazi–Sjöland–Abidi 2001;Andreani et al. 2005,完整引用見頁尾),非 5 篇 PDF 內。
- 電荷擺幅:qmax=CVmax([F][V]=[C] ✓,[P1] 定義)。
- 功率:正弦擺幅 Vmax 打在 Rp 上的平均耗散 Ptank=Vmax2/(2Rp)
([V2/Ω]=[W] ✓);總 DC 功耗 PDC=Ptank/ηP,
ηP≤1 為功率效率(無因次)。
- 品 質因數:並聯 RLC 的 Q=ω0RpC([s−1][Ω][F],
Ω⋅F=s → 無因次 ✓)。
逐步代入(不跳步):
Llin=(CVmax)2Γrms2⋅4Δω2F⋅4kT/Rp=RpC2Vmax2Δω2FΓrms2kT=RpC2⋅2PtankRp⋅Δω2FΓrms2kT=2Ptank(RpC)2Δω2FΓrms2kT=2Q2FΓrms2⋅PtankkT⋅(Δωω0)2(代 1、2,約掉 4)(代 3:Vmax2=2PtankRp)(代 4:RpC=Q/ω0)
ω0/Δω=f0/Δf(2π 上下相消),再把 Ptank=ηPPDC 換成總功耗,得萬用形與
FeffLC=2Q2ηPFΓrms2
- Dimension check(整條):FeffLC 全由無因次量組成 ✓;kT/Ptank=[s] 給 per-Hz ✓。
- 物理意義(本頁最重要的一句話):分母的 Q2 說明 LC 憑什麼打穿 173.8 dB「參考線」——
諧振腔把訊號能量無雜訊地儲存起來,每瓦損耗只有 Rp 一份 kT 雜訊進帳;Q 越高,
「儲存的訊號 ÷ 買進的雜訊」越大,Feff<1 完全合法。參考線不是 LC 的天花板;
LC 的天花板由製程能給的 Q 決定(片上 spiral 電感在 GHz 頻段典型 Q≈8∼15)。
- 失效條件:swing 大到波形失真(Γrms、F 改變)、voltage-limited 後 ηP 崩落、
varactor/開關的損耗吃掉 Q、flicker 主導的 offset(萬用形只涵蓋 1/f2 區)。
數值一致性驗證(把 canonical 例 B 反向工程成一顆 tank):例 B(Γrms=0.5、qmax=1 pC、
Si=10−24 A²/Hz、f0=5 GHz → L=−148.0 dBc/Hz @ 1 MHz)若把 Si 解讀成單一 tank 源、
假設 Vmax=1 V,則 Rp=4kT/Si=16.6 kΩ、C=1 pF、Q=ω0RpC=520.5、Ptank=30.2 µW——
兩條路(Eq.(21) 直接算 vs Feff 萬用形)必須給同一個 L:
import numpy as np
kB, T, f0, df = 1.380649e-23, 300.0, 5e9, 1e6
grms, qmax, Si = 0.5, 1e-12, 1e-24
dw = 2*np.pi*df
L_direct = 10*np.log10(grms**2/qmax**2 * Si/(4*dw**2))
Rp = 4*kB*T/Si; C = qmax/1.0; Q = 2*np.pi*f0*Rp*C; Pt = 1.0**2/(2*Rp)
Feff = 1.0*grms**2/(2*Q**2)
L_feff = 10*np.log10(Feff*(kB*T/Pt)*(f0/df)**2)
print(round(L_direct, 2), round(L_feff, 2))
print(round(Q, 1), round(Pt*1e6, 2))
FOM = -L_direct + 20*np.log10(f0/df) - 10*np.log10(Pt/1e-3)
print(round(FOM, 1))
- 教學點(FOM 會抓包):例 B 的 −148 dBc/Hz 本身沒問題,但換算成 FOM 高達 237 dB,
等價於 Q≈520 的 tank——立刻暴露「Si=10−24 A²/Hz 配 1 pC」是刻意理想化的單源教學參數,
不是可實作的設計點。dBc/Hz 會騙人(沒講功率),FOM 不會。
第 4 步:天花板是「家族」,不是一個數字
把三步合起來:任何拓樸只要白噪區能 寫成萬用形,就有
FOM=173.8 dB−10log10Feff(300 K)
這是恆等式(Feff 的定義使然);「天花板」的內容全看你允許 Feff 裡放什麼物理:
| 家族成員 | Feff | 10log10Feff | FOMmax(300 K) | 來源/假設 |
|---|
| 參考線(Feff=1) | 1 | 0 dB | 173.8 dB | 定義;「sideband 密度 = 熱雜訊地板」 |
| ring 天花板 | 16γ/(3η)=3.56 | +5.5 dB | 168.3 dB | [P2] Eq.(25):VT=0、γ=2/3、η=1、白噪 |
| 本站 ring 例 | 8 | +9.0 dB | 164.8(≈165.0)dB | [P2] Eq.(23):VDD/Vchar=3;= −91 dBc/Hz 例 |
| LC 理想、Q=10 | 4.17×10−3 | −23.8 dB | 197.6 dB | [P1] Eq.(21)(SSB /4)+F=1+γ、Γrms2=21、ηP=1 |
| 同上、時域 /2 慣例 | 8.33×10−3 | −20.8 dB | 194.6 dB | 同一物理、Leeson 2FkT 記帳(低 3.01 dB) |
| LC 理想、Q=20 | 1.04×10−3 | −29.8 dB | 203.7 dB | 同上(/4 慣例) |
import numpy as np
Cref = -10*np.log10(1.380649e-23*300/1e-3)
gamma = 2/3
def fom_lc_ceiling(Q, F=1+gamma, grms2=0.5, eta_p=1.0):
return Cref - 10*np.log10(F*grms2/(2*Q**2*eta_p))
print(round(fom_lc_ceiling(10), 2))
print(round(fom_lc_ceiling(10) - 10*np.log10(2), 2))
print(round(fom_lc_ceiling(20), 2))
小測驗(先自己算,再檢查)
dB
判定:相對誤差 ±1% 內算對;可用科學記號輸入。
Factor-of-2 紀律(哪個 2、哪個慣例):本站在
white_noise_to_phase_noise 記錄過:同一組例 B 參數,
[P1] Eq.(21) 的 SSB「/4」給 −148.0 dBc/Hz,時域乾淨推導的「/2」給 −145.0 dBc/Hz。
在 FOM 語言裡這顆 2 整顆搬進 Feff:/2 慣例的 Feff 是 /4 慣例的兩倍、FOM 低
10log102=3.01 dB(上表兩列)。Leeson 的 2FkT/Ps 形(見
derivation_leeson)化簡成 Feff=F/(2Q2),屬 /2 那一族——
與本頁 [P1] 推導的 FΓrms2/(2Q2)=F/(4Q2)(Γrms2=21)正好差這顆 2 ✓。
量測的 FOM 沒有這個問題(儀器量到什麼就是什麼);這 3 dB 只影響「理論天花板」的標定,
所以上表把兩種慣例都列出來。
另注意 Γrms2=21 是 true-LC(Γ=−sinθ)的代表值而非硬下限——
波形工程(class-F 等)動的正是這一項與 F、ηP。

- script:
simulations/fig_fom_limit.py(跑法 PYTHONPATH=. python3 simulations/fig_fom_limit.py,
會把本頁全部關鍵數字印出來並存圖)。
- 參數:k=1.380649×10−23 J/K;ring:η=1、γ=2/3、VDD/Vchar∈{2γ,3};
LC:F=1+γ、Γrms2=21、ηP=1、Q∈[2,100]。
- 如何解讀:(a) 每條線是一個 Feff 的天花板對溫度 T 的走勢(斜率