← Về trang chủ
Design 23 tháng 5, 2026 ⟳ 10 phút đọc

CP-PLL Locking Transient — R Ảnh Hưởng Thế Nào Đến Settling?

Bode plot cho biết phase margin nhưng không mô tả PLL settle ra sao trong time-domain. Bài này chạy behavioral transient sim cho 3 giá trị R, giải thích tại sao ζ cao không phải lúc nào cũng đồng nghĩa với settling tốt — và cách đọc kết quả bằng PLL Loop Analyzer.

plltransientloop-filterdampingsettling-timephase-margin
Nhận bài viết mới

Không spam. Chỉ bài kỹ thuật AMS đáng đọc — gửi qua email khi có bài mới.

Bài trước chọn loop filter bằng Bode plot — kéo slider R, C₁, C₂ trên PLL Loop Analyzer, đọc fcf_c và PM. Khi PM ≈ 45–60°, vòng lặp được xem là ổn định.

Nhưng Bode plot là frequency-domain. Nó nói “PM = 53°” — không nói VCO sẽ leo từ ffreef_{free} lên foutf_{out} như thế nào. Mất bao lâu? Overshoot không? Dao động mấy lần trước khi settle?

Câu hỏi đó cần time-domain transient simulation.


Mục lục

  1. Setup
  2. Ba trường hợp — metrics
  3. Kết quả transient
  4. Phân tích từng case
  5. Settling time
  6. R có một sweet spot — và giới hạn ở cả hai phía

1. Setup

Model dùng hybrid ODE solver: mỗi chu kỳ TrefT_{ref} chia hai phase — CP-on và CP-off — giải bằng Radau (chi tiết solver + code ở Cycle Slip & Acquisition; code đầy đủ ở repo ams-models/pll).

Lần này Δf=5\Delta f = 5 MHz (cố ý chọn nhỏ) để tập trung vào settling, không phải acquisition:

Tham sốGiá trị
freff_{ref}50 MHz
foutf_{out}2.4 GHz
NN48
ICPI_{CP}130 µA
KVCOK_{VCO}200 MHz/V
C1C_115 pF
C2C_21.5 pF
ffreef_{free}2.395 GHz — Δf=5\Delta f = 5 MHz, Vtune,lock=25V_{tune,lock} = 25 mV

RR là biến duy nhất. Ba giá trị.


2. Ba trường hợp — metrics

Zero, pole, ζ — công thức analytic (chính xác):

Case ACase BCase C
RR6 kΩ16 kΩ40 kΩ
ωn=ICPKVCO/NC1\omega_n = \sqrt{I_{CP} K_{VCO} / N C_1}6.06.06.0 Mrad/s
ωz=1/RC1\omega_z = 1/RC_1 (→ fzf_z)11.1 (1.77M)4.2 (0.66M)1.67 (0.27M)
ωp=(C1+C2)/RC1C2\omega_p = (C_1{+}C_2)/RC_1C_2 (→ fpf_p)122 (19.5M)45.9 (7.30M)18.3 (2.92M)
ζ=ωnRC1/2\zeta = \omega_n R C_1 / 20.270.721.80

Crossover & PM — cần đọc từ PLL Loop Analyzer (full L(jω)L(j\omega), không có công thức closed-form đáng tin):

Case ACase BCase C
fcf_c0.971.372.43 MHz
fc/fpf_c / f_p0.050.190.83
PM26°53°44°

Điểm đáng chú ý ở Case C: ζ=1.80\zeta = 1.80 trông như “overdamped” theo 2nd-order — đáng lẽ không ring và PM cao — nhưng PM thực chỉ 44°, vì fc=2.43f_c = 2.43 MHz đã tiến sát pole lọc ripple fp=2.92f_p = 2.92 MHz (fc/fp=0.83f_c/f_p = 0.83): pole thêm phase lag, cắt PM xuống (chi tiết ở mục 4).

Vì sao closed-form ωc=ICPKVCOR/N\omega_c = I_{CP}K_{VCO}R/N không đủ: công thức này giả định tại crossover ZR|Z| \approx R (vùng phẳng giữa zero và pole), chỉ đúng khi fzfcfpf_z \ll f_c \ll f_p — tức Case B. Case A có fc<fzf_c < f_z (crossover còn trong vùng tích phân, gần fnf_n), Case C có fcf_c sát fpf_p — cả hai khiến ωc=ICPKVCOR/N\omega_c = I_{CP}K_{VCO}R/N lệch khá nhiều. Vì vậy luôn đọc fcf_c, PM trực tiếp từ tool, đừng tin con số closed-form ngoài Case B.

Kiểm tra trên PLL Loop Analyzer

