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

kT/C: câu trả lời mặc định cho 'vì sao cap sampling to' — và vì sao nó thường sai

kT/C là thứ ai cũng nhắc khi bị hỏi vì sao Cs lớn. Bài này tính ngược ra con số thật: ở 10-bit, kT/C chỉ đòi 16 fF. Vậy 5 pF ở con SAR ADC hai bài trước từ đâu ra — và thứ gì mới thực sự ồn trong đó?

noisekT/CsamplingSAR ADCswitched-capSNR180nm
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.

Trong một buổi review, ai đó chỉ vào con sampling cap 5 pF và hỏi “sao để to thế?”. Chín trên mười lần, câu trả lời bật ra ngay không cần nghĩ: “kT/C noise”. Cả phòng gật gù, qua slide tiếp theo.

Câu đó tiện ở chỗ nó có sẵn công thức — nói xong là khỏi phải tính. Nhưng để ý mà xem, gần như chẳng ai ngồi ra con số thật. Người ta viện kT/C, chứ ít khi tính nó. Và mỗi lần mình chịu khó bấm máy, kT/C hoá ra hiếm khi là thứ đang ép cái cap to lên.

Mình nói chắc vậy vì mình từng dính đúng cái bẫy đó — ngay trên blog này. Bài op-amp khai thẳng Cs=5C_s = 5 pF “cứng”, chẳng dẫn từ đâu. Bài kickback thì mình gán luôn 5 pF đó cho kT/C, rồi lấy nó chống cả một kết luận. Hai bài, một con số, mà chưa bài nào mở máy tính ra.

Giờ thì bấm máy lên: ở 10-bit, kT/C chỉ đòi cỡ 16 fF — nhỏ hơn 5 pF hơn ba trăm lần. Vậy 5 pF thật ra từ đâu chui ra, và thứ gì mới đang thực sự ồn trong con ADC đó?


Mục lục

  1. kT/C từ đâu ra — và vì sao R biến mất
  2. Hai quy tắc phải nhớ: noise bandwidth và cách cộng noise
  3. Tính ngược: 10-bit thì kT/C đòi bao nhiêu?
  4. Vậy 5 pF từ đâu ra?
  5. kT/C bắt đầu cắn từ bit thứ mấy
  6. Thủ phạm thật: con buffer của chính bạn
  7. Corner: nhiệt độ đẩy kT/C đi đâu
  8. Bài học

1. kT/C từ đâu ra — và vì sao R biến mất

Mạch sample cơ bản chỉ có hai thứ: một switch (điện trở RswR_{sw} khi đóng) và một tụ CsC_s.

Mạch sample và mạch tương đương noise của switch

Điện trở nào cũng phát thermal noise, mật độ phổ:

vR2(f)=4kTRsw[V2/Hz]\overline{v_R^2}(f) = 4kTR_{sw} \quad [\text{V}^2/\text{Hz}]

Noise này đi qua đúng cái RC lowpass mà tín hiệu đi qua, băng thông f3dB=1/(2πRswCs)f_{3dB} = 1/(2\pi R_{sw}C_s). Tích phân toàn dải, đổi biến x=f/f3dBx = f/f_{3dB}:

vn2=04kTRsw1+(f/f3dB)2df=4kTRswf3dB0dx1+x2= arctan() = π/2\overline{v_{n}^2} = \int_0^\infty \frac{4kTR_{sw}}{1+(f/f_{3dB})^2}\,df = 4kTR_{sw}\,f_{3dB}\underbrace{\int_0^\infty\frac{dx}{1+x^2}}_{=\ \arctan(\infty)\ =\ \pi/2}

Cái tích phân arctan đó ra đúng π/2\pi/2. Nên đại lượng vừa xuất hiện — π2f3dB\frac{\pi}{2}f_{3dB} — chính là noise bandwidth BWnBW_n: băng thông của một filter brick-wall lý tưởng cho ra cùng lượng noise với cái RC thật. (Mục 2 nói kỹ hơn, vì đây là chỗ rất hay bị làm sai.)

Giờ thay f3dBf_{3dB} vào và nhìn chuyện gì xảy ra:

vn2=4kTRswπ212πRswCs=4kTRsw4RswCs=kTCs\overline{v_n^2} = 4kTR_{sw}\cdot\frac{\pi}{2}\cdot\frac{1}{2\pi R_{sw}C_s} = \frac{4kT\cancel{R_{sw}}}{4\cancel{R_{sw}}C_s} = \boxed{\frac{kT}{C_s}}

