← Về trang chủ
Design 13 tháng 8, 2026 ⟳ 13 phút đọc

5 kiểu current mirror — chọn cái nào khi headroom còn 300 mV

Cùng một khối gương dòng, năm topology đánh đổi Rout ↔ headroom ↔ noise ↔ diện tích khác nhau. Bài này dựng bảng so sánh bằng số thật tra từ bảng gm/ID 180nm, rồi trả lời: khi output stage chỉ còn 300 mV, mirror nào sống?

current mirrorcascodeheadroomoutput resistancegm-IDbias180nm
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 hạ VDDV_{DD} từ 1.8 xuống 1.2 V để tiết kiệm điện. Mọi thứ vẫn chạy, trừ một chuyện: gain của tầng khuếch đại tụt mất một nửa. Đo lại thì con cascode current mirror làm active load đang rớt khỏi saturation — output stage giờ chỉ chừa cho nó khoảng 300 mV, mà nó cần tới ~850 mV mới đứng vững. Rớt saturation thì RoutR_{out} sụp từ hàng chục MΩ xuống vài chục kΩ, và gain (tỉ lệ với RoutR_{out} của load) bốc hơi theo.

Đây là tình huống rất thật khi đẩy design xuống low-voltage: cascode cho RoutR_{out} tuyệt vời nhưng ăn headroom, và headroom là thứ đầu tiên hết khi VDDV_{DD} co lại. Câu hỏi engineer phải trả lời không phải “mirror nào tốt nhất” — mà là “với headroom còn lại bằng này, mirror nào vừa sống vừa giữ RoutR_{out} đủ cao?”

Bài này so năm topology gương dòng trên một bảng đánh đổi RoutR_{out} ↔ headroom ↔ noise ↔ diện tích, mọi con số tra thẳng từ bảng gm/ID 180nm (cùng bộ dữ liệu với tool gm/ID Calculator), rồi quay lại trả lời cái hook 300 mV.


Mục lục

  1. Gương dòng đánh đổi ba thứ
  2. Số nền: tra từ bảng gm/ID
  3. Năm topology, mỗi cái một cặp số
  4. Bảng đánh đổi tổng hợp
  5. Quay lại 300 mV — cái nào sống
  6. L là đòn bẩy Rout — nhưng không miễn phí
  7. Sinh ra dòng đó: supply-independent bias
  8. Worst-case corners
  9. Kiểm chứng bằng gm/ID Calculator
  10. Bài học

1. Gương dòng đánh đổi ba thứ

Một current mirror làm hai việc: copy (hoặc scale) một dòng tham chiếu, và đứng làm current source / active load cho tầng khác. Chất lượng của nó gói trong ba thông số kéo nhau:

  • RoutR_{out} — current source càng “cứng” (dòng ít đổi theo VoutV_{out}) khi RoutR_{out} càng cao. Khi mirror làm active load, gain của tầng gm(Rout,loadro,driver)\approx g_m \cdot (R_{out,load} \parallel r_{o,driver}), nên RoutR_{out} của mirror quyết định trực tiếp gain.
  • Headroom — điện áp VoutV_{out} tối thiểu để mọi transistor còn saturation. Hết headroom thì RoutR_{out} sụp, và đây là ràng buộc đầu tiên chết khi VDDV_{DD} thấp.
  • Noise + diện tích — mirror bơm noise dòng vào tải; giảm noise hay tăng RoutR_{out} gần như luôn tốn thêm diện tích.

Hai công thức nền cần cho cả bài:

Rout,simple=ro=1gds,Av0=gmro=gmgdsR_{out,\text{simple}} = r_o = \frac{1}{g_{ds}}, \qquad A_{v0} = g_m r_o = \frac{g_m}{g_{ds}}

Av0A_{v0}gain nội của một transistor — và nó chính là hệ số mà cascode nhân thêm vào RoutR_{out}. Còn headroom của một device quy về Vds,satV_{ds,sat}, mà theo gm/ID ta đọc thẳng qua

V=2gm/IDVds,satV^\star = \frac{2}{g_m/I_D} \approx V_{ds,sat}

gm/IDg_m/I_D nhỏ (strong inversion) → VV^\star lớn, tốn headroom nhưng gmg_m thấp (ít noise); gm/IDg_m/I_D lớn (weak inversion) → VV^\star nhỏ, tiết kiệm headroom nhưng Av0A_{v0}fTf_T tụt. Mọi đánh đổi dưới đây xoay quanh ba đại lượng Av0A_{v0}, ror_o, VV^\star.