Dùng tool ngay bên dưới — set các thông số sau cho từng case để thấy Bode plot và PM trực tiếp. Giữ nguyên ICP=130 μAI_{CP} = 130\ \mu\text{A}, KVCO=200 MHz/VK_{VCO} = 200\ \text{MHz/V}, N=48N = 48, fref=50 MHzf_{ref} = 50\ \text{MHz}, C1=15 pFC_1 = 15\ \text{pF}, C2=1.5 pFC_2 = 1.5\ \text{pF}. Chỉ thay R:

R (kΩ)PM (tool)Đặc điểm trên Bode
Case A6≈ 26°fc<fzf_c < f_z — zero chưa đủ phase lead
Case B16≈ 53°fz<fc<fpf_z < f_c < f_p — vùng phase lead tốt
Case C40≈ 44°fcf_c tiến sát fpf_p — pole lọc ripple cắt phase
PLL / VCO
ICP
µA
1 µA5 mA
KVCO
MHz/V
1 MHz/V5 GHz/V
N
1512
fref
MHz
1 MHz500 MHz
Loop Filter
C1
pF
1 pF1 nF
R
0.1 Ω1 MΩ
C2
pF
1 pF1 nF
● Type-II CP-PLL · Exact Z(s) · 500-pt log sweep
Output Metrics
fc
1.37MHz
PM
53.5°
fz
663kHz
fp
7.29MHz
fc / fref
0.027
fz / fc
0.48
fp / fc
5.3
Bode Plot — Open Loop L(jω)
* Type-II CP-PLL · Continuous-time model · Exact Z(s) — không bỏ C₂ trong mẫu số. Dải tần 1kHz–1GHz, 500 điểm log-uniform. Model chính xác khi fc < fref/10.

3. Kết quả transient

CP-PLL transient — so sánh 3 loop filter cases (R = 6, 16, 40 kΩ)

Panel trên — finstf_{inst}: Cả ba case xuất phát từ ffree=2.395f_{free} = 2.395 GHz và kéo về fout=2.4f_{out} = 2.4 GHz. Sự khác biệt nằm ở tốc độ và hình dạng đường cong.

Panel dưới — VtuneV_{tune}: Cần đạt Vtune,lock=25V_{tune,lock} = 25 mV. Ripple trên VtuneV_{tune} gây ra ripple trực tiếp trên tần số.


4. Phân tích từng case

Case A — R = 6 kΩ (ζ = 0.27, PM = 26°)

Crossover thực fc0.97f_c \approx 0.97 MHz nằm dưới fz=1.77f_z = 1.77 MHz — thực ra gần đúng fn=ωn/2π0.96f_n = \omega_n/2\pi \approx 0.96 MHz, vì crossover còn nằm trong vùng tích phân của loop filter (chưa tới zero). Vì fc<fzf_c < f_z, zero mới cho phase lead một phần: arctan(fc/fz)29°\arctan(f_c/f_z) \approx 29° (chưa tới vùng lead tối đa 90°). Tổng phase 180°+29°=151°\approx -180° + 29° = -151° (pole ở 19.5 MHz quá xa, gần như không đóng góp) → PM chỉ 26°.

Kết quả: PLL ring mạnh quanh fn0.96f_n \approx 0.96 MHz. Envelope tắt với hằng số thời gian 1/(ζωn)6201/(\zeta\omega_n) \approx 620 ns, nhưng với PM thấp như vậy thực tế mất ~2.8 µs để settle hẳn (sim: overshoot ~47%).

Case B — R = 16 kΩ (ζ = 0.72, PM = 53°)

fc=1.37f_c = 1.37 MHz nằm giữa fz=0.66f_z = 0.66 MHz và fp=7.30f_p = 7.30 MHz — đây là vùng zero đang cho phase lead tối đa. Loop filter cho dòng CP tích lũy vào cả C₂ (thay đổi Vtune nhanh) lẫn C₁ (qua R, chậm hơn). Hai hằng số thời gian phối hợp đúng → settling sạch: overshoot nhỏ (~12%, do closed-loop zero đẩy lên cao hơn mức ζ=0.72\zeta = 0.72 thuần), vài dao động nhẹ rồi settle trong ~0.84 µs.

Đây là vùng thiết kế lành mạnh: fz<fc<fpf_z < f_c < f_p, PM ≈ 45–60°.

Case C — R = 40 kΩ (ζ = 1.80, PM = 44°)

Theo 2nd-order: ζ=1.80\zeta = 1.80 → overdamped → không ring. Nhưng tool cho PM = 44° và sim vẫn thấy dao động.