RswR_{sw} triệt tiêu. Đây là điểm phản trực giác đắt nhất của cả chủ đề.

(Để ý vế trái là vn2\overline{v_n^2} — đơn vị V². Nên kT/CkT/C = joule/farad cũng ra V², khớp thứ nguyên. Muốn con số rms thì căn lên: kT/Cs\sqrt{kT/C_s}.)

Thấy nó khử nhau

Nói “chúng khử nhau” thì dễ, nhìn thấy mới tin. Giữ nguyên Cs=5C_s = 5 pF, đổi mỗi RswR_{sw} ba bậc độ lớn:

RswR_{sw}Mật độ 4kTR\sqrt{4kTR}BWnBW_nrms == mật độ ×BWn\times\sqrt{BW_n}
50 Ω0.91 nV/√Hz1000 MHz28.8 µV
500 Ω2.88 nV/√Hz100 MHz28.8 µV
5 kΩ9.10 nV/√Hz10 MHz28.8 µV

Switch to gấp 10 lần thì mật độ noise tụt 10\sqrt{10} lần, nhưng băng thông phình đúng 10 lần — nhân lại ra y hệt. Ba thiết kế khác nhau hoàn toàn về switch, cùng một con noise.

Mật độ phổ và noise tích luỹ với ba giá trị Rsw — cùng một kT/C

Panel phải là chỗ đáng nhìn nhất: ba đường leo lên theo ba nhịp hoàn toàn khác nhau, nhưng cùng bão hoà tại 28.8 µV. Switch 5 kΩ gom gần hết noise trước 100 MHz; switch 50 Ω còn tiếp tục gom tới tận 10 GHz — và về đích ở đúng cùng một chỗ.

RswR_{sw} không ảnh hưởng tới noise được lấy mẫu. Bạn không thể chữa kT/C bằng cách vặn switch — chỉ có CsC_s mới đổi được nó.

Hệ quả thực tế: khi ai đó bảo “tăng W của switch cho đỡ noise”, đó là câu sai. Tăng W giúp settling (τ nhỏ đi) và giúp linearity, không giúp noise sampling. Ngược lại nó còn làm charge injection và kickback tệ đi.

Còn cái tên “kT/C”: để ý nó không có RR, không có băng thông, không có gì thuộc về thiết kế của bạn ngoài một con tụ. Đó là lý do nó dễ bị viện dẫn — công thức quá gọn để phải nghi ngờ.


2. Hai quy tắc phải nhớ

Trước khi vào số, hai thứ mà bài toán noise nào cũng cần và rất hay bị làm sai. Cái thứ nhất vừa xuất hiện ở mục 1, giờ nói cho hết.

Noise bandwidth ≠ băng thông −3 dB

BWn=π2f3dB1.57f3dBBW_n = \frac{\pi}{2}\,f_{3dB} \approx 1.57\,f_{3dB}

Vì sao rộng hơn: bộ lọc bậc một không cắt dựng đứng ở f3dBf_{3dB} — nó thoải xuống 20 dB/dec, và cái đuôi đó vẫn lọt noise qua. Tích phân toàn bộ phần đuôi ấy cộng thêm đúng 57% công suất.

Chỗ bẫy là 57% đó là công suất, không phải điện áp. Nếu bạn tiện tay lấy f3dBf_{3dB} thay cho BWnBW_n, con số rms bạn ra bị thiếu 1.57=1.25\sqrt{1.57} = 1.25 lần — tức thấp hơn thực tế 20%. Đủ để một noise budget “vừa đủ pass” trên giấy hoá ra fail trên silicon.

Hệ số này chỉ lớn với bậc một. Filter càng dốc thì càng giống brick-wall: bậc hai Butterworth là 1.11, bậc ba 1.05.

Noise cộng theo công suất, không cộng theo biên độ

Hai nguồn noise không tương quan (thermal của switch và thermal của op-amp chẳng hạn):

σtot=σ12+σ22\sigma_{tot} = \sqrt{\sigma_1^2 + \sigma_2^2}

Điều này có một hệ quả mà mình thấy nhiều người bỏ lỡ: nguồn nhỏ gần như không tính. Một nguồn bằng 1/3 nguồn kia chỉ làm tổng tăng 5%. Một nguồn bằng 1/5 chỉ làm tăng 2%.

Đừng tối ưu nguồn noise nhỏ. Nếu σ2<σ1/3\sigma_2 < \sigma_1/3, bạn có bóp nó về 0 cũng gần như không thấy gì trên tổng. Tìm nguồn to nhất trước — đây chính là chỗ mà phần sau của bài sẽ dùng để lật lại chuyện kT/C.

