← Về trang chủ
Cơ bản IC 31 tháng 7, 2026 ⟳ 12 phút đọc

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.

kickbackcomparatorSAR ADCsample-and-holdmixed-signal180nmcorner
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ạ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 CsC_s để 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

  1. Cơ chế — điện tích đi đường nào
  2. CgdC_{gd} thật sự là bao nhiêu (chỗ hầu hết tính sai)
  3. Ngưỡng: khi nào kickback vượt 0.5 LSB
  4. Ca thử: con ADC ở bài op-amp
  5. Khi nào thì fail — settling và corner
  6. Ba cách chữa, xếp theo mức triệt để
  7. 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 MinM_{in} nhảy một phát rất mạnh — điển hình từ VDDV_{DD} xuống ~0.3 V.

Gate của MinM_{in} chính là node tín hiệu bạn đang cố đọc. Giữa drain và gate có CgdC_{gd}. Vậy là cú nhảy của drain bơm điện tích ngược ra node input:

Đường đi của điện tích kickback: drain nhảy, qua Cgd, rơi lên Cs ΔQ=CgdΔVdrain\Delta Q = C_{gd}\,\Delta V_{drain}

Node đó nhìn xuống sampling cap CsC_s, nên điện áp bị đá lên:

ΔVkick=CgdCgd+CsΔVdrain    CgdCsΔVdrain(CsCgd)\Delta V_{kick} = \frac{C_{gd}}{C_{gd}+C_s}\,\Delta V_{drain} \;\approx\; \frac{C_{gd}}{C_s}\,\Delta V_{drain} \quad (C_s \gg C_{gd})

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 CgdC_{gd} hoặc tăng CsC_s.

Chú ý hướng nhân quả: kickback không tỉ lệ với tốc độ latch. Nó tỉ lệ với biên độ ΔVdrain\Delta V_{drain} 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. CgdC_{gd} thật sự là bao nhiêu — chỗ hầu hết tính sai

Cả bài treo trên CgdC_{gd}, 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. CgdC_{gd} ở vùng saturation chỉ còn phần overlap (channel không chạm drain):

CgdCoxWLov=8.6 fFμm2×4 μm×0.015 μm0.52 fFC_{gd} \approx C_{ox}\,W\,L_{ov} = 8.6\ \frac{\text{fF}}{\mu\text{m}^2} \times 4\ \mu\text{m} \times 0.015\ \mu\text{m} \approx \mathbf{0.52\ fF}

Đọc từ sim. Đặt .op ở giữa phase evaluate rồi đọc cgd của MinM_{in}, 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 raSim cho ra
Thành phầnchỉ overlap (CoxWLovC_{ox}WL_{ov})overlap + fringing + phần channel charge
Điều kiệnsaturation, tĩnhđang switching, transistor đi xuyên qua triode
Dùng khiước lượng bậc độ lớntính kickback thật

Lúc latch fire, MinM_{in} 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 CoxWLC_{ox}WL chứ không chỉ overlap. Với W/L = 4/0.18: CoxWL=8.6×4×0.18=6.2C_{ox}WL = 8.6 \times 4 \times 0.18 = 6.2 fF, nên một CgdC_{gd} 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 CgdC_{gd} để 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 Cgd=2C_{gd} = 2 fF và ΔVdrain=1.5\Delta V_{drain} = 1.5 V.


3. Ngưỡng: khi nào kickback vượt 0.5 LSB

Với ADC 10-bit, Vref=1.8V_{ref} = 1.8 V:

1 LSB=1.8210=1.76 mV0.5 LSB=0.88 mV1\ \text{LSB} = \frac{1.8}{2^{10}} = 1.76\ \text{mV} \quad\Rightarrow\quad 0.5\ \text{LSB} = 0.88\ \text{mV}

Đặt ΔVkick=0.5\Delta V_{kick} = 0.5 LSB rồi giải ngược ra CsC_s:

Cs    Cgd(ΔVdrain0.5 LSB1)=2 fF(1.5 V0.88 mV1)3.4 pFC_s \;\ge\; C_{gd}\left(\frac{\Delta V_{drain}}{0.5\ \text{LSB}} - 1\right) = 2\ \text{fF}\left(\frac{1.5\ \text{V}}{0.88\ \text{mV}} - 1\right) \approx \mathbf{3.4\ pF}

