Kickback: khi comparator 'đá' ngược lại đầu vào — và khi nào bạn thật sự phải lo
Kickback là gì, tính nó ra con số thế nào, và quan trọng hơn: ngưỡng Cs nào thì nó mới thành vấn đề. Lấy chính con SAR ADC ở bài op-amp làm mốc — hoá ra nó an toàn, nhưng an toàn vì một lý do khác.
Không spam. Chỉ bài kỹ thuật AMS đáng đọc — gửi qua email khi có bài mới.
Bạn sim một comparator, output chuyển đúng, mọi thứ có vẻ ổn. Rồi bạn phóng to waveform ở input — và thấy một cái bump nhỏ xuất hiện đúng khoảnh khắc output switching.
Đó là kickback. Và câu hỏi đúng không phải “có kickback không” — luôn luôn có. Câu hỏi đúng là “bao nhiêu thì mới đáng lo”, vì phần lớn thời gian câu trả lời là không đáng, và bạn không nên tiêu ba tuần chống một thứ đang ở mức 0.3 LSB.
Bài này đi tới đúng con số đó: một ngưỡng để phân định. Rồi lấy chính con SAR ADC ở bài two-stage Miller op-amp làm ca thử.
Mục lục
- Cơ chế — điện tích đi đường nào
- thật sự là bao nhiêu (chỗ hầu hết tính sai)
- Ngưỡng: khi nào kickback vượt 0.5 LSB
- Ca thử: con ADC ở bài op-amp
- Khi nào thì fail — settling và corner
- Ba cách chữa, xếp theo mức triệt để
- Bài học
1. Cơ chế — điện tích đi đường nào
Comparator tốc độ cao gần như luôn là latch (StrongARM và họ hàng). Ở phase evaluate, các transistor bên trong bị lật từ off sang on trong vài trăm picosecond. Drain của transistor đầu vào nhảy một phát rất mạnh — điển hình từ xuống ~0.3 V.
Gate của chính là node tín hiệu bạn đang cố đọc. Giữa drain và gate có . Vậy là cú nhảy của drain bơm điện tích ngược ra node input:
Node đó nhìn xuống sampling cap , nên điện áp bị đá lên:
Công thức chỉ có ba đại lượng, và đó là toàn bộ vật lý của bài này. Hai đòn bẩy hiện ra ngay: giảm hoặc tăng .
Chú ý hướng nhân quả: kickback không tỉ lệ với tốc độ latch. Nó tỉ lệ với biên độ và tỉ số cap. Latch nhanh hơn chỉ làm cú đá dốc hơn, không làm nó lớn hơn. Đây là chỗ trực giác hay đánh lừa.
2. thật sự là bao nhiêu — chỗ hầu hết tính sai
Cả bài treo trên , nên phải làm cho ra nhẽ. Lấy transistor đầu vào latch NMOS W/L = 4 µm / 0.18 µm trong 180nm.
Tính tay. ở vùng saturation chỉ còn phần overlap (channel không chạm drain):
Đọc từ sim. Đặt .op ở giữa phase evaluate rồi đọc cgd của , bạn sẽ thấy con số lớn gấp mấy lần — cỡ 2 fF là điển hình.
Gấp 4 lần. Đó không phải sai số, mà là hai đại lượng khác nhau:
| Tính tay cho ra | Sim cho ra | |
|---|---|---|
| Thành phần | chỉ overlap () | overlap + fringing + phần channel charge |
| Điều kiện | saturation, tĩnh | đang switching, transistor đi xuyên qua triode |
| Dùng khi | ước lượng bậc độ lớn | tính kickback thật |
Lúc latch fire, không ngồi yên ở saturation — nó quét qua cả triode, nơi channel nối thông drain và gate nhìn thấy phần lớn chứ không chỉ overlap. Với W/L = 4/0.18: fF, nên một hiệu dụng cỡ 2 fF nằm hoàn toàn hợp lý giữa hai cực 0.52 và 6.2.
Quy tắc: tính tay để biết mình đang ở bậc nào, nhưng con số đi vào tính kickback phải lấy từ
.op. Sai ở đây là sai 4×, và 4× đủ để lật kết luận từ “pass” sang “fail”.
Phần còn lại của bài dùng fF và V.
3. Ngưỡng: khi nào kickback vượt 0.5 LSB
Với ADC 10-bit, V:
Đặt LSB rồi giải ngược ra :
Đó là con số cần nhớ. Với latch này, trong process này: trên ~3.4 pF thì kickback tự động dưới nửa LSB, không cần làm gì thêm.
| Tính theo LSB | |||
|---|---|---|---|
| 100 fF | 29.4 mV | 16.7 LSB | ❌ vô vọng |
| 500 fF | 5.98 mV | 3.40 LSB | ❌ fail |
| 1 pF | 2.99 mV | 1.70 LSB | ❌ fail |
| 3.4 pF | 0.88 mV | 0.50 LSB | ⚠️ đúng biên |
| 5 pF | 0.60 mV | 0.34 LSB | ✅ pass |
Dải màu giữa hai đường trong hình là khoảng bất định của (0.52 → 2 fF) ở mục 2. Nếu bạn dùng con tính tay 0.52 fF, ngưỡng tụt xuống 0.88 pF — và bạn sẽ tự tin cho qua một thiết kế 1 pF mà thực tế nó fail 1.7 LSB. Đó chính là cái giá của việc không đọc .op.
4. Ca thử: con ADC ở bài op-amp
Bài two-stage Miller op-amp thiết kế một buffer cho SAR ADC 10-bit, MS/s, và chốt pF. Áp vào:
Pass, và pass thoải mái. Nhưng đây mới là phần đáng chú ý: pF ở bài đó không hề được chọn để chống kickback — và cũng không phải chọn vì kT/C noise. Bài kT/C tính ra: ở 10-bit/1.8 V, kT/C chỉ đòi 16 fF, kém 5 pF hơn ba trăm lần. Thứ thật sự ghim ở 5 pF là CDAC: 1024 unit cap × ~4.9 fF, chặn dưới bởi matching và kích thước chế tạo tối thiểu. Kickback được giải quyết như một tác dụng phụ miễn phí của một ràng buộc còn chẳng liên quan gì tới comparator.
Chuyện này xảy ra thường xuyên hơn người ta nghĩ, và nó cắt theo cả hai chiều:
- Chiều tốt: rất nhiều thiết kế không bao giờ gặp vấn đề kickback, vì đã bị ép lớn bởi một ràng buộc khác.
- Chiều xấu: khi bạn tối ưu nhỏ đi — để tiết kiệm diện tích DAC array, để tăng tốc acquisition, để giảm công suất lái — bạn đang âm thầm đi về phía cái ngưỡng 3.4 pF mà không ai nhắc.
Khi ai đó đề xuất “giảm CDAC từ 5 pF xuống 1 pF cho đỡ tốn diện tích”, câu trả lời không phải “được/không được” — mà là “vậy kickback từ 0.34 LSB lên 1.7 LSB, ai chịu trách nhiệm chỗ đó?“
5. Khi nào thì fail — settling và corner
Biên độ mới là nửa câu chuyện — nhưng nửa còn lại không phải cái mà trực giác mách.
Settling
Phải nói rõ một chuyện hay bị bỏ qua: trong pha bit-trial, sampling switch đã mở. Top plate của CDAC là một node thả nổi — không có đường DC nào ra khỏi nó. Nên điện tích kickback bơm lên đó không “tan” theo được: nó chỉ được trả lại khi latch reset và drain quay về , còn phần dư thì ở nguyên đó cho lần so sánh kế tiếp. Cú đá không settle. Điều đó làm biên độ ở mục 3 quan trọng hơn, chứ không nhẹ đi.
Thứ thật sự phải settle trong mỗi bit-trial là bản thân cái DAC: mỗi lần SAR lật một bottom plate giữa GND và , cả mảng tụ phải nạp lại qua điện trở của switch tham chiếu:
Chú ý 7.6τ chứ không phải 5τ. 5τ để lại sai số 0.67% ≈ 7 LSB — không đủ cho 10-bit. Đây cùng một chuẩn settling đã dùng ở bài op-amp, nên hai bài dùng chung một thước.
Với (switch tham chiếu của CDAC):
| Thiết kế | Thời gian có | |||
|---|---|---|---|---|
| 1 MS/s, = 5 pF | 2.5 ns | 19 ns | ~70 ns/bit | ✅ thừa 3.7× |
| 100 MS/s, = 500 fF | 250 ps | 1.9 ns | ~0.6 ns/bit | ❌ thiếu 3× |
Ở tốc độ thấp, lớn cho kickback nhỏ và vẫn thừa thời gian cho DAC settle — được cả hai. Ở tốc độ cao, hai yêu cầu đánh nhau trực diện: lớn cứu biên độ kickback nhưng giết settling của DAC. Đó là lý do xung đột này là bài toán của high-speed ADC chứ hiếm khi là của ADC 1 MS/s.
Corner
Biên độ kickback gần như không đổi theo PVT. chủ yếu là hình học (overlap, fringing) — thay đổi dưới ~10% qua corner, trong khi hay có thể đổi vài chục phần trăm. Ai quen lo corner cho AC thường ngạc nhiên chỗ này.
Thứ thật sự trôi theo corner là settling của DAC, qua . Và ở đây trực giác hay sai chiều:
| Corner | ||||
|---|---|---|---|---|
| TT / 27°C | — | 0.5 V | 1.3 V | 1.00× |
| SS / −40°C | ↑ ~46% (lạnh) | ↑ ~0.6 V | 1.2 V | ~0.87× |
| SS / 125°C | ↓ ~35% (nóng) | ↓ ~0.35 V | 1.45 V | ~1.6× |
Worst case là SS/nóng, không phải SS/lạnh. Vì với switch lái ở V thì overdrive rất lớn, nên phần dâng lúc lạnh gần như không ăn thua — trong khi mobility lại tăng khi lạnh (). Kết quả: corner lạnh làm switch nhanh hơn. Chỉ khi nóng, mobility sụt mạnh, mới xấu đi ~1.6× và settling từ 19 ns lên ~30 ns.
(Các hệ số nhiệt ở trên là ước lượng điển hình cho 180nm — dùng để biết chiều và bậc, còn con số cuối vẫn phải lấy từ sim corner.)
6. Ba cách chữa, xếp theo mức triệt để
1. Reset / pre-charge phase — trước khi evaluate, kéo các node nội bộ của latch về cùng một mức. Cú nhảy ở khoảnh khắc nhạy cảm nhỏ đi. Rẻ, gần như latch nào cũng đã có sẵn phase reset. Nhưng chỉ giảm được một phần biên độ — không đổi bậc.
2. Neutralization (dummy cap chéo) — thêm một cặp cap nối chéo, bơm điện tích ngược pha vào node input để triệt cú đá. Về nguyên tắc triệt được bậc một; thực tế bị giới hạn bởi matching giữa cap dummy và thật, mà thật lại phi tuyến và thay đổi trong lúc switching. Kỳ vọng thực tế: giảm 3–5×, không phải triệt tiêu.
3. Cô lập bằng preamp — đặt một tầng khuếch đại giữa CDAC và latch. Đây là cách duy nhất đổi bậc của vấn đề: cú đá bị chặn bởi độ cách ly ngược của preamp, nên cái tới được nhỏ đi cỡ vài lần gain. Giá phải trả là hẳn một block — thêm dòng, thêm noise và offset của chính nó, thêm một tầng trễ trong vòng SAR.
Đừng lẫn tầng này với con op-amp ở bài trước. của nó ( ps) nuốt được kickback ở pha acquisition — lúc switch còn đóng, và cú đá là do chính việc đóng switch gây ra. Sang pha bit-trial thì switch mở, buffer bị ngắt hoàn toàn khỏi CDAC, và nó không giúp gì cho kickback của comparator. Tầng cách ly phải nằm sau CDAC, không phải trước.
Và đòn bẩy thứ tư, thường bị bỏ quên vì nó không nằm trong comparator: tăng . Rẻ về mặt thiết kế nhưng đắt về diện tích, công suất lái và băng thông acquisition — đó chính là cái giá mà bài op-amp đã trả cho tải CDAC 5 pF, không phải cho kickback.
7. Bài học
Đừng hỏi “có kickback không” — hỏi “ngưỡng ở đâu”. Một phép chia cho ra pF là đủ để biết mình nằm bên nào của vạch, trước khi tiêu bất kỳ giờ nào cho việc chống nó.
phải đọc từ .op, không tính tay. Overlap cho 0.52 fF, sự thật lúc switching là ~2 fF. Sai 4× ở đây lật thẳng kết luận.
Kickback nhỏ thường là do may. Con ADC ở bài op-amp pass ở 0.34 LSB nhờ pF — con số bị matching của CDAC ghim, không phải do ai lo kickback, và cũng không phải do kT/C (bài kT/C tính ra chỉ 16 fF). Ngày nào có người tối ưu nhỏ lại, cái may đó bốc hơi mà không ai báo.
Corner của kickback đi ngược trực giác. Biên độ gần như bất biến PVT; thứ trôi là settling của DAC (qua ), và worst case là nóng chứ không phải lạnh — vì mobility tăng khi lạnh.
Ở 1 MS/s hầu như không phải lo; ở 100 MS/s thì lớn cứu biên độ kickback nhưng giết settling của DAC. Xung đột đó là bài toán của high-speed, và ở đó nó không có lời giải miễn phí.
Tham khảo
- B. Razavi, Principles of Data Conversion System Design, Ch. 6 — sampling, charge injection, kickback trong ADC.
- B. Razavi, “The StrongARM Latch,” IEEE Solid-State Circuits Magazine, 2015 — mổ xẻ đúng cái latch gây ra kickback ở bài này.
- P. Nuzzo et al., “Noise Analysis of Regenerative Comparators…”, IEEE TCAS-I, 2008 — xử lý định lượng kickback và noise của comparator.
- Bài liên quan: Two-Stage Miller Op-Amp bằng gm/ID — buffer ở pha acquisition; kT/C và sampling cap — vì sao = 5 pF thật ra đến từ CDAC.