(Còn noise tương quan — cùng một nguồn đi hai đường rồi gặp lại — thì cộng theo biên độ σ1+σ2\sigma_1+\sigma_2. Trường hợp này hiếm hơn nhưng khi gặp thì đắt: hai nguồn bằng nhau cho tổng gấp đôi thay vì gấp 1.41.)


3. Tính ngược: 10-bit thì kT/C đòi bao nhiêu?

Giờ mới là phần chính. Thay vì hỏi “kT/C ở 5 pF là bao nhiêu”, hỏi ngược: muốn kT/C không làm hỏng 10-bit thì CsC_s tối thiểu bao nhiêu?

Mốc so sánh tự nhiên là quantization noise — thứ noise mà bản thân việc lượng tử hoá sinh ra, không liên quan gì đến mạch. Khi ADC làm tròn một giá trị analog về mức gần nhất, sai số rơi đâu đó trong khoảng ±LSB/2\pm\text{LSB}/2 và gần như phân bố đều. Phương sai của một phân bố đều rộng LSB\text{LSB}LSB2/12\text{LSB}^2/12 — từ đó ra cái 12\sqrt{12} mà ai cũng thấy nhưng ít người nhớ nó ở đâu ra:

LSB=1.8210=1.758 mV,σq=LSB12=507 μV\text{LSB} = \frac{1.8}{2^{10}} = 1.758\ \text{mV}, \qquad \sigma_q = \frac{\text{LSB}}{\sqrt{12}} = 507\ \mu\text{V}

Con ADC này đã tự mang sẵn 507 µV noise mà không cần ai giúp. Đó là sàn — mọi noise khác chỉ có nghĩa khi so với nó. Thêm một nguồn noise nhỏ hơn 507 µV nhiều lần thì về bản chất là không thêm gì cả.

Đặt điều kiện rất rộng rãi: cho phép kT/C bằng hẳn σq\sigma_q (tức chấp nhận mất 3 dB SNR, một mức không ai chịu trong thực tế):

Cs,min=kTσq2=4.14×1021(507×106)2=1.6×1014 F=16 fFC_{s,min} = \frac{kT}{\sigma_q^2} = \frac{4.14\times10^{-21}}{(507\times10^{-6})^2} = 1.6\times10^{-14}\ \text{F} = \mathbf{16\ fF}

16 femto-farad — không phải 5 pico.

Kể cả siết chặt hơn nhiều — bắt kT/C phải nhỏ hơn σq\sigma_q ba lần (chỉ ăn 0.5 dB SNR) — thì CsC_s cũng chỉ cần 9×16=1459\times16 = 145 fF. Vẫn kém 5 pF hơn ba mươi lần.

Và đây là kT/C thật sự ở 5 pF:

CsC_skT/C\sqrt{kT/C}Tính theo LSBSo với σq\sigma_q
100 fF204 µV0.116 LSB0.40×
500 fF91 µV0.052 LSB0.18×
1 pF64 µV0.037 LSB0.13×
5 pF28.8 µV0.016 LSB0.057×
10 pF20.4 µV0.012 LSB0.040×

Ở 5 pF, kT/C là 1/17 của quantization noise. Theo đúng quy tắc “đừng tối ưu nguồn nhỏ” ở mục 2, nó đóng góp vào tổng noise đúng 0.16% — về mặt thực tế là không có mặt.

Ở 10-bit, kT/C không hề ràng buộc CsC_s. Câu “chọn 5 pF vì kT/C” sai, mà sai xa: cái tụ đang to hơn 311 lần so với mức kT/C thật sự cần (5 pF so với 16.1 fF). Chẳng ai để dư gấp ba trăm lần chỉ vì một con noise — chắc chắn có thứ khác đang ép nó to lên.


4. Vậy 5 pF từ đâu ra?

Nếu không phải kT/C thì cái gì đẩy CsC_s lên 5 pF? Với SAR ADC, câu trả lời nằm ở chỗ CsC_s không phải một cái tụ — nó là cả cái CDAC.

SAR 10-bit dùng charge-redistribution DAC gồm mảng tụ nhị phân: 512Cu,256Cu,,2Cu,Cu512C_u, 256C_u, \dots, 2C_u, C_u cộng một tụ dummy CuC_u. Tổng cộng đúng 1024 đơn vị. Cái mảng đó chính là sampling cap.

