PLL Loop Dynamics: Stability và Bandwidth — Chọn thế nào cho đúng?
Hiểu transfer function của PLL, phase margin, và cách chọn loop bandwidth để cân bằng giữa jitter và tracking speed — kèm ví dụ số cụ thể.
Không spam. Chỉ bài kỹ thuật AMS đáng đọc — gửi qua email khi có bài mới.
Có một câu hỏi mà hầu hết sinh viên không được hỏi trong trường, nhưng sẽ được hỏi khi đi làm: “Loop bandwidth chọn bao nhiêu, và tại sao?”
Nếu câu trả lời là “em lấy rule of thumb ” — đó là điểm xuất phát, không phải câu trả lời. Engineer thực tế cần biết con số đó đến từ đâu, trade-off là gì, và khi nào rule of thumb đó sai.
Bài này đi từ câu hỏi đó: tại sao PLL cần loop filter, phase margin là gì và bao nhiêu thì đủ, bandwidth nên chọn thế nào — và một vài điều textbook hay bỏ qua.
Mục lục
- PLL nhìn từ góc độ control loop
- Transfer function của từng khối
- Open-loop gain và phase margin
- Chọn loop bandwidth: trade-off jitter vs. tracking
- Ví dụ thiết kế có số
- Bài học cho engineer
1. PLL nhìn từ góc độ control loop
PLL là một feedback loop — không khác gì op-amp feedback về mặt bản chất. Mục tiêu của nó là kéo phase của VCO bám theo phase của reference.
Ký hiệu thống nhất cho cả bài:
| Tham số | Ký hiệu | Đơn vị |
|---|---|---|
| Phase detector / charge pump gain | A/rad | |
| VCO gain | rad/s/V | |
| Divider ratio | — | |
| Loop filter impedance | Ω |
2. Từng khối làm gì trong vòng lặp?
Trước khi nhân tất cả lại thành open-loop gain, mình cần hiểu từng khối đang làm gì — và tại sao nó quan trọng với stability.
Charge pump + PFD — đơn giản là một gain
PFD nhìn vào phase của reference và phase của feedback, rồi ra lệnh cho charge pump bơm dòng vào hoặc hút dòng ra khỏi loop filter. Lệch bao nhiêu radian → bơm bấy nhiêu ampere. Quan hệ đó chỉ là một hằng số:
Với . Ví dụ thì — khối này không tạo thêm pole hay zero gì cả, chỉ là gain thuần.
Loop filter — đây là nơi mọi thứ phức tạp bắt đầu
Loop filter có nhiệm vụ kép: vừa tích phân dòng CP thành điện áp điều khiển VCO, vừa phải làm vòng lặp ổn định. Cấu trúc phổ biến nhất là R nối tiếp C1, song song với C2 nhỏ hơn để lọc ripple.
Bỏ qua C2 trước để thấy ý tưởng chính: tụ C1 không cho điện áp thay đổi tức thì — nó tích phân dòng CP theo thời gian. Đây chính là integrator (pole tại DC), lý do PLL type-II có thể kéo phase error về zero hoàn toàn mà không cần error dư để duy trì dòng.
Vấn đề: integrator tạo ra −90° phase shift. Khi nhân với pole của VCO (cũng −90°), tổng phase là −180° ở mọi tần số → vòng lặp dao động. Điện trở R giải quyết việc này — nó tạo ra một zero ở tần số , kéo phase lên lại đúng chỗ cần.
Gom lại thành công thức (với ):
VCO — tích phân thêm một lần nữa
VCO nhận điện áp Vtune, output là tần số. Nhưng trong PLL mình quan tâm đến phase, không phải tần số — mà phase là tích phân của tần số theo thời gian:
Cái này là pole thứ hai tại DC. Kết hợp với pole của C1 trong loop filter → PLL type-II có hai integrator, hai pole tại DC, slope −40 dB/dec ở tần số thấp. Không có zero thì vòng lặp chắc chắn dao động.
Divider — chỉ là chia gain
Divider giảm phase gain xuống N lần trong đường feedback. Hệ quả thực tế: noise từ reference bị nhân lên lần ở output — cái này quan trọng khi tính phase noise, sẽ nói ở bài 3.
3. Open-loop gain và phase margin
Open-loop gain
Để phân tích stability, mình “cắt” vòng lặp tại điểm feedback — tưởng tượng bẻ gãy dây từ divider về PFD, bơm tín hiệu test vào một đầu và đo tín hiệu ra ở đầu kia. Tỉ số đó là open-loop gain . Nếu tại tần số mà phase = −180°, vòng lặp dao động.
Nhân tất cả các khối lại (theo đường tín hiệu từ PFD → CP → LF → VCO → Divider):
Thay vào và bỏ qua (pole bổ sung nhỏ) để thấy dạng cơ bản:
Đây là hệ thống type-II — hai integrator, slope −40 dB/decade ở tần số thấp.
Phase margin
Phase margin là khoảng cách từ phase tại unity gain frequency () đến :
Với type-II PLL không có zero thì phase tại là → PM = 0° → dao động. Zero kéo phase lên, tạo ra phase margin dương.
Rule of thumb: PM = 45° là mức tối thiểu chấp nhận được. PM = 60° là target phổ biến — đủ ổn định và settling time không quá dài.
Tại sao PM < 45° nguy hiểm? Vòng lặp vẫn stable về mặt lý thuyết, nhưng step response sẽ có overshoot lớn và ring nhiều lần trước khi settle. Trong thực tế, process/temperature variation có thể đẩy PM xuống âm.
4. Chọn loop bandwidth: trade-off jitter vs. tracking
Loop bandwidth (hay ) là tần số unity gain của open-loop — và là tham số quan trọng nhất bạn cần chọn.
Bandwidth ảnh hưởng đến gì?
Jitter từ VCO bị lọc bởi high-pass function của closed loop. Bandwidth càng rộng → lọc được nhiều VCO noise hơn → jitter VCO ít hơn ở output.
Jitter từ reference bị lọc bởi low-pass function của closed loop. Bandwidth càng hẹp → lọc được nhiều reference noise hơn → jitter từ reference ít hơn ở output.
Hai yêu cầu này mâu thuẫn nhau — đây là trade-off cốt lõi của PLL design.
Để thấy rõ mức độ, lấy ví dụ với PLL 2.4 GHz, N = 48:
- VCO free-running có phase noise −100 dBc/Hz @ 1 MHz offset
- Reference noise −150 dBc/Hz, nhân lên → −116 dBc/Hz @ output
Nếu chọn : out-of-band VCO noise không được lọc → jitter cao. Nếu chọn : reference noise pass qua nhiều hơn → jitter từ reference tăng. Điểm tối ưu nằm ở đâu đó giữa — thường gần chỗ hai đường noise cắt nhau.
Optimal bandwidth
Intuition đơn giản: PLL “chọn” noise source nào ít hơn ở từng vùng tần số. Dưới → theo reference, trên → theo VCO. Vậy nên đặt tại điểm mà noise của hai nguồn bằng nhau — đó là điểm tối ưu.
Về mặt toán: bandwidth tối ưu là tần số mà:
Vế phải có vì reference noise bị nhân lên lần khi đi qua divider. N càng lớn (tần số output càng cao so với reference) → reference noise contribution càng tệ → optimal bandwidth nên đẩy thấp hơn.
Trong thực tế, khi chưa có đủ phase noise data, hay chọn trong khoảng đến — vừa tránh aliasing từ discrete-time effect của CP, vừa đảm bảo loop filter đủ thời gian lọc ripple.
Lock time
Lock time (thời gian để PLL bắt lock từ frequency khác) phụ thuộc vào bandwidth:
Với thì . Bandwidth càng rộng → lock nhanh hơn — nhưng jitter reference sẽ cao hơn.
Hình dung đơn giản: bandwidth rộng giống như mình cập nhật liên tục theo một nguồn bên ngoài — phản ứng nhanh, nhưng nếu nguồn đó có nhiễu thì nhiễu đó đi thẳng vào output. Bandwidth hẹp giống như mình tự quyết định nhiều hơn — ít bị ảnh hưởng bởi nguồn ngoài, nhưng nếu bản thân mình có drift (VCO noise) thì không ai kéo lại kịp.
5. Ví dụ thiết kế có số
Spec
- Reference:
- Output:
- Divider ratio:
- Target loop bandwidth: ()
- Target phase margin: PM ≥ 60°
Thông số khối
- →
Chọn loop filter — 3 bước
Bước 1: Đặt vị trí zero
Zero phải nằm dưới để phase boost kịp tác dụng tại . Rule of thumb thực tế: đặt tại .
Bước 2: Tính C1 từ điều kiện unity gain
Tại , open-loop gain phải bằng 1. Từ công thức :
Hai phần của công thức này có ý nghĩa rõ ràng: phần đầu là gain của vòng lặp nếu không có zero — cần C1 đủ lớn để kéo gain về 1. Phần sau là phase boost factor từ zero — zero càng thấp so với thì factor này càng lớn, C1 cần lớn hơn.
Thay số ():
Làm tròn xuống giá trị chuẩn: (sẽ verify lại trong sim).
Bước 3: Tính R và C2
để lọc ripple — thường chọn :
Pole nằm trên — đúng chỗ, không làm giảm PM đáng kể.
Kết quả
| Tham số | Giá trị |
|---|---|
| 15 pF | |
| 16 kΩ | |
| 1.5 pF | |
| ~665 kHz | |
| (từ ) | ~6.6 MHz |
| (target) | 2 MHz |
| PM (tính toán) | ~58° |
Bài học: là hệ quả trực tiếp của cao (200 MHz/V): nhỏ (15 pF) buộc phải lớn để giữ . Với IC on-chip có hàng trăm MHz/V, pF và kΩ là bình thường. Nếu thấy chỉ vài Ω, hãy kiểm tra hoặc — có thể đang quá lớn.
Check worst-case
Loop bandwidth phụ thuộc — tham số này thay đổi theo Vtune và nhiệt độ. Ở SS corner và nhiệt độ cao, có thể giảm 30–40%.
Nếu giảm 40% → giảm → từ 2 MHz xuống ~1.56 MHz. PM thay đổi không nhiều vì cả zero lẫn pole đều giữ nguyên vị trí tương đối.
Nguy hiểm hơn là khi tăng ở FF corner — bandwidth tăng lên, zero có thể không còn đủ phase boost → PM giảm.
Tool: Verify loop filter của bạn
Nhập thông số PLL và loop filter vào tool bên dưới để xem ngay Bode plot và phase margin. Default values là ví dụ từ section 5.
6. Bài học cho engineer
Chọn đến là điểm xuất phát an toàn. Với , bandwidth 2.5–5 MHz là hợp lý — ví dụ section 5 chọn 2 MHz () để có thêm margin.
Đặt zero tại đến để đảm bảo đủ phase boost. Zero quá gần → phase margin không đủ. Zero quá xa → phase boost đến sớm, ít tác dụng tại .
Simulate trước khi tape-out. Công thức tính , , chỉ là điểm xuất phát — process variation và nonlinearity của charge pump sẽ làm PM thực tế khác 5–10° so với tính toán.
Đừng chỉ check nominal. Chạy corner simulation với ±30%, ±20%. PM < 45° ở bất kỳ corner nào là red flag cần redesign loop filter.
Ba điều textbook hay bỏ qua
① Giá trị R và C1 phụ thuộc vào — không có rule “nhỏ” hay “lớn” cố định
(từ công thức unity-gain), còn . Vì vậy:
- cao (IC với ring oscillator hoặc LC-VCO gain lớn, hàng trăm MHz/V): nhỏ (pF) → lớn (kΩ). Ví dụ trên: , .
- thấp (discrete, TCXO-based, vài MHz/V): lớn (nF–µF) → nhỏ (Ω–kΩ).
Hệ quả thực tế: R lớn không có nghĩa là thiết kế kém — nó chỉ phản ánh và mà bạn đang nhắm tới. Điều quan trọng hơn là đúng chỗ so với .
② không phải hằng số — và đây là nguồn gốc của nhiều bug
LC-VCO thực tế có thay đổi theo Vtune. Ở giữa tuning range, cao nhất. Ở hai đầu (Vtune gần rail), varactor vào chế độ bão hòa và giảm 2–3x. Điều này có nghĩa:
- Bandwidth thực tế tại edge của tuning range thấp hơn nominal 30–50%
- Nếu lock point của PLL nằm gần edge, PM và lock time đều bị ảnh hưởng
- PLL hay “mất lock” ở edge không phải vì mạch hỏng, mà vì quá thấp làm bandwidth sụp
Cách xử lý: thiết kế loop filter với (worst case), không phải .
③ Continuous-time model sai khi quá gần
Model mà mình dùng suốt bài này giả định CP bơm dòng liên tục — trên thực tế CP chỉ bơm theo từng pulse mỗi chu kỳ . Khi quá gần , mỗi pulse CP chưa kịp được lọc đã tác động đến Vtune — discrete-time effect xuất hiện, PM thực tế thấp hơn tính toán có khi đến 10–20°.
Rule of thumb chính xác là để tránh vùng này — không phải con số tùy tiện. Nếu ai hỏi tại sao lại /10 chứ không phải /5 hay /20, đây là câu trả lời.
Lỗi hay gặp khi mới thiết kế PLL
| Lỗi | Hệ quả | Cách tránh |
|---|---|---|
| Chọn xong không check | PM thực tế thấp hơn tính toán | Luôn verify |
| Dùng để tính loop filter | PLL mất lock ở edge tuning range | Dùng để thiết kế |
| Chỉ sim ở nominal, không chạy corner | PM đẹp trên giấy, tệ trên silicon | Corner với ±30%, ±20% |
| Đặt quá gần (> ) | Phase boost không đủ, PM thấp | đến |
| Bỏ qua khi tính PM | ảnh hưởng PM nếu lớn | Dùng công thức exact khi |
Tổng kết
- PLL type-II có hai pole tại DC → cần zero trong loop filter để ổn định
- Phase margin mục tiêu: 60°, tối thiểu 45°
- Loop bandwidth điều khiển trade-off: bandwidth rộng → lọc VCO noise tốt, lock nhanh, nhưng reference jitter cao hơn
- Bắt đầu với –, zero tại –, rồi verify bằng simulation
Tham khảo
-
Razavi, Design of Analog CMOS Integrated Circuits, 2nd ed., Chương 15 — phân tích PLL từ góc độ circuit, transfer function và noise được trình bày rõ ràng với đầy đủ derivation. Đây là reference chính cho bài này.
-
Best, Phase-Locked Loops: Design, Simulation, and Applications, 6th ed. — tập trung vào lock time, acquisition, và loop filter design với nhiều ví dụ số thực tế. Tốt để đọc sau khi nắm được phần theory.
-
Gardner, Phaselock Techniques, 3rd ed. — classic reference về PLL theory, đặc biệt phần noise analysis và acquisition. Nặng về toán nhưng rất chặt chẽ.