2. Số nền: tra từ bảng gm/ID

Thay vì ước lượng ro=1/(λI)r_o = 1/(\lambda I) bằng một λ\lambda đoán, mình tra thẳng Av0=gm/gdsA_{v0} = g_m/g_{ds}, mật độ dòng JDJ_D (để ra WW) và fTf_T từ bảng gm/ID 180nm — đúng bộ dữ liệu BSIM mà tool gm/ID Calculator đang dùng.

Chọn một design point làm chuẩn: NMOS current source, I=50 μAI = 50\ \mu\text{A}, L=0.5 μmL = 0.5\ \mu\text{m}, gm/ID=10g_m/I_D = 10 (moderate inversion), VDS=0.9V_{DS} = 0.9 V, VSB=0V_{SB} = 0. Tra bảng ra:

Đại lượngGiá trị (tra LUT)
Av0=gm/gdsA_{v0} = g_m/g_{ds}98.7
gmg_m500 µS
ro=1/gdsr_o = 1/g_{ds}197 kΩ
W=I/JDW = I/J_D5.1 µm
fTf_T3.6 GHz
V=2/(gm/ID)V^\star = 2/(g_m/I_D)200 mV

Bộ sáu số này là tất cả những gì cần để tính RoutR_{out} và headroom cho cả năm topology bên dưới. (Riêng VthV_{th} — cần cho headroom của cascode bias-ngây-thơ — tra thẳng từ chính model BSIM 180nm: Vth0.44V_{th} \approx 0.44 V ở VSB=0V_{SB} = 0; body effect đẩy lên ~0.53 V ở VSB=0.3V_{SB} = 0.3 V, sẽ dùng ở mục corner.)


3. Năm topology, mỗi cái một cặp số

Năm gương dòng đầy đủ (I_REF + nhánh diode + nhánh ra): simple, cascode chuẩn, wide-swing, source-degenerated, regulated — kèm Rout và headroom mỗi loại

Hình vẽ đầy đủ từng gương: nhánh trái là dòng tham chiếu IREFI_{REF} chảy vào transistor diode-connected (M1, thêm M3 nếu cascode), nhánh phải là nhánh ra (M2/M4). RoutR_{out} và headroom đều do nhánh ra quyết định, nên phần bàn luận dưới đây tập trung vào nhánh đó.

(a) Simple mirror. M1 diode-connected soi dòng sang M2 — hai transistor, rẻ và nhỏ nhất trong năm loại.

Rout=ro=197 kΩ0.20 MΩ,Vout,min=V=200 mVR_{out} = r_o = 197\ \text{k}\Omega \approx 0.20\ \text{M}\Omega, \qquad V_{out,\min} = V^\star = 200\ \text{mV}

Headroom thấp nhất nhưng RoutR_{out} cũng thấp nhất, và dòng ra lệ thuộc mạnh VoutV_{out} (lỗi do λ\lambda / DIBL). Dùng khi không cần RoutR_{out} cao.

(b) Cascode chuẩn. Chồng một device lên trên, gain nội nhân vào:

RoutAv0ro=98.7×197 kΩ19 MΩR_{out} \approx A_{v0}\, r_o = 98.7 \times 197\ \text{k}\Omega \approx 19\ \text{M}\Omega

Gấp gần 100 lần simple. Nhưng nếu bias cascode kiểu đơn giản (gate lấy từ chồng diode), VoutV_{out} đáy phải gánh cả VthV_{th}:

Vout,min=Vth+2V0.44+0.40=0.84 V850 mVV_{out,\min} = V_{th} + 2V^\star \approx 0.44 + 0.40 = 0.84\ \text{V} \approx 850\ \text{mV}

850 mV là cái giết design ở VDDV_{DD} thấp — chính là thủ phạm trong hook.

(c) Wide-swing (low-voltage) cascode. Cùng cấu trúc, nhưng bias gate cascode thấp hơn để cả hai device đứng ngay mép saturation, gỡ được số hạng VthV_{th}:

RoutAv0ro19 MΩ,Vout,min=2V=400 mVR_{out} \approx A_{v0}\, r_o \approx 19\ \text{M}\Omega, \qquad V_{out,\min} = 2V^\star = 400\ \text{mV}

Giữ nguyên RoutR_{out} của cascode mà cắt headroom từ 850 xuống 400 mV. Đây là con ngựa kéo của low-voltage design — và ở mục 5 sẽ thấy nó còn ép được xuống dưới 300 mV.