Nên CsC_s không phải do bạn chọn tự do. Nó là:

Cs=2NCuC_s = 2^N \cdot C_u

và câu hỏi thật sự là CuC_u nhỏ nhất bằng bao nhiêu. Hai thứ chặn dưới:

  • Matching. Sai số của CuC_u quyết định DNL/INL của ADC. Với tụ MIM/MOM, σ(ΔC)/C1/area\sigma(\Delta C)/C \propto 1/\sqrt{\text{area}} — tụ nhỏ thì mismatch lớn. Muốn 10-bit không có missing code, CuC_u phải đủ to.
  • Kích thước chế tạo tối thiểu. Dưới vài fF thì fringing và ký sinh của dây nối lấn át chính cái tụ, và giá trị thực không còn dự đoán được.

Cả hai đẩy CuC_u về khoảng vài fF. Và bây giờ:

5 pF1024=4.88 fF\frac{5\ \text{pF}}{1024} = 4.88\ \text{fF}

Chia ngược, 4.88 fF rơi đúng vào vùng sàn của CuC_u mà matching (σ(Cu)/Cu<0.52%\sigma(C_u)/C_u < 0.52\%) và kích thước chế tạo tối thiểu vừa đặt ở trên. Chuỗi nhân quả vì thế đi một chiều: spec DNL \rightarrow sàn CuC_u \rightarrow Cs=2NCuC_s = 2^N C_u = 5 pF — cả ba mắt xích đều là ràng buộc tuyến tính của DAC, không mắt nào là noise. CsC_s đã bị chốt xong ngay ở bước matching, trước khi kT/C kịp lên tiếng; và vì 5 pF lớn gấp ~300 lần cái 16 fF mà kT/C đòi, yêu cầu noise được thoả một cách thụ động — như hệ quả phụ của quyết định matching, không phải nguyên nhân sinh ra CsC_s.

Diện tích tỉ lệ điện dung: CDAC 5 pF so với 16 fF mà kT/C đòi

Hình vẽ theo diện tích tỉ lệ với điện dung chứ không theo thang log — vì thang log sẽ giấu mất chính cái tỉ số đang cần thấy. Ô vuông lớn là mảng nhị phân 512C/256C/128C… lấp kín; ô xanh nhỏ xíu bên cạnh là toàn bộ những gì kT/C đòi hỏi.

Điều này siết chặt luận điểm của bài kickback. Bài đó tính ΔVkick=(Cgd/Cs)ΔVdrain=0.34\Delta V_{kick} = (C_{gd}/C_s)\,\Delta V_{drain} = 0.34 LSB ở CsC_s = 5 pF — dưới ngưỡng 0.5 LSB, mà ngưỡng đó ứng với Cs3.4C_s \gtrsim 3.4 pF. Con ADC pass kickback đơn giản vì 5 pF > 3.4 pF.

Điểm mấu chốt: cái biên “5 so với 3.4 pF” đó không sinh ra từ bất kỳ đại lượng nào của khâu comparator — không phải CgdC_{gd}, không phải trở kháng nguồn, cũng không phải kT/C. Nó bị ghim bởi DNL của CDAC: σ(Cu)/Cu\sigma(C_u)/C_u phải đủ nhỏ để mảng tụ không mất mã (mục ngay dưới định lượng), một ràng buộc tuyến tính của DAC — trực giao với cả noise lẫn đường tín hiệu vào comparator. Nói cách khác, kickback pass nhờ một con số được định đoạt bởi bài toán matching của DAC, hoàn toàn tình cờ.

Đó là chỗ luận điểm mạnh lên: biên kickback là hệ quả phụ của một ràng buộc khác hệ. Ngày nào có người đổi coding CDAC hoặc thu nhỏ mảng tụ để tiết kiệm diện tích, CsC_s tụt xuống dưới 3.4 pF — và kickback vượt ngưỡng mà không một dòng nào trong netlist comparator thay đổi, nên sim comparator không hề thấy. Bài kickback cảnh báo đúng chuyện đó; giờ nó có tên thủ phạm: matching CDAC.

Còn nếu CDAC không phải binary?

