從 ISF 到 SerDes clocking
先備:psd_phase_noise_jitter(、、四種 jitter 方言與 phase↔time 換算)、tank_swing( 決定 VCO 自身 noise)、lc_vs_ring(累積 jitter 與 LC/ring 取捨)| 接下來:pll_noise_budget、exercises
這是整個 06 章的收束頁:把前面講的 ISF / phase noise 一路接到 **SerDes(serializer/deserializer , 高速串列收發)**設計師每天在看的東西——clock jitter(時脈抖動)、eye opening(眼圖開度)、 BER(bit error rate,位元錯誤率)。我們會逐步推導 phase→time 的兩條換算,講清楚積分頻寬怎麼選、 RJ/DJ 的差別,以及為什麼 CDR/PLL 會像一個 high-pass filter(高通濾波器)把 VCO 的 close-in noise 濾掉——這解釋了為什麼「同一顆 VCO 在不同 loop 下表現天差地遠」。
物理直覺(先講結論):oscillator 的 phase noise 是「相位在抖」;SerDes 在意的是「邊緣 在時間軸上抖多少」與「取樣時刻落在眼睛中央的機率」。相位抖 → 時間抖() → 取樣點偏離眼中央 → 眼變窄 → BER 變差。但不是所有頻率的 phase noise 都有害:CDR/PLL 會追隨 慢的相位漂移(low-frequency noise 被 loop 吃掉),只剩快的、loop 追不上的 noise 變成 jitter。 所以「積分頻寬」與「loop bandwidth」是 SerDes clocking 的兩個核心旋鈕。
第 1 步:phase → time(單一相位誤差)
oscillator 的 excess phase 怎麼變成 edge 的時間誤差?一個週期 對應 rad 的相位,所以相位與時間成正比(notation 對應公式 17):
逐步推導:訊號 。把 的擾動 看成時間平移 : 要讓 ,解出 ,即
- Dimension check: ✓( 單位是 rad/s,不是 Hz)。
- 手感(5 GHz):1 mrad → 31.8 fs;1 rad → 31.8 ps(= 約 ,合理)。
第 2 步:phase PSD → rms jitter(要積分)
單一 沒用——jitter 是所有頻率的相位 noise 的總和。先把 phase variance 從 phase PSD 積出來(公式 18):
再用第 1 步把 rms phase 換成 rms time(公式 19):
逐步說明每一步:
- 為何積分: 是「每 Hz 的相位功率」(rad²/Hz)。各 offset 頻率的相位抖動是獨立的, 功率相加 → 對 積分得總相位變異 (rad²)。
- dimension check: ✓ → 開根號得 rad。
- 換成時間:除以 (rad/s)→ s。
- 與量測接軌:相位雜訊儀給的是 (dBc/Hz),用小角近似 (單邊 → 雙邊的 factor 2,公式 16),把 換成 再積。
下圖示範由 積分得 rms jitter(5 GHz、 dBc/Hz @ 1 MHz、1/f²、積 1→100 MHz):