(d) Source-degenerated. Thêm điện trở RsR_s dưới source để tăng RoutR_{out} mà không chồng device. Chọn RsR_s sao cho rơi IRs=150I R_s = 150 mV → Rs=3 kΩR_s = 3\ \text{k}\Omega:

Rout=ro(1+gmRs)=197k×(1+500μ×3k)=197k×2.50.49 MΩR_{out} = r_o(1 + g_m R_s) = 197\text{k} \times (1 + 500\mu \times 3\text{k}) = 197\text{k} \times 2.5 \approx 0.49\ \text{M}\Omega Vout,min=V+IRs=200+150=350 mVV_{out,\min} = V^\star + I R_s = 200 + 150 = 350\ \text{mV}

RoutR_{out} chỉ tăng 2.5×2.5\times mà đã tốn 150 mV headroom và một con điện trở to — nên degeneration không phải để đua RoutR_{out}. Giá trị thật của nó là matching và noise: RsR_s làm phẳng chênh lệch VthV_{th} giữa hai nhánh và hạ gmg_m hiệu dụng (giảm noise dòng bơm ra), đổi lại RsR_s tự thêm nhiễu nhiệt 4kT/Rs4kT/R_s.

(e) Regulated (gain-boosted) cascode. Dùng một op-amp phụ (gain Av0\approx A_{v0}) ghim cứng VDSV_{DS} của device dưới, nhân thêm một lần gain nội nữa:

RoutAv02ro98.72×197k1.9 GΩ,Vout,min=2V=400 mVR_{out} \approx A_{v0}^2\, r_o \approx 98.7^2 \times 197\text{k} \approx 1.9\ \text{G}\Omega, \qquad V_{out,\min} = 2V^\star = 400\ \text{mV}

RoutR_{out} gần 2 GΩ — current source gần như lý tưởng, headroom vẫn như wide-swing. Cái giá: một op-amp phụ (diện tích + dòng) và một vòng phản hồi phải lo ổn định. Chỉ dùng khi thật sự cần gain cực cao (ví dụ tầng đầu op-amp độ lợi lớn).


4. Bảng đánh đổi tổng hợp

Gom cả năm lại, cùng design point (I=50 μAI=50\ \mu\text{A}, L=0.5 μmL=0.5\ \mu\text{m}, gm/ID=10g_m/I_D=10 trừ khi ghi khác):

TopologyRoutR_{out}HeadroomNoiseDiện tíchChọn khi
Simple0.20 MΩ200 mVchuẩn (gm\propto g_m)nhỏ nhấtkhông cần RoutR_{out} cao
Cascode chuẩn19 MΩ850 mV≈ simple2× devicecó dư headroom (>0.9 V)
Wide-swing cascode19 MΩ400 mV≈ simple2× device + biaslow-voltage, cần RoutR_{out} cao
Source-degen0.49 MΩ350 mVthấp hơn (+RsR_s)1 device + RR toưu tiên matching/noise
Regulated cascode1.9 GΩ400 mV≈ simple + aux2× device + op-ampcần RoutR_{out} cực cao

Điểm mấu chốt đọc từ bảng: cascode (chuẩn hay wide-swing) mua RoutR_{out} gấp ~100 lần; degeneration thì gần như không đua được về RoutR_{out} mà là công cụ matching/noise; regulated đẩy RoutR_{out} thêm hai bậc nữa nhưng kéo theo một vòng phản hồi phải giữ ổn định.


5. Quay lại 300 mV — cái nào sống

Với headroom output chỉ còn 300 mV, gạch tên từng dòng:

  • Cascode chuẩn (850 mV) — chết ngay, đúng như hook.
  • Source-degen (350 mV) — cũng quá, mà RoutR_{out} chỉ 0.49 MΩ nên không đáng.
  • Simple (200 mV) — sống, nhưng RoutR_{out} chỉ 0.20 MΩ.
  • Wide-swing / regulated (400 mV @ gm/ID=10g_m/I_D=10) — vẫn quá 300 mV một chút.

Cứu wide-swing bằng cách vặn gm/IDg_m/I_D lên 15 (đẩy sâu hơn vào moderate/weak inversion → VV^\star nhỏ lại). Tra lại LUT tại L=0.5 μmL=0.5\ \mu\text{m}, gm/ID=15g_m/I_D=15: Av0=103.5A_{v0} = 103.5, ro=138 kΩr_o = 138\ \text{k}\Omega, V=133V^\star = 133 mV. Khi đó:

Vout,min=2V=266 mV<300 mV,RoutAv0ro14 MΩV_{out,\min} = 2V^\star = 266\ \text{mV} < 300\ \text{mV} \checkmark, \qquad R_{out} \approx A_{v0} r_o \approx 14\ \text{M}\Omega

Vậy wide-swing cascode ở gm/ID=15g_m/I_D = 15 vừa lọt headroom 300 mV vừa giữ RoutR_{out} 14 MΩ — gấp 70 lần con simple ở design point gốc (0.20 MΩ). Đây là câu trả lời cho hook. (Đổi lại WW phình từ 5.1 lên 13 µm và fTf_T tụt từ 3.6 xuống 2.1 GHz — luôn có giá.)

Đặc tuyến I–V output ba topology: tại Vout=300mV, cascode chuẩn rớt còn 29µA trong khi wide-swing giữ 50µA

6. L là đòn bẩy Rout — nhưng không miễn phí

Núm vặn thứ hai cho RoutR_{out} (ngoài topology) là chiều dài kênh LL: LL dài hơn → λ\lambda nhỏ hơn → Av0A_{v0}ror_o lớn hơn. Tra LUT tại cùng I=50 μAI=50\ \mu\text{A}, gm/ID=10g_m/I_D=10, VDS=0.9V_{DS}=0.9 V, quét LL:

LLAv0A_{v0}ror_oRoutR_{out} cascode (Av0roA_{v0} r_o)WWfTf_T
0.18 µm36.272 kΩ2.6 MΩ1.7 µm22.9 GHz
0.5 µm98.7197 kΩ19 MΩ5.1 µm3.6 GHz
1.0 µm127.4255 kΩ32 MΩ10.5 µm1.0 GHz

Kéo LL từ 0.18 lên 1.0 µm cho RoutR_{out} cascode tăng ~12 lần (2.6 → 32 MΩ) — nhưng fTf_T tụt ~23 lần (23 → 1 GHz) và WW phình ~6 lần (diện tích tăng theo WLW \cdot L, tức ~35 lần). Nên cho current source / active load — nơi cần RoutR_{out} cao mà không cần tốc độ — dùng LL dài là đúng; còn device nào nằm trên đường tín hiệu tốc độ cao thì LL dài giết băng thông. Đây là lý do trong một op-amp, các con mirror/load thường LL dài hơn hẳn input pair.


7. Sinh ra dòng đó: supply-independent bias

Cả bài giả định có sẵn một dòng tham chiếu II để soi gương. Dòng đó từ đâu? Cách đơn giản nhất — một điện trở từ VDDV_{DD} — cho dòng lệ thuộc thẳng VDDV_{DD}, hỏng ý nghĩa “current source”. Lời giải là supply-independent bias (constant-gmg_m): một vòng self-biased trong đó dòng được đặt bởi một điện trở RSR_S và tỉ số kích thước, gần như không đổi theo VDDV_{DD}:

I2μnCox(W/L)1RS2(11K)2I \approx \frac{2}{\mu_n C_{ox} (W/L)}\cdot\frac{1}{R_S^2}\left(1 - \frac{1}{\sqrt{K}}\right)^2

Cái bẫy của mọi mạch self-biased: nó có hai điểm cân bằng — điểm chạy đúng, và điểm “zero dòng” (chẳng có gì chạy). Phải thêm startup circuit đá nó ra khỏi điểm chết lúc bật nguồn. Chi tiết constant-gmg_m, con số nhạy nguồn, startup và ổn định vòng — mổ riêng ở bài supply-independent bias; và nó chính là viên gạch nối sang bandgap referenceLDO, nơi cùng những current mirror này quay lại làm khối cốt lõi.


8. Worst-case corners