Con “5 pF = 1024 × 4.88 fF” là của riêng binary CDAC, và nó dựa vào matching nhiều hơn vẻ ngoài. DNL tệ nhất của binary rơi vào bước chuyển MSB: σ(DNL)=2N1σ(Cu)/Cu\sigma(\text{DNL}) = \sqrt{2^N-1}\,\sigma(C_u)/C_u — với 10-bit là hệ số 102332\sqrt{1023}\approx 32. Bắt 3σ3\sigma của nó dưới 0.5 LSB (không mất mã, thiết kế cho yield ±3σ\pm3\sigma) thì σ(Cu)/Cu<0.5/(31023)0.52%\sigma(C_u)/C_u < 0.5/(3\sqrt{1023}) \approx 0.52\% — và chính cái đó đẩy CuC_u lên 5 fF. (Bước từ 0.52% ra 5 fF chỉ là đại số: Cu=mật độ×(AC/0.52%)2C_u = \text{mật độ}\times(A_C/0.52\%)^2, với ACA_C và mật độ tụ tra thẳng từ PDK — số đo sẵn trên silicon, không phải một lần chạy simulator. Bài mismatch cắm số cụ thể ra \sim5 fF. Sim chỉ vào sau, ở bước Monte Carlo xác nhận ký sinh và gradient không phá con first-cut này — mismatch là trục thống kê, không phải một PVT corner.)

Đổi sang thermometer thì mỗi bước chỉ bật thêm đúng một unit cap giống hệt — DNL mỗi bước còn σ(Cu)/Cu\sigma(C_u)/C_u, mất luôn hệ số 2N\sqrt{2^N}. Matching lỏng ra 32 lần, CuC_u hết bị ghim ở 5 fF và tụt xuống sàn kích thước tối thiểu (~1 fF), kéo CsC_s từ 5 pF về cỡ 1 pF. ADC thật hay segmented — thermometer cho vài bit cao (giết cái DNL khổng lồ ở MSB, bảo đảm monotonic), binary cho bit thấp cho rẻ — nên CsC_s nằm đâu đó giữa 1 và 5 pF.

Điểm cần giữ: đổi coding chỉ dời chỗ ràng buộc bên trong CDAC — từ matching sang kích thước tối thiểu — chứ không kéo kT/C vào cuộc. Có một sàn cứng đúng cho mọi coding: LSB phải là một tụ thật, mà full-scale =2N= 2^N LSB, nên Cs2NCminC_s \ge 2^N C_{min} luôn; ở 10-bit cái sàn đó (~1 pF) vẫn nằm trên mức kT/C đòi (16 fF). Câu “kT/C không phải thứ ép CsC_s” đứng vững dù bạn code kiểu gì — chỉ có ứng viên thay thế nó là đổi. (Nó cũng là bà con với split-cap ở mục 5: cả hai gỡ CsC_s khỏi cái giá của binary — split-cap cắt số lượng tụ, thermometer lỏng matching — và cùng đẩy CsC_s về phía sàn min-cap.)


5. kT/C bắt đầu cắn từ bit thứ mấy

Đến đây dễ kết luận nhầm rằng kT/C là chuyện vớ vẩn. Không phải — nó chỉ chưa tới lượt. Lấy đúng Cs,min=kT/σq2C_{s,min} = kT/\sigma_q^2 ở mục 3, giờ viết σq=VFS/(2N12)\sigma_q = V_{FS}/(2^N\sqrt{12}) ra theo NN:

Cs,min=kTσq2=12kT22NVFS2C_{s,min} = \frac{kT}{\sigma_q^2} = \frac{12\,kT\,2^{2N}}{V_{FS}^2}

Không phải công thức mới — vẫn là con 16 fF ở mục 3, chỉ tổng quát cho mọi NN. Vì σq\sigma_q co theo 2N2^{-N}CC đi theo σ2\sigma^{-2}, nên yêu cầu của kT/C phình theo 22N=4N2^{2N} = 4^N: mỗi thêm 1 bit là CsC_s nhân 4.

Còn CDAC nhị phân thì chỉ tăng theo 2N2^N. Hai hàm mũ khác cơ số, nên sớm muộn kT/C cũng phải vượt lên — chỉ là ở bit thứ mấy. Và câu trả lời hoá ra treo vào một chi tiết kiến trúc mà mình suýt bỏ qua.

Với mảng nhị phân thuần thì… không bao giờ tới lượt

Giải 2NCu=12kT4N/VFS22^N C_u = 12kT\,4^N/V_{FS}^2 với Cu=5C_u = 5 fF được N=18.3N = 18.3. Nghe thì có vẻ “có điểm giao”, nhưng nhìn con số kèm theo: ở đó Cs=1.63C_s = 1.63 nF.