Lý do: khi R tăng, crossover fcf_c tăng còn pole lọc ripple fp=(C1+C2)/(RC1C2)f_p = (C_1{+}C_2)/(RC_1C_2) lại giảm — hai bên tiến lại gần nhau. Đến Case C, fc=2.43f_c = 2.43 MHz đã sát fp=2.92f_p = 2.92 MHz (fc/fp=0.83f_c/f_p = 0.83). Pole thêm phase lag arctan(fc/fp)=arctan(0.83)40°\arctan(f_c/f_p) = \arctan(0.83) \approx 40° ngay tại crossover, kéo PM từ ~84° (chỉ riêng zero đóng góp) xuống còn 44°.

Ringing trong Case C xảy ra ở tần số gần fp2.9f_p \approx 2.9 MHz — nhanh hơn và tắt nhanh hơn Case A, nhưng vẫn là dao động không mong muốn. Đây chính là điều mà 2nd-order formula (chỉ thấy ζ=1.8\zeta = 1.8) bỏ qua hoàn toàn.


5. Settling time

Với 2nd-order approximation, settling đến trong ±2%\pm 2\%:

tsettle4ζωnt_{settle} \approx \frac{4}{\zeta \,\omega_n}
Case ACase BCase C
ζωn\zeta \omega_n (Mrad/s)1.624.3310.8
tsettlet_{settle} theo 2nd-order~2.5 µs~0.92 µs~0.37 µs
Thực tế (sim)~2.8 µs (PM 26°, ring)~0.84 µs (≈ khớp)~0.86 µs (pole ring)

Case C trông rất nhanh trên giấy (0.37 µs), nhưng ringing do fpf_p gần fcf_c thêm vào thời gian settle thực tế (~0.86 µs — chậm 2.3×). Công thức 2nd-order chỉ đúng khi fpfcf_p \gg f_c — tức là RC21/ωcR C_2 \ll 1/\omega_c.


6. R có một sweet spot — và giới hạn ở cả hai phía

Từ ba case, thấy rõ: tăng R không phải lúc nào cũng tốt hơn.

  • R nhỏ → fc<fzf_c < f_z: zero chưa đủ phase lead, PM thấp, ring quanh fnf_n.
  • R lớn → fcf_c tiến sát fpf_p: pole lọc ripple cắt phase, PM thấp, ring ở tần số gần fpf_p.

PM đạt cực đại khi fcfzfp1/(2πRC1C2)f_c \approx \sqrt{f_z \cdot f_p} \approx 1/(2\pi R\sqrt{C_1 C_2}) — tức khi crossover nằm đúng giữa zero và pole trên thang log. Điều kiện thực tế:

fz<fc<fp3f_z < f_c < \frac{f_p}{3}

Với Case B (R = 16 kΩ): fz=0.66f_z = 0.66 MHz <fc=1.37< f_c = 1.37 MHz <fp/3=2.43< f_p/3 = 2.43 MHz ✓

Nếu cần loop bandwidth lớn hơn mà không muốn fpf_p cản trở, cần giảm C2C_2 — nhưng C2C_2 nhỏ hơn có nghĩa là lọc ripple kém hơn, và có thể cần thêm stage lọc sau.


Tổng kết

Case A (R = 6 kΩ)Case B (R = 16 kΩ)Case C (R = 40 kΩ)
ζ\zeta (2nd-order)0.270.721.80
PM (tool, exact)26°53°44°
fc/fpf_c / f_p0.050.190.83
SettlingRing tại fnf_nCleanRing tại fpf_p

Ba điều cần nhớ:

PM — không phải ζ — là chỉ số chính xác nhất về settling behavior. Dùng PLL Loop Analyzer ở trên để check PM ngay khi thay đổi R. Nếu PM < 45°, vòng lặp cần điều chỉnh dù ζ trông ổn.

Khi tăng R để mở rộng bandwidth, kiểm tra fcf_c so với fpf_p. Nếu fc>fp/3f_c > f_p/3, loop bandwidth đang lấn vào vùng pole lọc ripple — PM sẽ giảm, settling xấu đi.

2nd-order formula cho settling time chỉ đúng khi fpfcf_p \gg f_c. Khi fcf_c gần fpf_p, thêm thời gian cho mode ωp\omega_p tắt dần. Cách đơn giản nhất để kiểm tra: chạy transient sim với thông số thực, hoặc đọc PM trực tiếp từ PLL Loop Analyzer.


Tham khảo

  • Razavi, Design of Analog CMOS Integrated Circuits, 2nd ed., Ch. 15 — transient và stability của CP-PLL.
  • Best, Phase-Locked Loops, 6th ed. — lock-in range, settling time analysis.
  • Gardner, Phaselock Techniques, 3rd ed. — phân tích rigorous loop dynamics.