Nominal đẹp chưa nói lên gì — check ở corner mới biết headroom còn sống không.

  • SS, −40 °C: VthV_{th} tăng ~100 mV so với TT. Với cascode bias đơn giản (headroom có số hạng VthV_{th}), 850 mV nominal vọt lên ~950 mV — càng bất khả thi ở VDDV_{DD} thấp. Wide-swing không mang VthV_{th} trong headroom nên chỉ nhạy qua VV^\star (thay đổi nhẹ theo μ\mu), an toàn hơn nhiều — thêm một lý do chọn nó cho low-voltage.
  • Body effect trên con cascode. Device cascode phía trên có source nổi trên đất nên VSB0V_{SB} \neq 0, VthV_{th} của nó bị đẩy cao thêm bởi body effect — tra BSIM 180nm thấy VthV_{th} đi từ 0.44 V (VSB=0V_{SB}=0) lên ~0.53 V (VSB=0.3V_{SB}=0.3 V), tức thêm ~90 mV headroom cho cascode bias đơn giản. Nếu tính mà quên phần này, silicon sẽ rớt saturation dù nominal “pass”. Bảng gm/ID có sẵn trục VSBV_{SB} (0 / 0.3 / 0.6 / 0.9 V) để tra đúng điểm đó.
  • FF, 125 °C: ror_o giảm và điểm bias lệch theo corner → RoutR_{out} và gain tụt; đây là chỗ phải check gain tối thiểu còn đạt.

9. Kiểm chứng bằng gm/ID Calculator

Mọi con số trong bài đến từ bảng gm/ID 180nm (starter kit Murmann), không phải square-law. Muốn dựng bảng đánh đổi cho design point của bạn — đổi II, LL, gm/IDg_m/I_D, VDSV_{DS}, VSBV_{SB} — mở gm/ID Calculator: nhập điểm làm việc, đọc thẳng Av0=gm/gdsA_{v0}=g_m/g_{ds} (ra RoutR_{out}), JDJ_D (ra WW), fTf_T, rồi ghép vào các công thức RoutR_{out} / headroom ở mục 3. Đó là cách “verify” thay cho SPICE ở giai đoạn sizing — nhanh, và đứng yên vì gm/IDg_m/I_D gần như bất biến process.


10. Bài học

Không có mirror tốt nhất — chỉ có mirror hợp headroom budget. Cùng đòi RoutR_{out} cao thì trả bằng headroom (cascode chuẩn), hoặc bằng độ phức tạp/ổn định (regulated), hoặc bằng tốc độ và diện tích (LL dài). Quy tắc chọn nhanh:

  • Headroom dư (> 0.9 V), cần RoutR_{out} cao → cascode chuẩn.
  • Headroom co (~300 mV) → wide-swing cascode, vặn gm/IDg_m/I_D lên để cắt VV^\star.
  • Cần RoutR_{out} cực cao và chịu được op-amp phụ → regulated cascode.
  • Ưu tiên matching/noise hơn RoutR_{out}source-degeneration.
  • Không cần RoutR_{out} cao → simple, đỡ tốn.

Và hai núm vặn xuyên suốt: gm/IDg_m/I_D đổi headroom ↔ noise ↔ gain nội; LL đổi RoutR_{out} ↔ tốc độ ↔ diện tích. Cả hai đều tra thẳng ra số từ bảng gm/ID, nên bảng đánh đổi này bạn tự dựng lại được cho bất kỳ process nào có LUT.


Tổng kết

  • Cascode nhân RoutR_{out} lên ~Av0A_{v0} lần (0.2 → 19 MΩ ở design point), nhưng bias đơn giản ăn Vth+2V850V_{th}+2V^\star \approx 850 mV headroom — chết ở VDDV_{DD} thấp.
  • Wide-swing cascode giữ nguyên RoutR_{out} mà cắt headroom còn 2V2V^\star; vặn gm/IDg_m/I_D lên 15 thì lọt 266 mV, RoutR_{out} vẫn 14 MΩ — đáp án cho tình huống 300 mV.
  • LL dài là đòn bẩy RoutR_{out} thứ hai (×12) nhưng giết fTf_T (÷23) và tốn diện tích.
  • Source-degeneration là công cụ matching/noise, không phải để đua RoutR_{out}; regulated cascode đẩy RoutR_{out} tới ~GΩ nhưng thêm vòng phản hồi phải ổn định.

Tham khảo

  • Razavi, Design of Analog CMOS Integrated Circuits, 2nd ed., Chương 5 (Current Mirrors) & Chương 9 — dẫn xuất RoutR_{out} cascode, wide-swing, và regulated cascode; góc nhìn headroom rất rõ.

  • Baker, CMOS Circuit Design, Layout, and Simulation, 4th ed. — biến thể mirror, layout matching cho gương dòng. Website: cmosedu.com.

  • Sansen, Analog Design Essentials — bảng so sánh current source theo RoutR_{out} / headroom, tư duy “chọn theo ràng buộc”.

  • Murmann, B., gm/ID Starter Kit — bộ dữ liệu BSIM 180nm dùng cho mọi con số trong bài; cùng nguồn với gm/ID Calculator.