Không ai chế tạo cái đó. Một nF sampling cap thì driver phải lái hàng nF ở tốc độ MHz, diện tích chiếm nửa chip, và acquisition time thành vô vọng. Nói cách khác: nếu cứ khăng khăng dùng mảng nhị phân thuần, CDAC sẽ luôn là thứ ràng buộc — nhưng thiết kế đã chết vì lý do khác từ lâu trước đó.

Cần kiến trúc gỡ CsC_s khỏi 2N2^N

Đó là lý do high-res không xài mảng thuần. Các kiến trúc CDAC — thermometer/segmentation (mục 4), hay split-cap chèn tụ cầu cho nhóm LSB “trông nhỏ đi” — đều cắt liên hệ Cs=2NCuC_s = 2^N C_u, cho CsC_s phình chậm hơn nhiều (split-cap: cỡ 22N/2Cu2\cdot 2^{N/2}C_u, nên 14-bit chỉ ~1.3 pF thay vì 82 pF). Cách mỗi kiến trúc làm là bài toán của DAC; điều bài noise này cần chỉ là hệ quả — một khi CsC_s thoát 2N2^N, cái sàn còn lại lộ ra chính là kT/C:

NNσq\sigma_qkT/C đòiNhị phân thuầnSplit-capAi ràng buộc?
82030 µV1 fF1.28 pF160 fFCDAC (dư 160×)
10507 µV16 fF5.12 pF320 fFCDAC (dư 20×)
12127 µV258 fF20.5 pF640 fFCDAC (dư 2.5×)
1431.7 µV4.12 pF82 pF1.28 pFkT/C (thiếu 3.2×)
167.9 µV65.9 pF328 pF2.56 pFkT/C (thiếu 26×)
Điện dung yêu cầu theo số bit: kT/C, CDAC nhị phân và CDAC split-cap

Hình trên là cả mục này gói trong một khung. Đường đỏ (kT/C) dốc gấp đôi mọi đường khác vì nó đi theo 4N4^N; đường xám đứt (nhị phân thuần) luôn nằm trên nó trong suốt dải dùng được; chỉ có đường xanh (split-cap) là bị nó cắt — tại N ≈ 12.9.

Đọc cột cuối theo chiều dọc là thấy điểm lật: giữa 12 và 14 bit. Dưới đó, cái mảng tụ tự nó đã to hơn nhu cầu noise vài chục lần — kT/C được cho không. Trên đó, split-cap đã bóp mảng xuống 1.28 pF nhưng noise lại đòi 4.12 pF, nên designer buộc phải phóng CuC_u lên trên mức tối thiểu chỉ để thoả kT/C. Lúc này và chỉ lúc này, câu ”CsC_s chọn theo kT/C” mới là câu đúng.

kT/C là bài toán của high-resolution. Làm 10-bit mà viện dẫn kT/C để biện minh cho CsC_s thì gần như chắc chắn đang lặp lại một câu học thuộc. Làm 16-bit thì nó là ràng buộc số một — và là lý do ADC độ phân giải cao ăn công suất khủng khiếp: 66 pF không chỉ là diện tích, nó là tải mà driver phải lái xong trong một chu kỳ sampling.

(Bảng lấy Cu=5C_u = 5 fF cố định cho mọi NN chỉ để so sánh — thực tế matching đẩy CuC_u lên khi NN tăng, nên các con số chỉ ở mức cỡ độ lớn.)


6. Thủ phạm thật: con buffer của chính bạn

Nếu kT/C ở 5 pF chỉ có 28.8 µV, vậy noise thật sự lọt vào con ADC này đến từ đâu?

Câu trả lời hơi đau: từ chính con op-amp buffer mà mình đã thiết kế ở bài trước.

Bài đó đã tính input-referred noise ở mục 9: thermal floor 20.7 nV/√Hz, 1/f corner 1.8 MHz.

Hai chú ý trước khi thay số. Thứ nhất, đó là noise quy về đầu vào, còn thứ đi vào CsC_s là noise ở đầu ra — nhưng con này nối unity-gain nên gain bằng 1, hai cái bằng nhau, dùng thẳng được. Thứ hai, noise của nó bị chặn bởi băng thông closed-loop của chính nó (GBW 10 MHz), chứ không phải bởi RC của switch (1/2π2.5 ns=641/2\pi\cdot 2.5\ \text{ns} = 64 MHz) — cái nào hẹp hơn thì cái đó quyết định. Lấy noise bandwidth theo quy tắc mục 2:

BWn=π2×10 MHz=15.7 MHzBW_n = \frac{\pi}{2}\times 10\ \text{MHz} = 15.7\ \text{MHz}