此圖非 toy model(是標準 SerDes jitter 積分流程)。完整 script:
simulations/lab_08_jitter_integration.py。 數值積分與解析閉式完全一致。
第 3 步:數值例子(canonical 例 C)
GHz、 dBc/Hz、1/f² 斜率、積分 1→100 MHz。
- dBc/Hz→: dBc/Hz ; rad²/Hz。
- 1/f² 形狀:。
- 積分: rad² → mrad。
- 換成 jitter: fs。
手感重點:1/f² 的積分由下限 主導( 項最大)——所以「從哪裡開始積」極關鍵, 這正是下面要講的「積分頻寬」與「CDR high-pass」的意義。完整口算見 numerical_feeling 例 3。
第 4 步:jitter 怎麼吃掉 eye opening 與 BER
SerDes 接收端在每個 bit 中央取樣(sample)。設 bit 週期(UI,unit interval,單位區間)為 。 取樣時刻的 timing 抖動 直接從兩側「吃進」眼睛的水平開度。對只有 RJ(高斯) 的情形, 在離 eye 中央偏移 處取樣的 BER 是一條 bathtub(浴缸曲線)(規範 §10.2,標準 SerDes 模型):
-
怎麼讀:兩個 項分別是「左邊緣(在 )抖到取樣點右側」與「右邊緣(在 ) 抖到取樣點左側」造成錯誤的機率。在 eye 正中央 兩項相等,BER 最低(浴缸底部)。
-
由 BER 反解 eye 開度:要達到目標 BER(例 ),在底部 附近單側 margin 需 。記 ,所以:
-
eye 水平開度(單側),其中 是 目標 BER 對應的高斯 Q 反函數值(例 BER → ,total RJ 約 peak-to-peak)。
-
直覺:RJ 是高斯、無上界,所以越嚴的 BER(越小機率)要留越多 margin( 越大)。 每增加,眼睛兩側各被啃掉 。
-
數量級:上例 fs;在 GHz、若資料率 10 Gb/s( ps), BER 的 RJ 開銷 ps UI——單從 clock RJ 就吃掉 6.3% 的眼。 這就是為什麼高速鏈路對 VCO phase noise 如此敏感。
⚠️ eye/BER 的 值、 UI 開度模型是 標準 SerDes / 通訊知識(不在下載的 5 篇 PDF 內, 以標準文獻補充,如 dual-Dirac jitter model、OIF-CEI、Razavi)。[P1]/[P2] 給的是 phase noise/jitter 本身,不展開 link budget。
第 5 步:RJ / DJ / accumulated jitter 的差別
SerDes 量到的「jitter」其實是好幾種疊起來的,處理方式完全不同(見 notation 的「四種方言」):
| 種類 | 來源 | 統計 | 怎麼算進 BER |
|---|---|---|---|
| RJ(random jitter) | oscillator phase noise、thermal | 高斯、無上界,用 | peak-to-peak ;BER 越嚴 margin 越大 |
| DJ(deterministic jitter) | ISI、duty-cycle distortion、串擾、PSIJ | 有上界,用 peak-to-peak | 直接相加(bounded),不隨 BER 放大 |
| period jitter | 單週期長度偏差 | — | clock 內部規格 |
| cycle-to-cycle | 相鄰週期差 | — | 對 PLL 穩定性敏感 |
| accumulated / long-term | free-running 漂移, | random walk | open-loop 才有;CDR/PLL 鎖定後被抑制 |
- total jitter(TJ)@ BER:(dual-Dirac 近似(嚴格版與 的差見 dj_dual_dirac))。
- ISF 直接管的是 RJ 與 accumulated jitter(它們源自 phase noise);DJ 多半是 link/pattern 問題,ISF 看不見。
第 6 步:CDR / PLL 對 VCO phase noise 的 high-pass filtering(關鍵)
這是整頁最重要的觀念,也是「為什麼 free-running 的 在實務上不會無限長大」的答案。
- 把 VCO 放進 PLL(鎖到乾淨參考)或 CDR(鎖到資料邊緣),loop 會追隨VCO 的慢相位漂移: 只要漂移夠慢(offset 頻率低於 loop bandwidth ),loop 就把它修掉。
- 結果是 VCO 自身的 phase noise 經歷一個 high-pass 轉移函數:
- 相對地,參考時脈(或 CDR 的輸入資料邊緣)的 noise 經歷 low-pass:低頻原樣通過、高頻被濾掉。
- 設計後果:
- 積分下限 應取 loop bandwidth 附近(不是 DC)——因為低於 的 VCO noise 已被 loop 吃掉。 這直接回答「積分頻寬怎麼選」 :closed-loop jitter 積分由 積到 (Nyquist 或資料率半)。
- accumulated jitter 被截斷:free-running 的 random walk(,能量在極低頻) 正好落在 high-pass 的阻帶 → 被抑制成有界的 tracking error。所以鎖定後不再無限漂。
- loop bandwidth 是取捨: 拉高→濾掉更多 VCO close-in noise(好),但讓更多參考/輸入 noise 與 loop 自身 noise 通過(壞)。最佳 在 VCO noise 與 reference noise 兩條曲線的交點附近。
⚠️ PLL/CDR 的 high-pass/low-pass 轉移函數是 標準 PLL 理論(不在下載的 5 篇 PDF 內,以標準文獻補充, 如 Gardner, Razavi, Best)。[P1]/[P2] 是 open-loop oscillator 的 phase noise 理論;本段是把它接到 closed-loop clocking 的橋。TODO: manual verification needed,若要精確的 loop transfer function(含 charge-pump、 loop filter 階數)請查 PLL 標準文獻。
第 7 步:TX PLL / RX PLL / LC-VCO / ring-VCO 實務直覺
| 場景 | 直覺 | 選 LC 還是 ring? |
|---|---|---|
| TX PLL(產生發送 clock) | 直接決定發送 jitter;通常窄 loop BW(吃掉 ref noise),所以 VCO close-in noise 重要 | 高速 lane 用 LC-VCO(低 phase noise) ;對 jitter 要求嚴 |
| RX CDR(從資料恢復 clock) | loop BW 由資料/jitter tolerance 決定;high-pass 掉 VCO close-in | 常用 ring-VCO(寬調諧、多相位、面積小,且 close-in 被 CDR 濾掉,較不致命) |
| LC-VCO | 低 、低 phase noise、慢漂移;面積大、調諧窄 | TX、reference、高效能 |
| ring-VCO | phase noise 較差、jitter 快累積;但寬調諧、天生多相位、小面積;放進快 loop 後 close-in 被抑制 | RX CDR、低功耗/面積敏感、多相位需求 |
- 核心取捨:ring 的弱點(close-in 1/f³、快 random walk)正好落在 loop 的 high-pass 阻帶—— 如果 loop bandwidth 夠寬,ring-VCO 的 close-in 缺點被大量補償。這就是為什麼許多 RX CDR 用 ring 而不用 LC。
- 反之 TX PLL 為了濾掉 reference 的 spur 常用窄 loop,VCO close-in 直接出現在輸出 → 偏好 LC。
規範要求的 10 個 design 問題 — 總表(含跨頁連結)
| # | 問題 | 一句話答案 | 詳見 |
|---|---|---|---|
| 1 | symmetry 為何影響 flicker upconversion? | 只有 ISF 的 上轉 flicker;對稱波形 | symmetry |
| 2 | swing 為何降 phase sensitivity? | ,;swing 加倍 → −6 dB | tank_swing |
| 3 | slope 小的地方注入為何危險? | ;斜率小→ 大→相位敏感 | waveform_slope |
| 4 | LC vs ring 怎麼比? | LC 高 /大 /低 noise;ring 多 device/ISF 集中 transition;固定 /P 下 ring ~與 無關 | lc_vs_ring |
| 5 | ISF 與 jitter 的關聯? | 同時定 phase noise 與 () | lc_vs_ring、本頁 §2 |
| 6 | phase noise 怎麼積分換 jitter? | ;1/f² 由下限主導 | 本頁 §2–3、numerical_feeling |
| 7 | 改 的 knobs? | 波形對稱、快邊緣、差動、cyclostationary 對齊、ring | device_noise_mapping |
| 8 | 改 的 knobs? | 加 swing 、提高 tank /、differential、推到 headroom | tank_swing |
| 9 | 怎麼降 white-noise(1/f²)phase noise? | 降 、加 、降 ([P1] Eq.21) | tank_swing、device_noise_mapping |
| 10 | 怎麼降 flicker close-in(1/f³)? | 降 ( 對稱/差動/duty 50%/ 對齊)、降 device 、靠 loop high-pass | symmetry、本頁 §6 |
適用與失效條件
| 條件 | 成立時 | 失效時 |
|---|---|---|
| 小角近似 | rad | 大相位抖動(接近 1 rad)時 SSB↔PSD 偏離 |
| RJ 高斯、與 DJ 獨立 | dual-Dirac TJ 模型有效 | RJ 非高斯、jitter 相關時要 jitter decomposition |
| loop transfer 為一階 high-pass | 直覺估積分下限 | 高階 loop、peaking 時要完整 transfer function |
| open-loop ISF 理論 | 算 VCO 自身 phase noise | closed-loop 要把 loop filtering 疊上去 |
Worked examples 數值例題
以下兩題把本頁兩個核心動作算清楚:(1) 由 用 Q 函數算 BER bathtub 開口(UI=100 ps); (2) 積分頻寬選擇——下限取 DC vs 取 loop bandwidth,jitter 差多少。沿用 canonical: GHz、 dBc/Hz、1/f² 斜率、例 C 得 fs。
例 1(由 算 BER bathtub 開口,UI=100 ps) 資料率 10 Gb/s → UI ps。clock RJ fs(例 C,假設無 ISI/DJ)。求: (a) eye 正中央 的 BER;(b) 要保證 BER ,bathtub 的水平開口(eye opening)多寬。
逐步代入(帶單位)。先算「中央到邊緣」相對 有幾個 :
(b) 開口由「離中央多遠時 BER 升到 」決定。,所以單側可容忍偏移 滿足 :
- 結果:(a) 中央 BER 天文數字地小( 只佔半 UI 的 );(b) BER 的 bathtub 開口 ps UI——亦即 clock RJ 從兩側各啃掉 ps、 合計 ps UI。與第 4 步「448 fs RJ ≈ 0.063 UI」一致。
- Dimension check: 的引數 無因次 ✓;開口 、除以 UI 得 UI 數(無因次)✓。
- 一行 Python 驗證(引用
simulations/common/serdes_utils.py的真實Q、ber_bathtub):
import numpy as np
from simulations.common.serdes_utils import Q, ber_bathtub
ui, sigma_t = 100e-12, 447.9e-15
print("BER(0) =", ber_bathtub(0.0, sigma_t, ui)) # -> ~0 (1e-300 floor)
t_edge = ui/2 - 7.03*sigma_t
print("opening =", 2*t_edge*1e12, "ps =", 2*t_edge/ui, "UI") # -> 93.7 ps = 0.937 UI
例 2(積分頻寬選擇:下限取 DC vs 取 loop bandwidth) 同一顆 VCO(例 C 的 1/f² skirt, rad²/Hz),上限 MHz。 比較「open-loop 從 kHz 積」與「closed-loop 從 loop bandwidth MHz 積」的 rms jitter。 這正是「為什麼 CDR/PLL 的 high-pass 讓 jitter 變小」的數值版。
逐步代入(帶單位)。1/f² 的 phase variance 積分有閉式 ,這裡 :
- 結果:把積分下限從 10 kHz(open-loop)提到 1 MHz(loop BW)→ rms jitter 從 4.50 ps 降到 448 fs (降約 )。因為 1/f² 的 jitter 由下限 主導,loop 的 high-pass 砍掉 的 VCO close-in noise,等效於把積分下限抬到 ——這就是「積分頻寬怎麼選」的量化答案: closed-loop jitter 由 積到 。
- Dimension check: ✓; ✓。
- 一行 Python 驗證(引用
simulations/common/noise_utils.py):
import numpy as np
from simulations.common.noise_utils import leeson_one_over_f2, integrate_rms_jitter
for f1 in (1e4, 1e6):
f = np.logspace(np.log10(f1), 8, 6000)
L = leeson_one_over_f2(f, L_ref_dbc=-100, f_ref=1e6)
st, sp = integrate_rms_jitter(f, L, f0=5e9, fmin=f1, fmax=100e6)
print(f"f1={f1:.0e}: sigma_t = {st*1e15:.1f} fs")
# f1=1e+04: sigma_t = ~4500 fs ; f1=1e+06: sigma_t = 447.9 fs
例 1 的 BER/Q 模型是 標準 SerDes 知識(不在 5 篇 PDF 內,以標準文獻補充,如 dual-Dirac、OIF-CEI); 例 2 的 loop high-pass 截斷是 標準 PLL 理論(不在 5 篇 PDF 內)。phase noise/jitter 本身來自 [P1]/[P2]。
重點回顧
- ;(1/f² 由積分下限主導)。
- 例 C: dBc/Hz @ 1 MHz、5 GHz、1/f²、1→100 MHz → mrad、 fs。
- jitter 從兩側吃 eye:/側;10 Gb/s、BER 時 448 fs RJ ≈ 0.063 UI。
- RJ(高斯,源自 phase noise,ISF 管)vs DJ(有界,ISI/串擾,ISF 看不見);TJ DJRJ。
- CDR/PLL 對 VCO noise 是 high-pass:close-in/accumulated jitter 被壓 → 積分下限取 。
- 實務:TX PLL 偏好 LC-VCO(close-in 重要);RX CDR 常用 ring-VCO(close-in 被 loop 濾掉)。