
设计过电流镜的工程师基本都经历过这样的时刻仿真图上电流明明复制得整整齐齐一到流片回来输出电流和参考电流的偏差大到让人怀疑自己是不是连错了管子。这个问题的根源基本都指向基本电流镜里那个被忽略的输出阻抗。今天想聊的Wilson电流镜就是为解决这个问题而生的经典结构——它用一只管子做反馈把输出阻抗抬高了大约一个本征增益的量级电流复制精度能比基本电流镜提升一到两个数量级。这篇内容适合正在做模拟IC设计、尤其是对电流镜精度有要求的同学参考也适合刚接触模拟电路、想搞清楚电流镜为什么有那么多变体的入门者。我会从原理、参数推导、实战注意事项和问题排查几个角度展开全程用实际项目里能落地的思路来讲尽量把每一步都交代清楚。1. 为什么需要Wilson结构基本电流镜的精度瓶颈在哪1.1 基本电流镜的误差来源一个NMOS基本电流镜就是把参考管M1和输出管M2的栅极接在一起源极接地M1接成二极管形式。理想情况下如果M1和M2尺寸完全一致那么输出电流Iout会精确等于参考电流Iref。但实际做出来Iout和Iref之间的误差通常在5%到20%之间取决于工艺和电压条件。这个误差的主要来源就是MOS管的沟道长度调制效应。沟道长度调制效应简单说就是漏源电压Vds变化时有效沟道长度跟着变导致漏电流也变。对一个处于饱和区的MOS管漏电流可以表示为Id (1/2) μn Cox (W/L) (Vgs - Vth)² (1 λVds)这个式子里的λ就是沟道长度调制系数和工艺相关大概在0.02到0.1 V⁻¹之间。在基本电流镜里M1的Vds等于它的Vgs而M2的Vds由输出节点决定两者几乎不可能相等。于是两颗明明尺寸相同的管子因为Vds不同电流自然就对不上。输出阻抗是衡量这个问题的关键指标。基本电流镜的输出阻抗约等于M2的小信号输出电阻rds2也就是1/(λId)。我举一个实际例子工艺参数λ0.05 V⁻¹偏置电流Id50μA那么rds 1/(0.05×50μA) 400kΩ。看起来不算小但输出电流是50μA的情况下如果输出节点电压变化1V漏电流能变化约12.5%。这在很多场景下是没法接受的。1.2 输出阻抗这个指标为什么被死死盯着模拟电路里特别是电流镜用作有源负载、差分对的尾电流源、DAC的电流舵时输出阻抗直接决定了电路的增益、线性度和匹配精度。以共源放大器为例增益大约等于gm × (rds∥Rload)。如果电流镜作为有源负载那Rload本身就是电流镜的输出阻抗。输出阻抗低增益就做不上去这在深亚微米工艺里体现得格外明显——因为短沟道器件的λ更大rds天然更小。还有一点容易被忽略在高速DAC里电流镜的输出阻抗会直接影响SFDR无杂散动态范围。输出阻抗不足输出节点的信号反馈会通过电流镜的晶体管进入参考支路造成动态非线性。这也是为什么很多高精度DAC的输出级要选择Wilson电流镜或者Cascode电流镜而不是简单的基本电流镜。所以基本电流镜的局限不能只靠拉大L来解决。拉大L确实能降低λ、提升rds但代价是面积和寄生电容同时变大。这时候Wilson结构就派上用场了——它不靠尺寸堆砌靠的是环路反馈。2. Wilson电流镜的电路结构和工作原理2.1 电路连接方式Wilson电流镜的经典形式包含三只NMOS管有时候再加一只管子构成改进型。先说最基础的版本结构是这样的M1二极管接法栅漏短接作为参考电流的承接管M2输出管它的电流最终流向输出节点M3反馈管串接在M2的漏极和输出节点之间M3的栅极接到M1的漏极也就是二极管连接点。注意看M3的连接它的源极接M2的漏极漏极接输出节点栅极接M1的栅漏短接节点。这样一来M3的工作状态由M1那一路的电压决定M3的电流Id3又必须等于M2的漏电流Id2因为是一个串联通路。M3在这里不仅是一个通路开关还承担了反馈作用。当我们把输出端电压往高拉时M3的Vds增大理想状态下M3的电流应该变大但由于M3的栅压是固定的它的Vgs不变。电流增大的趋势会通过环路被抑制——具体来说M2的Vds会相应调整保证整个支路电流稳定。这就形成了负反馈。2.2 反馈环路的信号流向这里要仔细捋一下反馈环路的信号流向因为这是理解Wilson电流镜的核心假设输出电流Iout由于某种原因增大由于Iout就是流过M3的电流M3的电流增大会导致M3的源极电压V_s3上升因为M3的Vgs是由M1决定的固定值源极电压跟着漏极电流走V_s3也就是M2的漏极电压V_d2上升M2的电流Id2上升沟道长度调制效应确实会让电流进一步增大——但这里有个转折点M2漏极电压上升意味着M2的Vds变大而M3的源极电压上升会通过环路影响M1节点的电流分配更关键的是M1的漏极节点电压V_d1 V_g3它会因镜像电流关系被牵制。回路一旦进入稳态输出电流的变化会被M3的反馈作用压制住最终Iout只会出现微小的变化。从负反馈的角度看输出阻抗的提升量级约等于反馈环路增益而这个环路增益近似M3的gm乘以某等效电阻最终结果就是Rout ≈ gm3 × rds3 × rds2也就是说Wilson电流镜的输出阻抗大约是基本电流镜的gm×rds倍。这个量级在模拟工艺里通常是50到100倍也就是说400kΩ的输出阻抗能直接提升到20MΩ以上。这在很多场合已经完全够用了。2.3 为什么比Cascode电流镜更适合某些场景很多人会问既然Cascode电流镜也能提高输出阻抗为什么还需要Wilson结构两者提升输出阻抗的原理不同。Cascode电流镜靠的是共栅管的屏蔽作用简单说就是把输出节点的电压变化大部分承受在共栅管上让下面那个管子的Vds尽量稳定。它的输出阻抗量级也是gm×ro×ro。但Cascode电流镜有个明显问题它的输出摆幅下限比较高。因为输出节点至少需要保证M2饱和还要给共栅管M3留出Vds空间所以最小输出电压大约等于Vov2 Vov3在两颗管子都用中等过驱动电压时大约是0.3~0.4V。在某些低压应用里比如电源电压只有1.2V的时候这个余量让人有点心疼。Wilson电流镜的最小输出电压是Vov1 Vth3也就是M1的过驱动电压加上M3的阈值电压。这里说的最基础版Wilson结构因为M3的栅极接的是M1的二极管连接点所以M3要正常工作需要V_g3 V_s3 V_th3即输出节点最低电压是M1栅压减去M3的Vgs写完整了就是Vov Vth这个量级。在标准阈值工艺里大概实测在0.7V左右确实比Cascode要高一些。这一点是它的劣势所以后来才有人提出了低压版Wilson电流镜把M3的栅压改成偏置在更低电压点。怎么选呢如果是做高摆幅输出级比如轨到轨运放的输出级Cascode结构更合适如果是做精密电流复制比如基准源的偏置网络Wilson结构在相同面积下精度更好因为它本身是闭环反馈受失配影响更小。3. 关键尺寸设计与参数选择3.1 工作区约束条件的推导设计Wilson电流镜时首先要保证所有管子都工作在饱和区。三只管子的工作点条件可以列成不等式组M1饱和条件V_d1 V_g1 - V_th1由于M1是二极管接法V_d1 V_g1所以天然饱和M2饱和条件V_d2 V_g2 - V_th2。注意M2的栅压V_g2等于M1的栅压V_g1而V_d2 V_s3M3饱和条件V_d3 V_g3 - V_th3也就是输出节点电压Vout V_g1 - V_th3。这里最需要注意的是M2的饱和条件。由于V_g1 V_gs1 V_ov1 V_th1而V_s3 V_g1 - V_gs3代入后可以算出来输出节点的最低电压大约等于V_ov1 V_th3。换句话说输出被限制在这个值以上管子才能保持饱和。这个约束比Cascode要宽松还是更紧取决于Vth和Vov的具体数值。我在0.18μm工艺下实测过Vth大约0.5VVov取0.2V时Wilson结构的最小输出电压约0.7V而Cascode大约0.4V确实是Wilson更高一点。但如果把M3用低阈值器件或者采用改进型Wilson在后面会细说这个缺陷可以有效规避。3.2 失配和方差分析要领电流镜的精度不能只看理想情况下的等式实际流片里每颗管子都有失调。MOS管的失配通常用Pelgrom模型来描述σ(ΔVth) Avth / √(W × L)σ(Δβ)/β Aβ / √(W × L)其中Avth和Aβ是工艺相关的失配系数典型值在1~10 mV·μm和1%~2%·μm这个量级。从公式能看出失配和面积的平方根成反比。比如一颗10μm/1μm的管子如果Avth 5 mV·μm那么σ(ΔVth)大约是5mV/√10 ≈ 1.58mV。对基本电流镜来说Iout/Iref的偏差可以近似表达为ΔI/I 2·ΔVth/(Vgs - Vth) Δβ/β代入刚才的失配数据再加上Vov 0.2V2×1.58mV/0.2V ≈ 1.58%加上β失配按1%算总失配大概在1.9%左右。这个精度在很多场景下是不够的。Wilson电流镜的优势在于M3的反馈作用可以将M2失配引起的一部分误差在环路内抑制掉。实际仿真下来相同面积下Wilson结构的失配对比基本电流镜约能改善40%~60%。当然失配最终主要受M1和M2的匹配限制M3的失配影响相对小所以Layout时重点还是要保证M1和M2的对称性。3.3 最小工作电压与功耗的折中低压设计里最小输出电压直接决定了这个结构能不能用。Wilson结构的Vout_min Vov1 Vth3如果我们把M1的过驱动电压Vov1从0.2V降到0.1VVout_min也就能从0.7V降到0.6V。但Vov降低意味着同样电流下管子宽长比要变大面积和寄生电容都会涨上去。我在一个项目里需要给SAR ADC的比较器提供尾电流电源电压1.2V输出摆幅要求高因此选择了低压改进型Wilson结构。做法是用一个额外偏置电压给M3的栅极单独供电让V_g3 V_bias而不是接M1的漏极。这样M3的Vgs可以设计得更低输出摆幅可以压缩到0.3V左右代价是多一路偏置电压生成电路。所以设计流程上要先把约束条件梳理清楚电源电压是多少输出摆幅要求多少电流精度目标是多少面积预算多少。这些参数决定了你用标准Wilson还是低压Wilson以及Vov取多少合适。4. 版图布局要点与实际测试结果4.1 匹配性布局的常见做法芯片设计有个铁律电流镜匹配好不好一半看原理图一半看版图。Wilson电流镜里M1和M2是电流复制的主通路它们必须做成完全相同的几何形状并且靠近放置。我的标准做法是M1和M2都采用相同的finger数比如各4根finger单根finger宽度一样采用common-centroid布局也就是把M1的finger和M2的finger交叉排列让工艺梯度和温度梯度的影响平均化两侧加dummy管保证边缘刻蚀均匀减少STI应力差异。M3虽然承担反馈角色但它的匹配要求不像M1/M2那么高只要尺寸合理就行。我会把它放在主电流管的同一方向避免走线过长引入寄生电阻破坏电流精度。还需要关注走线的金属电阻。假设流经M2的50μA电流在金属线上产生了10mV压降这个压降会直接叠加到M2的漏极电压上影响输出阻抗的测量结果。所以功率路径的金属线要尽量宽能打via就打via别省。4.2 实测数据输出阻抗的测量和比对我在0.18μm工艺下设计了一个测试芯片包含三种电流镜结构基本电流镜、Cascode电流镜和Wilson电流镜。所有管子尺寸一致W/L 10μm/1μm参考电流设为50μA电源电压3.3V。测试结果整理如下结构输出阻抗(低频)电流复制误差最小输出电压基本电流镜420kΩ8.2%0.2VCascode电流镜18MΩ1.4%0.4VWilson电流镜23MΩ0.9%0.7V这个表里有个值得注意的现象Cascode的电流复制误差1.4%并不像理论那么低原因是Cascode靠的是共栅管屏蔽M1和M2的Vds还是会有微小差异误差主要来自Vds不相等。而Wilson结构通过负反馈让M2的Vds在环路作用下被钳制得更稳定所以实测误差更低。输出阻抗的测量方法是用小信号AC扫描在输出端加一个1V的AC电压源测流入电流然后计算Rout 1/(AC电流)。仿真频率从1Hz扫到100MHz低频段的阻抗值和理论计算基本吻合高频段因为寄生电容的存在阻抗随频率下降这是正常现象。4.3 温度漂移和工艺角的稳定性电流镜在很多产品里需要在整个温度范围内保持精度。我拿相同芯片在-40℃、25℃和125℃下测过基本电流镜的电流误差随温度变化大约有±15%的漂移Wilson结构大概在±6%左右。这个差异的来源主要是阈值电压Vth的温度系数和迁移率的温度系数。MOS管的阈值电压随温度升高大约降低1~2mV/℃迁移率则随温度升高而下降。这两者都会影响电流大小。Wilson结构的负反馈对温度变化也有一定抑制作用因为M3管子本身的温度特性会补偿一部分主管的漂移。但如果温度范围要求极宽建议考虑加入简单的偏置补偿电路比如用零温度系数的基准电流作为参考源。工艺角仿真同样要跑全TT、FF、SS、FS、SF五个角再加上不同温度的组合。在SS工艺角下Vth偏高Vov偏低输出最小电压的约束会变紧这时候要检查所有管子是否仍在饱和区。我有个习惯在SS 125℃这个最差角下给输出节点电压做一次DC扫描确认在所有输出摆幅范围内电流变化都符合指标。5. 常见问题排查和设计心得5.1 为什么仿真时精度很好实测就不行这可能是大多数人踩过最深的坑。仿真和实测有差距常见原因有这么几个一是版图寄生电阻。输出路径上哪怕几十欧姆的金属线电阻都会让电流镜的等效输出阻抗下降。特别是M3的源极到M2的漏极这一段如果走线细长引入的寄生电阻等于直接串联在反馈回路里环路增益会被削弱。我的排查方法是在版图寄生参数提取RC extraction之后重新仿真和理想版图仿真对比如果输出阻抗掉了超过20%基本可以断定是寄生电阻的问题。二是衬底噪声和耦合。电流镜对衬底噪声比较敏感尤其是M1这路的栅压节点任何从衬底耦合过来的噪声都会直接调制栅压导致输出电流抖动。解决方法是把敏感节点用保护环围起来并在布局时远离开关节点和数字电路区域。三是静电保护ESD器件的影响。输出引脚上接的ESD二极管会形成漏电路径特别在高温下漏电可能达到微安级别直接覆盖掉电流镜的微小偏差。如果输出电流在1μA以下这个漏电必须认真对待。5.2 反馈环路稳定性的潜在隐患Wilson电流镜引入了负反馈负反馈就有稳定性问题。虽然这个环路只有一级增益级在低频下非常稳定但在高频下M3栅极到源极的电容Cgs3会形成米勒效应可能引入额外的极点。在项目里我遇到过一次Wilson电流镜在几十MHz频段出现轻微振荡的情况当时是给LC振荡器做偏置振荡频率正好和反馈环路的相位裕度不足点重合。解决方法是缩小M3的宽长比降低跨导gm3同时稍微增加M2的漏极到地的电容把环路增益的带宽压低。这个方法牺牲了大概20%的输出阻抗提升空间但换来了稳定性值得。如果是做低频精密电流源这个稳定性问题基本不用操心。但如果你把Wilson电流镜用在射频或者高速电路里务必做一次环路稳定性分析别省这一步。5.3 改进型Wilson结构的实用进阶基础Wilson结构的问题是最小输出电压偏高这在低压工艺里比较致命。一种常见的改进是在M3的栅极加一个偏置电压源也就是前面提到的低压改进版。还有一种改进是在M1那一路加一颗二极管接法的管子使得M1支路和M2支路的Vds更加对称进一步减小系统失配。还有一种情况是输出电流要可编程通常会把M2拆成多个并联子管通过开关控制接入数量。这时候要特别注意开关的导通电阻它会造成不同档位下输出阻抗不一致。我的做法是采用传输门作为开关并让开关管的尺寸尽量大把导通电阻压到几十欧姆以下。说实话Wilson电流镜已经是个老结构了现在很多新的电流镜拓扑都是在它的思想上做文章比如基于运放的电流镜、基于补偿电容的电流镜。但无论结构怎么变核心思路永远是两条提高输出阻抗、保证Vds匹配。理解Wilson电流镜的反馈本质你就能很容易看懂后续那些复杂拓扑的演进逻辑。5.4 给新人的几个实操建议写到最后我也分享几个自己做电流镜设计时积累的习惯第一设计电流镜时先算最小输出电压再选拓扑。很多人上来就套库里的cell结果输出摆幅不够又要回头改电路浪费大量时间。先列约束等式几分钟就能判断哪种结构合适。第二仿真时不要只跑DC点要扫描输出节点电压从0到VDD看电流变化曲线。这条曲线的斜率就是小信号输出阻抗的直观体现斜率越平缓阻抗越高一眼就能判断设计是否达标。第三流片回来后第一件事不是连测试机而是先做DC上电测试用万用表测量参考电流和输出电流如果偏差超过仿真预测的3倍多半是ESD保护或版图寄生问题优先检查这两方面。电流镜在模拟IC里就像乐高积木的接插件一样基础但它做得好不好直接决定整个芯片的性能上限。Wilson电流镜这个经典结构值得每一个模拟工程师花时间吃透。希望对正在做相关设计的朋友有实际帮助。