1. 从"抄电流"这件事说起:为什么电流镜值得反复琢磨
做模拟电路的人都有一个共识:偏置电路是整颗芯片的"地基"。你运放做得再漂亮、带隙基准温漂再小,只要偏置电流随电源电压、温度、工艺角乱飘,整条信号链的增益、带宽、功耗全都会跟着失控。而电流镜,就是偏置电路里最基础、也最容易被低估的那块砖。
我刚入行那会儿,觉得电流镜不就是两个管子镜像一下嘛,W/L 比例一设,电流就出来了。直到有一次流片回来,发现某个模块的静态电流比仿真高了将近 40%,排查了整整两周,最后定位到问题出在一个最不起眼的简单电流镜上——它的输出电流对电源电压的依赖远超我的预期,而根源就是沟道长度调制效应没处理好。那次之后我才真正开始系统地去啃 Wilson、Cascode、自偏置这些结构。
这篇内容我想把这几类电流镜放在一起讲透:简单电流镜、Wilson 电流镜、Cascode 电流镜、自偏置电流镜、低压自偏置电流镜。它们不是孤立的五个电路,而是一条清晰的演进脉络——每一代都在解决上一代的某个具体痛点。我会从"为什么需要它"讲起,把每种结构的核心原理、输出阻抗推导、最小工作电压、实际选型取舍都摊开来说,再补上我在实际项目里踩过的坑和验证方法。不管你是刚学模拟 IC 的学生,还是已经做过几颗芯片的工程师,应该都能从中找到能直接用的东西。
先给一个全局的对照表,让你对这几类结构的定位有个整体印象,后面再逐个展开:
| 结构类型 | 核心解决的问题 | 输出阻抗量级 | 最小输出电压 | 典型应用 |
|---|---|---|---|---|
| 简单电流镜 | 最基础的电流复制 | 约 ro | Vdsat | 对精度要求不高的偏置 |
| Cascode 电流镜 | 抑制沟道长度调制 | 约 gm·ro² | 2·Vdsat | 高精度镜像、有源负载 |
| Wilson 电流镜 | 用反馈提升阻抗 | 约 gm·ro² | 2·Vdsat | 需要高阻抗又省管子的场合 |
| 自偏置电流镜 | 摆脱对外部参考电流的依赖 | 取决于核心结构 | 取决于核心结构 | 上电即工作的自举偏置 |
| 低压自偏置电流镜 | 在低电源下实现自偏置 | 中等偏高 | 约 Vdsat + 一点余量 | 低电压、低功耗设计 |
这张表建议你先扫一眼,不用急着理解每一格,等看完后面的推导再回来对照,会有"原来如此"的感觉。
2. 简单电流镜的精度天花板到底卡在哪
2.1 理想镜像与实际镜像的差距从哪来
理想情况下,两个完全相同的 MOS 管,栅源电压相同,漏电流就应该相同。这就是简单电流镜的全部逻辑:一个二极管接法的管子(我们叫它参考管)产生 Vgs,把这个 Vgs 接到另一个管子的栅上,输出管就复制出同样的电流。如果输出管是参考管的 N 倍宽长比,那电流就是 N 倍。
但现实里这个"相同"要打很多折扣。最核心的误差来源有三个:沟道长度调制效应、阈值电压失配、迁移率退化。其中沟道长度调制是系统性的、最要命的那个。
沟道长度调制说的是:当漏源电压 Vds 增大时,有效沟道长度会缩短,导致漏电流上升。用公式表达,饱和区漏电流是:
Id = (1/2)·μn·Cox·(W/L)·(Vgs - Vth)²·(1 + λ·Vds)那个(1 + λ·Vds)就是罪魁祸首。参考管的 Vds 通常等于它的 Vgs(因为二极管接法),而输出管的 Vds 由负载决定,两者一般不相等。Vds 不一样,λ 又不可忽略,输出电流自然就偏了。
2.2 输出阻抗才是衡量电流镜好坏的硬指标
衡量一个电流镜"稳不稳",最直接的指标是输出阻抗 ro。输出阻抗越高,输出电流对输出端电压变化就越不敏感,镜像精度就越好。简单电流镜的输出阻抗就是输出管本身的 ro:
ro = 1 / (λ·Id) = VA / IdVA 是厄利电压,典型值在几伏到几十伏。假设 VA = 10V,Id = 10μA,那 ro 就是 1MΩ。听起来不小,但在很多应用里远远不够。比如你要做一个高增益的共源放大级,负载阻抗直接决定增益,1MΩ 的负载阻抗配上 gm 只有几十 μS 的管子,增益也就几十倍,根本不够看。
所以简单电流镜的定位很清楚:用在输出端电压摆幅小、对镜像精度要求不高的地方,比如给某个内部模块提供一个粗略的偏置电流。一旦你对精度或者增益有要求,就必须上更高阶的结构。
2.3 一个容易被忽略的失配问题
除了沟道长度调制,还有一个新手经常忽略的点:版图失配。两个理论上相同的管子,实际做出来 Vth 会差几毫伏。这个差值经过 gm 放大,直接变成电流误差。误差量级大概是:
ΔId/Id ≈ (gm/Id)·ΔVthgm/Id 这个比值在弱反型区可以到 20~30,在强反型区只有 5~10。也就是说,同样的 ΔVth,弱反型下电流误差会被放大好几倍。这就是为什么高精度电流镜往往要求管子工作在适度的过驱动电压下,并且版图上要做共质心、加 dummy。我见过有人为了省面积把镜像管做得又短又宽,结果失配惨不忍睹,最后不得不返工。镜像管的沟道长度建议不要取工艺最小值,通常取最小值的 2~4 倍,这样既改善 λ 又改善匹配。
3. Cascode 电流镜:用一层"屏蔽"把输出阻抗拉起来
3.1 Cascode 的本质是给输出管套一件"电压铠甲"
Cascode 这个词来自真空管时代的"级联",核心思想特别朴素:在输出管上面再叠一个共栅管。这个共栅管的源极跟着输出管的漏极走,而它的栅极接一个固定偏置。这样一来,输出端的电压波动大部分落在共栅管上,输出管的漏极电压几乎不变。
输出管漏极电压不变意味着什么?意味着那个(1 + λ·Vds)里的 Vds 基本恒定,沟道长度调制被"屏蔽"掉了。这就是 Cascode 提升输出阻抗的物理直觉。
3.2 输出阻抗的推导:为什么能到 gm·ro²
从输出端往上看,看到的是共栅管的 ro 和"输出管等效阻抗"的串联组合。共栅管源极看进去的阻抗大约是 1/gm,而输出管的 ro 远大于 1/gm,所以输出管漏极的电压变化几乎全部转化成共栅管源极的电流变化,再被共栅管放大。
严格推导下来,Cascode 电流镜的输出阻抗是:
Rout ≈ gm2·ro2·ro1其中下标 2 是共栅管,下标 1 是输出管。相比简单电流镜的 ro1,整整提升了 gm2·ro2 倍,通常是一到两个数量级。这就是为什么 Cascode 能做出非常精准的镜像。
3.3 代价:输出摆幅被吃掉一个 Vdsat
天下没有免费的午餐。Cascode 结构最大的代价是最小输出电压变高了。输出管要饱和,需要 Vds1 ≥ Vdsat1;共栅管要饱和,需要 Vds2 ≥ Vdsat2。而输出端电压等于两者之和:
Vout,min = Vdsat1 + Vdsat2 ≈ 2·Vdsat在 1.8V 甚至更低的工艺里,两个 Vdsat 加起来可能就吃掉 0.4~0.6V 的摆幅,这对低压设计是很大的压力。所以 Cascode 虽好,但在低电源电压下要慎用,或者必须配合下面要讲的低压结构。
3.4 宽摆幅 Cascode 的小技巧
如果你既想要 Cascode 的高阻抗,又想省一点摆幅,可以用宽摆幅 Cascode(wide-swing cascode)。做法是给共栅管单独产生一个偏置电压,让它刚好工作在饱和区边缘,这样输出管漏极电压可以低到 Vdsat 而不是 2·Vdsat。代价是需要额外的偏置产生电路,复杂度上升。
我在实际项目里的经验是:如果电源电压有 2.5V 以上,普通 Cascode 就够用,别折腾宽摆幅;如果电源低于 1.8V,那基本必须上宽摆幅或者低压结构。这个判断能帮你省下不少设计时间。
4. Wilson 电流镜:用反馈换阻抗的另一种思路
4.1 Wilson 结构到底"聪明"在哪
Wilson 电流镜是 1968 年由 George Wilson 提出的,它的巧妙之处在于:用三个管子实现了接近 Cascode 的输出阻抗,而且其中一部分是负反馈。
标准 Wilson 电流镜由三个管子组成。参考管 Q1 是二极管接法,Q2 是输出管,Q3 是反馈管。Q3 的栅极接在 Q1 的栅漏节点上,源极接 Q2 的漏极,漏极接输出端。这个连接方式形成了一个反馈环路:如果输出电流因为某种原因增大,Q3 的源极电压会变化,通过 Q3 反过来调节 Q2 的栅压,抑制电流的增大。
这个负反馈机制让 Wilson 电流镜的输出阻抗达到:
Rout ≈ gm3·ro3·ro2和 Cascode 是一个量级。但 Wilson 只用了三个管子,而且不需要额外的偏置电压,这是它的优势。
4.2 Wilson 的经典缺陷:输出摆幅和镜像比例
Wilson 电流镜有个著名的缺点:它的最小输出电压也是 2·Vdsat 左右,和 Cascode 差不多。更麻烦的是,如果你想要 1:N 的镜像比例,Wilson 结构会变得很别扭,因为反馈管的尺寸和输出管的尺寸耦合在一起,比例不好调。
还有一个坑:Wilson 电流镜的反馈环路在某些条件下可能不稳定,尤其是当输出端有大电容负载时。我见过一个案例,Wilson 电流镜驱动一个片外大电容,结果上电时出现振荡,最后在反馈管栅极加了个小电容才压住。如果你要用 Wilson 驱动容性负载,务必做环路稳定性仿真,别只看 DC 工作点。
4.3 Wilson 和 Cascode 该怎么选
这两个结构输出阻抗量级相同,选择主要看三点:
- 管子数量:Wilson 三个管子,Cascode 至少四个(含偏置),Wilson 省面积。
- 偏置复杂度:Wilson 自带的反馈省去了共栅管的偏置,Cascode 需要额外偏置。
- 镜像比例灵活性:Cascode 调比例很自由,Wilson 受限。
我的经验是:固定 1:1 镜像、面积敏感、电源电压够高的场合,优先 Wilson;需要灵活比例或者电源电压紧张的场合,选 Cascode。这个判断在大多数项目里都成立。
5. 自偏置电流镜:不靠外部参考也能自己"站起来"
5.1 为什么需要自偏置
前面讲的电流镜都有一个隐含前提:你得先有一个参考电流。这个参考电流通常来自一个电阻加二极管接法管子,或者来自带隙基准。但问题来了——参考电流本身也需要偏置,而偏置又需要电流,这是个鸡生蛋蛋生鸡的问题。
自偏置电流镜就是来解决这个循环依赖的。它的核心思想是:用一个电流镜的输出反过来给自己提供偏置,形成一个自洽的工作点。最经典的结构是"自偏置 Cascode"或者叫"自举电流镜"。
5.2 自偏置的核心:让电路自己找到工作点
一个典型的自偏置电流镜由两部分组成:一个产生电流的核心(通常是 Cascode 或 Wilson),和一个把电流反馈回偏置节点的镜像支路。整个电路没有外部参考电流输入,只有一个启动电路。
它的工作点由电路自身的方程决定。假设核心支路电流是 I,反馈支路镜像出 k·I,这个 k·I 又去偏置核心支路。当 I 满足某个特定值时,整个环路达到平衡。这个平衡点就是电路的工作电流。
数学上,这个平衡点由管子的 W/L 比例和电阻(如果有的话)共同决定。如果电路里只有管子没有电阻,那工作电流对工艺角和温度的依赖会比较强,因为它是靠管子参数之间的比例关系确定的。
5.3 启动电路:自偏置电路绕不开的坎
自偏置电路有个致命问题:它有两个稳定工作点——一个是正常工作点,一个是零电流点。因为如果所有管子都不导通,电路也"自洽",永远起不来。所以必须加启动电路。
启动电路的原理很简单:上电瞬间,用一个管子强行往某个节点注入电流,把电路"踢"出零电流状态,等电路正常工作后,启动管自动关断,不再影响主电路。
我踩过的一个坑是:启动管关断不彻底。有一次启动管在正常工作后还有几微安的漏电流,导致主电流偏高。后来把启动管的栅极驱动加强,确保它完全关断才解决。验证启动电路时,一定要做上电瞬态仿真,并且扫描慢上电、快上电、电源抖动等多种情况,确保任何条件下都能可靠启动。
5.4 自偏置的精度取舍
自偏置电路省掉了外部参考,但代价是精度和温度特性通常不如带外部基准的电流镜。因为它的工作点由管子参数比例决定,而管子参数随工艺角和温度变化。如果你的应用对偏置电流的绝对精度要求很高(比如高精度 ADC 的偏置),那还是老老实实用带隙基准加 Cascode 镜像。自偏置更适合那些"电流差不多就行、但必须自己起来"的场合,比如上电管理、内部振荡器的偏置。
6. 低压自偏置电流镜:在 1V 电源下也要活得体面
6.1 低压设计的核心矛盾
到了 1.2V 甚至更低的电源电压,前面所有结构都面临同一个问题:Vdsat 叠加吃掉了太多摆幅。Cascode 要 2·Vdsat,Wilson 也要 2·Vdsat,在 1.2V 电源下,如果 Vdsat 是 0.2V,那输出摆幅只剩 0.8V,勉强能用;如果 Vdsat 是 0.3V,那就只剩 0.6V,很多电路就做不了了。
低压自偏置电流镜的目标就是:在保持自偏置能力的同时,把最小工作电压压到一个 Vdsat 加一点点余量。
6.2 低压结构的实现思路
实现低压的常见手法有几种:
第一种是用电阻或者二极管做电平移位,把共栅管的栅极偏置压低,让它工作在更低的源极电压下。但电阻在 IC 里占面积且精度差,二极管又引入额外压降,各有取舍。
第二种是用电流镜本身产生低压偏置,比如经典的"低压 Cascode"结构,通过一个额外的管子把共栅管的栅压钳位在 Vgs + Vdsat 附近,这样输出管漏极只需要 Vdsat 就能饱和。
第三种是采用折叠或者电流复用结构,让同一支电流同时完成偏置和信号处理,减少电压堆叠。
6.3 低压下的失配和噪声问题会被放大
这里要特别提醒一个反直觉的点:低压设计里,失配和噪声的影响会被放大。原因很简单,低压意味着管子必须工作在更靠近弱反型区的地方,而弱反型区的 gm/Id 高,失配的电流误差被放大;同时弱反型区的闪烁噪声也更大。
所以做低压电流镜时,版图匹配要做得更狠,共质心、dummy、大尺寸该上就上。我做过一个 1V 电源的偏置电路,镜像管尺寸比常规设计大了将近一倍,就是为了压住失配。面积换精度,在低压下这笔账往往划算。
6.4 一个实用的低压自偏置拓扑
分享一个我用过的低压自偏置结构思路:核心是一个低压 Cascode 镜像,反馈支路用一个小尺寸管子把电流镜像回去偏置共栅管。整个电路只需要一个启动管,最小工作电压大约是 Vdsat + 0.1V 左右。实测在 1V 电源下,输出电流随电源从 1V 变到 1.5V 的变化小于 5%,温度从 -40 到 125 度变化小于 15%。这个性能对于大多数低压偏置场景已经够用了。
当然,具体参数要根据你的工艺和指标调,我这里给的是量级参考,不是可以直接抄的数值。
7. 选型决策:什么场景该用哪种电流镜
7.1 按电源电压和精度需求画一张决策图
把前面所有内容浓缩成一个决策逻辑,大概是这样的:
- 电源 > 2.5V,精度要求一般:简单电流镜,省面积省事。
- 电源 > 2.5V,精度要求高:Cascode 或 Wilson,看面积和比例需求。
- 电源 1.5~2.5V,精度要求高:宽摆幅 Cascode,或者低压自偏置。
- 电源 < 1.5V:低压自偏置结构,别无选择。
- 需要自己启动、无外部参考:自偏置系列。
这张逻辑不是死的,实际项目里经常要混用。比如一颗芯片里,带隙基准用 Cascode 保证精度,内部振荡器用自偏置省参考,上电管理用低压自偏置。不同模块用不同结构,才是成熟设计的做法。
7.2 仿真验证清单:别只看 DC
电流镜的仿真验证,新手最容易只跑一个 DC 工作点就完事。这是远远不够的。我整理了一份必做清单:
| 验证项 | 目的 | 关键设置 |
|---|---|---|
| DC 扫描 Vout | 看输出阻抗和最小工作电压 | Vout 从 0 扫到 VDD |
| 电源扫描 | 看电源抑制能力 | VDD 从 min 扫到 max |
| 温度扫描 | 看温漂 | -40 到 125 度 |
| 工艺角 | 看极端工艺下的偏差 | TT/FF/SS/FS/SF |
| 蒙特卡洛 | 看失配分布 | 至少 200 次 |
| 上电瞬态 | 看启动可靠性 | 慢上电、快上电、抖动 |
| 环路稳定性 | 看是否振荡 | 断环加 AC 激励 |
这份清单我基本每个项目都会过一遍,尤其是蒙特卡洛和上电瞬态,出问题最多的就是这两项。
7.3 版图阶段的几个硬规矩
最后说版图。电流镜的性能,一半靠设计,一半靠版图。几条硬规矩:
- 镜像管必须同方向、同环境,别一个横着一个竖着。
- 加 dummy 管,保证边缘管子和中间管子看到的环境一致。
- 共质心布局,把失配的一阶梯度抵消掉。
- 电源和地走线要对称,别让一支电流路径比另一支长。
- 敏感节点加屏蔽,尤其是高阻抗的输出节点。
这些规矩听起来老生常谈,但真正做到位的项目不多。我见过太多设计仿真完美、流片翻车的案例,最后都是版图没做到位。
8. 我在实际项目里踩过的几个真实坑
第一个坑是关于Cascode 共栅管偏置的。有一次我用一个理想电压源给共栅管偏置,仿真完美。流片时用实际电路产生这个偏置,结果偏置电压随温度漂了 100mV,共栅管直接进了线性区,输出阻抗暴跌。教训是:共栅管的偏置必须和主电路同源、同温度特性,别用独立的偏置。
第二个坑是关于Wilson 电流镜的启动。Wilson 结构本身不需要启动电路,但如果它的某个节点初始状态不对,也可能锁死在异常工作点。我有一次遇到 Wilson 上电后电流只有设计值的十分之一,查了半天发现是反馈管的初始栅压让它没导通。后来在反馈节点加了个弱下拉才解决。任何带反馈的电流镜,都要检查所有可能的稳定工作点。
第三个坑是关于低压自偏置的温度特性。低压结构为了省摆幅,管子工作在弱反型区,结果温漂比预期大很多。我原本以为自偏置的温度特性主要看比例,后来发现弱反型区的温度依赖完全不是线性的。最后通过调整管子尺寸,让关键管子工作在中等反型区,才把温漂压下来。低压不等于必须弱反型,适度过驱动反而能改善温度特性,这个反直觉的结论我花了不少时间才接受。
第四个坑是关于蒙特卡洛仿真的样本数。有一次我跑了 100 次蒙特卡洛,良率看起来 99%,结果量产时发现实际良率只有 90% 出头。后来把样本加到 500 次,才发现分布尾部比想象的长。蒙特卡洛样本数不够,会严重高估良率,尤其是电流镜这种对失配敏感的电路,建议至少 500 次,关键项目上 1000 次。
9. 写在最后的一点个人体会
这几类电流镜我前后用了快十年,从最开始只会照抄教科书上的简单镜像,到后来能根据电源、精度、面积、启动要求快速选型,中间交了不少学费。如果让我给刚入行的朋友一句话建议,那就是:别把电流镜当成一个"配角"随便应付,它决定了你整颗芯片的稳定性下限。
一个偏置电流飘 20%,可能你的运放增益就掉一半,你的比较器就误判,你的 ADC 就丢码。而这些问题的排查成本,远高于你当初在电流镜上多花的那几天设计时间。把输出阻抗、最小工作电压、启动可靠性、失配这几个维度都想清楚,你的偏置电路就稳了,后面的信号链才有发挥的空间。
如果你正在做低压设计,我的建议是优先把低压自偏置结构吃透,因为这是未来几年低功耗芯片的刚需。如果你还在用 3.3V 或 5V 工艺,那 Cascode 和 Wilson 的组合基本能覆盖 90% 的场景。选型没有绝对的对错,只有适不适合你当前这颗芯片的约束条件。