Đó là con số cần nhớ. Với latch này, trong process này: CsC_s trên ~3.4 pF thì kickback tự động dưới nửa LSB, không cần làm gì thêm.

Kickback so với ngưỡng 0.5 LSB theo sampling cap
CsC_sΔVkick\Delta V_{kick}Tính theo LSB
100 fF29.4 mV16.7 LSB❌ vô vọng
500 fF5.98 mV3.40 LSB❌ fail
1 pF2.99 mV1.70 LSB❌ fail
3.4 pF0.88 mV0.50 LSB⚠️ đúng biên
5 pF0.60 mV0.34 LSB✅ pass

Dải màu giữa hai đường trong hình là khoảng bất định của CgdC_{gd} (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, fs=1f_s = 1 MS/s, và chốt Cs=5C_s = 5 pF. Áp vào:

ΔVkick=2 fF2 fF+5 pF×1.5 V=0.60 mV=0.34 LSB\Delta V_{kick} = \frac{2\ \text{fF}}{2\ \text{fF} + 5\ \text{pF}} \times 1.5\ \text{V} = 0.60\ \text{mV} = \mathbf{0.34\ LSB}

Pass, và pass thoải mái. Nhưng đây mới là phần đáng chú ý: Cs=5C_s = 5 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 CsC_s ở 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ì CsC_s đã bị ép lớn bởi một ràng buộc khác.
  • Chiều xấu: khi bạn tối ưu CsC_s 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 RswCsR_{sw}C_s được: nó chỉ được trả lại khi latch reset và drain quay về VDDV_{DD}, 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à VrefV_{ref}, cả mảng tụ phải nạp lại qua điện trở của switch tham chiếu:

τ=RswCs,tsettle=τln ⁣(2N+1)=7.6τ  (N=10)\tau = R_{sw}\,C_s, \qquad t_{settle} = \tau\ln\!\left(2^{N+1}\right) = 7.6\,\tau \ \ (N=10)

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 Rsw500 ΩR_{sw} \approx 500\ \Omega (switch tham chiếu của CDAC):

Thiết kếτ\tautsettlet_{settle}Thời gian có
1 MS/s, CsC_s = 5 pF2.5 ns19 ns~70 ns/bit✅ thừa 3.7×
100 MS/s, CsC_s = 500 fF250 ps1.9 ns~0.6 ns/bit❌ thiếu 3×

Ở tốc độ thấp, CsC_s lớn cho kickback nhỏ 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: CsC_s 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. CgdC_{gd} chủ yếu là hình học (overlap, fringing) — thay đổi dưới ~10% qua corner, trong khi gmg_m hay IDI_D 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 RswR_{sw}. Và ở đây trực giác hay sai chiều:

Cornerμn\mu_nVthV_{th}VgsVthV_{gs}-V_{th}RswR_{sw}
TT / 27°C0.5 V1.3 V1.00×
SS / −40°C↑ ~46% (lạnh)↑ ~0.6 V1.2 V~0.87×
SS / 125°C↓ ~35% (nóng)↓ ~0.35 V1.45 V~1.6×

Worst case là SS/nóng, không phải SS/lạnh. Vì với switch lái ở Vgs=1.8V_{gs} = 1.8 V thì overdrive rất lớn, nên phần VthV_{th} dâng lúc lạnh gần như không ăn thua — trong khi mobility lại tăng khi lạnh (μT1.5\mu \propto T^{-1.5}). Kết quả: corner lạnh làm switch nhanh hơn. Chỉ khi nóng, mobility sụt mạnh, RswR_{sw} 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ềubậ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 ΔVdrain\Delta V_{drain} ở 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à CgdC_{gd} thật, mà CgdC_{gd} 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 CsC_s 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. Rout50 ΩR_{out}\sim 50\ \Omega của nó (RoutCs250R_{out}C_s \approx 250 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 CsC_s. 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 Cs3.4C_s \gtrsim 3.4 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ó.

CgdC_{gd} 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ờ Cs=5C_s = 5 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 CsC_s 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 RswR_{sw}), 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ì CsC_s 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 CsC_s = 5 pF thật ra đến từ CDAC.