Phần thermal — nhân mật độ với căn băng thông:

vn,th=20.7 nV/Hz×15.7×106=82 μV rmsv_{n,th} = 20.7\ \text{nV}/\sqrt{\text{Hz}} \times \sqrt{15.7\times10^6} = 82\ \mu\text{V rms}

Phần flicker — tích phân 1/f1/f từ flowf_{low} lên BWnBW_n cho ra hàm log:

vn,1/f=vthfcln ⁣(BWnflow)=20.7n1.8×106×ln(1.57×107)=113 μV rmsv_{n,1/f} = v_{th}\sqrt{f_c \ln\!\left(\frac{BW_n}{f_{low}}\right)} = 20.7\text{n}\sqrt{1.8\times10^6 \times \ln(1.57\times10^7)} = 113\ \mu\text{V rms}

(flowf_{low} = 1 Hz là quy ước. Vì nó nằm trong log nên rất ít nhạy: đổi lên 100 Hz thì flicker chỉ tụt từ 113 xuống 96 µV.)

Cộng lại theo quy tắc bình phương:

vn,buf=822+1132=140 μV rmsv_{n,buf} = \sqrt{82^2 + 113^2} = \mathbf{140\ \mu V\ rms}

Giờ xếp cả ba nguồn cạnh nhau, cùng một con ADC:

NguồnrmsTheo LSBSo với kT/C
Quantization507 µV0.29 LSB17.6×
Buffer op-amp140 µV0.080 LSB4.9×
kT/C @ 5 pF28.8 µV0.016 LSB
Tổng527 µV0.30 LSB

Con buffer ồn gấp 4.9 lần kT/C — tức gấp 24 lần về công suất noise.

Ba nguồn noise của SAR ADC 10-bit và tổng cộng bình phương

Và trong con buffer đó, flicker (113 µV) lại lớn hơn thermal (82 µV) — đúng như bài op-amp đã cảnh báo với 1/f corner 1.8 MHz. Nên thứ tự ưu tiên nếu phải cải thiện noise của con ADC này là:

  1. Tăng W1L1W_1L_1W3L3W_3L_3 của op-amp → cắt flicker (113 µV, nguồn to nhất sau quantization) — rẻ, chỉ tốn diện tích.
  2. Tăng gm1g_{m1} → cắt thermal (82 µV), nhưng phải tốn thêm dòng.
  3. Giảm băng thông nếu spec settling cho phép → cắt cả hai, vì cả hai đều nhân với BWn\sqrt{BW_n} — nhưng settling thường không cho phép.
  4. Rồi mới tới CsC_s — và nó vô ích hoàn toàn: tăng CsC_s lên 20 pF thì tổng noise chỉ nhúc nhích 0.1%, đổi lại giết settling và tăng công suất driver.

Tổng cộng, SNR thực tế 61.64 dB so với 61.96 dB lý tưởng — mất 0.32 dB, ENOB 9.95 bit. Thiết kế đạt, nhưng nó đạt nhờ đúng những thứ mà không bài nào trong hai bài trước nêu tên.

Bài học ngược đời: trong một chuỗi sample-and-hold, noise của mạch đệm phía trước thường lấn át kT/C của chính khâu sampling. Nhưng kT/C mới là cái có tên gọi dễ nhớ và một công thức đẹp, nên nó được nhắc còn cái kia thì không.


7. Corner: nhiệt độ đẩy kT/C đi đâu

kT/C tỉ lệ với TT tuyệt đối, nên nó là một trong những đại lượng hiếm hoi trong analog gần như không trôi:

Nhiệt độkT/C\sqrt{kT/C} @ 5 pFTrôi so với 27°C
−40°C25.4 µV−12%
27°C28.8 µV
125°C33.2 µV+15%

Toàn dải công nghiệp chỉ ±15%, vì nhiệt độ vào dưới dấu căn (398/300=1.15\sqrt{398/300} = 1.15). So với gain của op-amp — thứ có thể tụt 2× giữa các corner — thì kT/C là hằng số.

Điều đáng chú ý hơn: kT/C không phụ thuộc process corner chút nào. Không có μ\mu, không có VthV_{th}, không có CoxC_{ox} trong công thức. SS hay FF thì kT/CkT/C vẫn thế. Cái trôi theo corner là giá trị CsC_s thực tế (±10–15% tuỳ dung sai tụ) và noise của buffer (qua gmg_m) — chứ không phải bản thân kT/C.


8. Bài học

RswR_{sw} không nằm trong kT/C. Làm switch to ra giúp settling và linearity, không giúp noise sampling. Chỉ CsC_s mới đổi được nó — và đó là lý do kT/C là một ràng buộc đắt: cách duy nhất để chữa cũng là cách tốn nhất.

Đừng viện dẫn kT/C — hãy tính nó. Một phép chia kT/σq2kT/\sigma_q^2 mất ba mươi giây và cho biết ngay bạn có đang bị nó ràng buộc hay không. Ở 10-bit/1.8 V, con số đó là 16 fF; nếu CsC_s của bạn đang là pico chứ không phải femto, thì thứ ép nó lớn là cái khác.

Với SAR ADC, cái ép CsC_s thường là CDAC. Cs=2NCuC_s = 2^N C_u, và CuC_u bị chặn dưới bởi matching và kích thước tối thiểu. Kiểm tra nhanh: chia CsC_s cho 2N2^N — nếu ra một con số vài fF, bạn vừa tìm thấy lý do thật.

Điểm lật nằm giữa 12 và 14 bit — nhưng chỉ khi kiến trúc cho phép. Chừng nào CsC_s còn dính vào 2NCu2^N C_u thì CDAC luôn thắng, và thiết kế chết vì diện tích trước khi kịp lo noise. Phải có một kiến trúc (split-cap, thermometer/segmentation) gỡ CsC_s khỏi 2N2^N thì kT/C mới lộ ra làm sàn. Bài toán noise ở đây là hệ quả của một quyết định kiến trúc, không phải một ràng buộc có sẵn.

Tìm nguồn noise to nhất trước khi tối ưu bất cứ thứ gì. Ở con ADC này thứ tự là quantization (507 µV) → buffer (140 µV) → kT/C (28.8 µV). Ba tuần bỏ ra để giảm kT/C sẽ cho đúng 0% cải thiện, trong khi kéo dài LL của cặp M3/M4 vài trăm nano là ăn ngay vào 113 µV flicker.


Tổng kết

  • Ở 10-bit/1.8 V, kT/C chỉ đòi 16 fF. Con số 5 pF ở hai bài trước đến từ CDAC (1024 × 4.88 fF), không phải từ noise.
  • kT/C không phụ thuộc RswR_{sw}, không phụ thuộc process corner, và chỉ trôi ±15% toàn dải nhiệt độ.
  • Thứ thật sự ồn trong chuỗi sample-and-hold này là noise của op-amp buffer (140 µV, gấp 4.9× kT/C), mà trong đó flicker lại lớn hơn thermal.
  • Bài kickback giờ cũng quy đúng công: CsC_s = 5 pF đến từ CDAC, không phải kT/C. Kết luận của bài đó chắc hơn, vì CsC_s hoá ra còn ít liên quan tới comparator hơn nữa.

Tham khảo

  • Razavi, B., Design of Analog CMOS Integrated Circuits, 2nd ed., Chương 7 (Noise) — dẫn xuất kT/C và noise bandwidth của RC bậc một; Chương 7 cũng là chỗ trình bày cách cộng noise tương quan/không tương quan cho đúng.

  • Razavi, B., Principles of Data Conversion System Design, Chương 6 — quan hệ giữa resolution, sampling rate và noise budget của ADC; nguồn cho lập luận σq=LSB/12\sigma_q = \text{LSB}/\sqrt{12} làm mốc so sánh.

  • Baker, R. J., CMOS Circuit Design, Layout, and Simulation, 4th ed. — phần switched-capacitor và charge-redistribution DAC: vì sao Cs=2NCuC_s = 2^N C_u với SAR, và unit cap bị chặn dưới thế nào. Website đi kèm: cmosedu.com.

  • Bài two-stage Miller op-amp — nguồn của mọi con số op-amp dùng ở mục 6: thermal floor 20.7 nV/√Hz, 1/f corner 1.8 MHz, GBW 10 MHz.

  • Bài kickback — cùng con SAR ADC, cùng CsC_s = 5 pF; hai bài cùng chốt: CsC_s bị ghim bởi matching CDAC (σ(Cu)/Cu<0.52%\sigma(C_u)/C_u < 0.52\%), không phải kT/C.

  • Bài Vth mismatch & offset — cắm số cụ thể cho ràng buộc matching CDAC (Cu5C_u \gtrsim 5 fF) mà bài này chỉ dừng ở “vài fF”; và giải thích vì sao DNL của CDAC là ràng buộc thật (không calib được như offset).