先从一个经常被问到的电路小问题聊起:为什么模拟集成电路里要做电流源,而不是直接用一个大电阻?问这个问题的人,通常刚接触模拟 IC 或者电路原理。乍一听很合理:电阻也能限制电流,而且线性好、好计算。但真的放到芯片里,一个 10MΩ 的电阻占的面积可能比一块测试焊盘还大,而一个两管电流镜只需要几个微米。更关键的是,电阻只能“决定电流”,不能“维持电流”——当负载电压变化时,流过电阻的电流会跟着线性变化。而电流源存在的意义,恰恰是让电流尽量不随负载走。这个“尽量”做到什么程度,就引出了电流源的进化史,也解释了为什么共源共栅(Cascode)会是模拟电路里绕不开的基本句型。
这篇文章不打算只讲定义。我更想从“电流源为什么需要进化”出发,拆一下共源共栅到底怎样改善了电流源,以及实际设计时会踩到哪些坑。我的核心判断是:共源共栅不是为了炫技,它是用额外的电压余度和电路复杂度,换取电流源输出的高阻抗和更强稳定性。理解这个过程,比记住一个公式更重要。
1. 单管电流源:能用,但远远不够稳定
1.1 理想电流源到底“理想”在哪里
要理解电流源的进化,先回到理想电流源的画像。理想电流源有两个特征:输出电流恒定,输出电阻无穷大。不管负载怎么变化,输出电流都保持不变。
实际电路里,我们当然可以造一个理想电流源吗?不行。我们能做的,是利用某种器件特性,构造出一个“近似恒定”的电流。比如最简单的,一颗 MOSFET 工作在饱和区时,漏电流主要由栅源电压决定,受漏源电压影响较小。于是,把栅偏置电压固定,源端接地,漏端接到需要被充电或供电的节点,就得到了一个最原始的电流源。
这个描述看起来没有问题,真正落地时你会意识到:这颗 MOSFET 的漏端电压不是固定的。它连接的负载可能会被拉到很高的电压,也可能因为 cascade 结构而接近地。当漏端电压变化时,电流真的还能保持恒定吗?这就是单管电流源最核心的缺陷。
1.2 MOSFET 变成电流源,但沟道长度调制是难题
一颗长沟道 NMOS,在饱和区时,一阶模型的漏电流公式是:
[ I_D = \frac{1}{2}\mu_n C_{ox} \frac{W}{L} (V_{GS}-V_{TH})^2 (1+\lambda V_{DS}) ]
这里的 (\lambda) 是沟道长度调制系数。(V_{DS}) 越大,有效沟道长度越短,电流也会略微变大。于是你得到的电流曲线,并不像理想电流源那样水平,而是随着输出电压上升缓慢上升。
用参数来感受一下:在 0.18μm 工艺里,一个最小沟长的器件,(r_o = 1/(\lambda I_D)) 可能只有 30kΩ 到 50kΩ。如果负载电压变化 1V,输出电流变化可能达到几微安到几十微安。对于 100μA 的基准电流来说,这可能就是百分之几甚至百分之十的误差。在要求 12 位精度的 ADC 或基准源里,这种误差完全不可接受。
所以你会听到一个说法:电流源的“质量”,很大程度上由它的输出电阻决定。输出电阻越大,负载电压变化对电流的影响就越小,电流源就越“理想”。
1.3 输出电阻才是“稳不稳”的度量
怎么观察一个电流源稳不稳?最直接的方法是做直流扫描。把电流源接到一个理想电压源上,把这个理想电压源从 0V 扫到电源电压,同时监测输出电流。得到 (I_{out}) 随 (V_{out}) 变化的曲线。
单管电流源的曲线会有一个明显的斜坡。这个斜坡的斜率就是电流源的输出导纳,取倒数就是输出电阻。真正设计时,我不会只看曲线本身,而是会在工作点附近取两端电流差,估算输出阻抗:
[ R_{out} = \frac{\Delta V_{out}}{\Delta I_{out}} ]
比如输出电压从 1V 变到 2V,电流从 100μA 变到 101μA,那么输出阻抗大约是 100kΩ。这个数值在多数高性能场景下不够用。
也是在这里,很多人会想到电路原理课里的“回路电流法例题”。如果题目里出现理想电流源,我们会特殊处理:增加电压变量或者使用超节点,因为理想电流源的内阻无穷大,回路方程里不能直接用电阻串并联。但实际晶体管电流源是一种“有内阻的电流源”,它既不是理想电流源,也不能简单等效成一个无穷大电阻。理解这一点,是后续理解 cascode 的前提:我们构建更好的电流源,本质上就是在想方设法把这个“内阻”往无穷大方向推。
2. 共源共栅:用“两层防线”把电压波动挡住
2.1 一个直觉:为什么要再叠一层管子
单管电流源不稳,根源在于漏端电压通过沟道长度调制直接作用到电流上。那有没有办法让下面那颗产生电流的管子,漏端电压尽量不受负载端影响?
这就是共源共栅结构最朴素的思路:在原来的电流管上面,再叠一个共栅接法的管子。下面那管负责把栅压转成电流,上面那管相当于一层“盾牌”,它承受了负载端的大电压波动,让下方管的漏端电压变化非常小。于是电流几乎不变。
我用一个更直观的类比:单管电流源像一个没有缓冲的送货通道,负载端稍一抖动,通道宽度就受影响;共源共栅像在通道口加了一个守卫,外面的扰动必须先推开守卫,才能影响里面真正产生电流的部分。
这层守卫不是白干的,它需要一个小小的工作条件:它自己也必须处于饱和区。也就是说,上面那管的栅极要有一个合适的偏置电压,漏端电压又要足够高,才能让两个管子都正常工作。
2.2 输出阻抗为什么可以提升一个量级以上
很多人第一次看到 cascode 的输出阻抗公式会有点蒙:
[ R_{out} \approx (g_{m2}+g_{mb2}) r_{o2} r_{o1} ]
其中 M1 是下面的电流源管,M2 是上面叠加的共栅管。把典型值代入,比如 (g_m = 1 \text{mS}),(r_{o1}=100\text{kΩ}),(r_{o2}=100\text{kΩ}),那么输出阻抗可以达到 (10\text{MΩ}) 甚至更高。比单管提高了两个到三个数量级。
为什么能提升这么多?关键是上下两个管子形成了类似“串联阻抗相乘”的效果。负载端的电压变化全部施加在上面管的漏端,但上面管本身也有沟道长度调制,会让它的源端电压发生极小扰动;这个极小扰动又被下面管的输出电阻再衰减一次。两层衰减叠加起来,宏观看到的总输出电阻就是乘积量级。
如果你想更直观地验证,不需要背公式,直接在仿真器里搭一个简单的 NMOS cascode 电流源:下面管栅极接固定偏置,上面管栅极接一个比源极电压高 (V_{TH}+V_{OV}) 的电平,把两个管子串联起来,漏端接扫描电压。你会看到输出电流曲线的斜率比单管明显平坦得多。
2.3 代价:电压余度和“浪费”的导通压降
不过,天下没有免费的午餐。共源共栅最大的代价是输出电压摆幅变差,也就是电流源正常工作所需的最小输出电压变高了。
单管电流源,漏源电压只要大于 (V_{OV}) 就能工作在饱和区,比如 (V_{OV}=200\text{mV}),最小输出电压只要 200mV。cascode 以后呢?为了保证两层管子都饱和,最小输出电压大概是上面管子的过驱动电压加阈值电压,再加上下面管子的过驱动电压。以一个典型强反型偏置为例:
[ V_{out,min} \approx V_{OV1} + V_{TH2} + V_{OV2} ]
如果是 0.18μm 工艺,(V_{TH}) 约 500mV,两个过驱动各 200mV,最小输出电压就要到 900mV 左右。如果用 1.8V 电源电压,剩下给负载做摆幅的空间只有 900mV,在一些轨到轨输出或低电压应用中就很紧张。
所以,cascode 不是盲目叠加的。它还带来一个问题:上面管子的漏电压可能很大,但它无法提供电流增益,也不能改善电流的绝对精度,它只是“让电流更稳”。这也是很多初学者设计时容易忽略的点,高输出电阻不是免费得到的,它拿走了可能更稀缺的电压余度。
3. 共源共栅电流源的各种演化:怎么省电压,怎么闭环
3.1 基本 cascode 电流镜:高输出阻抗版本
实际电路里,很少单独给 cascode 电流源配一个外部偏置电压,而是用电流镜结构配合 cascode 一起出现。最常见的是基本 cascode 电流镜,也叫“叠接电流镜”。
它的连接方式很简单:参考电流从二极管接法的 NMOS 管流入,这个管子的栅压同时驱动另一个管子的栅极,但是为了使用 cascode,还需要给上面两个管子提供栅极偏置。经典做法是用一个二极管接法的 cascode 偏置链产生偏置电压,让上下管都处于饱和区。
这样做的优点是电路简单,电流复制精度高,输出电阻高。缺点也非常明显:参考支路的二极管连接会消耗额外的电压,导致电流源正常工作的最小输出电压接近 (2V_{TH} + 2V_{OV})。在电源电压充裕的模拟设计里,这是首选结构,因为可靠、稳定、设计容易。
我在第一次设计偏置电路时,习惯先画一个基本 cascode 电流镜,然后用 DC 扫描确认每条支路的工作点,确认所有管子都在饱和区,再根据应用需要决定是否换成低压版本。
3.2 宽摆幅(低压)cascode:让电压不再那么紧张
电源电压越来越低,但阈值电压并没有像理想情况那样等比例下降。于是人们发明了“低压 cascode”,也叫“宽摆幅 cascode”。它的核心思想是:不要给上面共栅管施加一个大约 (V_{TH}+2V_{OV}) 的偏置,而是只施加 (V_{TH}+V_{OV}) 级别的偏置,让下面管子的漏端电压刚好等于它的过驱动电压 (V_{OV}),上面管子也刚好达到饱和。
这种结构需要一个额外的偏置电路,产生一个“比最低漏端电压高一个阈值”的电压。典型接法如下面示意:
VDD | M3 (diode-connected) ──> 产生偏置电压 Vcas | M1 (diode-connected) | GND用这个偏置电压去驱动 cascade 电流镜的上管栅极,可以让输出电压最小只需要 (V_{OV1} + V_{OV2}),省掉了上面管子的阈值电压。对于 1.8V 的电源电压来说,这可能就多出了 500mV 的可用摆幅,已经相当可观。
代价是低压 cascode 对偏置电压的精度很敏感。如果偏置电压偏高,下面管的漏端电压会变得过高,白白浪费余度;如果偏低,上面管可能进入线性区,输出阻抗大幅下降。设计时通常需要对偏置点做 corner 仿真,确保所有工艺角下都还有一定的裕量。
3.3 Wilson 电流镜和调节型 cascode:引入闭环
单靠堆管子提高输出阻抗,总有一个极限。如果想再进一步,就不能只靠结构上的“串联衰减”,而要引入反馈。
Wilson 电流镜就是一个经典例子。它在基本电流镜的基础上增加了一个反馈管,当输出电流因为负载电压而变化时,反馈管会通过改变中间节点电压来抑制输出电流变化。效果就是输出阻抗进一步升高,同时匹配性也不错。缺点是电流复制时参考端与输出端的电压条件不完全对称,会引入系统失调,但在很多模拟偏置场景下是可以接受的。
还有一种更现代的“调节型 cascode”,也叫 gain-boosted cascode。它在共源共栅结构外面加了一个辅助放大器,用放大器钳位下方管子的漏端电压。下面管子的漏端被放大器看成一个虚地,电压几乎不随输出变化,那下面管子的沟道长度调制就彻底失效了。这种结构下的输出阻抗可以比基本 cascode 再高一个数量级以上,常用于高增益运放和深亚微米电流源。
但调节型 cascode 不是免费的午餐。增益放大器会引入额外的功耗、噪声和频率极点,如果补偿不好,整个电流源环路可能振荡。在低频偏置中还容易处理,如果用在高速信号通路里,需要仔细分析环路稳定性。
3.4 怎么选:一个实用判断框架
做工程选择时,我喜欢用三个维度去对比:输出阻抗,最小输出电压,还有偏置复杂度。下面这个表格可以当作设计初期的快速参考。
| 结构 | 输出阻抗 | 最小输出电压 | 偏置复杂度 | 典型场景 |
|---|---|---|---|---|
| 单管电流源 | 低(几十到几百 kΩ) | (V_{OV}) | 低 | 对精度要求不高的尾电流 |
| 基本 cascode 电流镜 | 高(几十 MΩ 以上) | (V_{TH}+2V_{OV}) | 中 | 电源电压充足时的偏置和 DAC 电流源 |
| 低压 cascode | 高(几十 MΩ) | (2V_{OV}) | 中高 | 低电源电压、需要宽摆幅的场合 |
| Wilson 电流镜 | 中高 | (V_{TH}+2V_{OV}) 附近 | 中 | 需要匹配且简单实现的电流复制 |
| 调节型 cascode | 极高(几百 MΩ 以上) | 接近 (2V_{OV}) | 高 | 高增益运放、高精度基准 |
这里的数值不是绝对标准,不同工艺和偏置条件下差异很大。真正的设计流程应该是:先明确需要的输出摆幅、输出阻抗精度和功耗预算,再选择结构,而不是一上来就用最复杂的一版。
4. 从仿真到落地:设计共源共栅电流源的踩坑清单
4.1 第一件事是确认所有管子都在饱和区
无论选哪种 cascode,最容易犯的错误是:看起来连接正确,但其中一个管子已经进入线性区。这会导致输出阻抗瞬间下降,电流源从“高阻态”退化成“导电沟道”,整个设计失去意义。
我会在仿真初期做三件事:
- 用 DC 工作点查看每个管子的 (V_{GS})、(V_{DS}) 和 (V_{OV})。
- 确认下面管的 (V_{DS} \ge V_{OV})。
- 确认上面管的 (V_{DS} \ge V_{OV})。
对应到偏置电压上,就是上面管的栅压不能太高也不能太低。太高了下面管被压到线性区;太低了上面管无法打开。一个常见做法是把输出节点从低电压扫到高电压,同时把每个管子的工作区状态也画出来,这样能直观看到在不同输出电压下,电流源什么时候开始失效。这个“失效电压”就决定了系统允许的最低输出电压。
4.2 偏置电压不是“随便给一个值”
很多人搭电路时喜欢手动给一个理想的 (V_{bias}),比如接一个理想电压源。这种做法在跑通功能时没问题,但实际芯片里不会有一个理想电压源在那里等你。偏置电压必须由一个偏置电路产生,而且这个偏置电路要能在电源、温度、工艺角变化时仍然保持正确。
实际项目里,cascode 电流源的偏置常常由参考电流镜的二极管连接支路产生。比如用两个二极管接法的管子串联,从中间抽头得到偏置电压。这样做的好处是偏置电压会跟着电流源的电流自动调整,不容易失控。
如果你在仿真里发现电流源输出电阻没有达到预期,先别怀疑结构,去检查偏置电压的来源。如果偏置电压是从一个带隙基准来的,你需要确认它的输出驱动能力是否足够;如果是从外部引脚输入的,那它可能就是一颗定时炸弹——外部噪声和 IR drop 都会耦合进电流源。
4.3 版图匹配:不匹配时,再高的输出阻抗都没用
很多仿真结果很漂亮的电路,一到芯片回来就变样。原因往往不是电路原理错了,而是版图失配。
电流镜的本质是复制电流。如果两个管子的尺寸、朝向、周围环境不一致,即使栅压完全相同,电流也不会完全一致。引入 cascode 后,又多了两个管子,失配源变多。如果不重视版图,输出阻抗再高也换不来精度。
基本做法是使用 common-centroid 版图布局,把需要匹配的管子交叉摆放,并加入 dummy 管保证边缘刻蚀一致。高压管路通常不需要太在意,但对于电流镜核心管,匹配性决定整个芯片的系统失调。
如果是低压 cascode,还需要特别关注偏置管的匹配。因为低压工作点更靠近线性区,一点点失配就可能让某个管子提前退出饱和,整个电流源的精度直接崩掉。
4.4 排查链路:当电流源表现异常时按这个顺序查
我在流片后调试或者帮别人看电路时,习惯用下面这个顺序排查问题。这套流程也适用于仿真阶段:
- 先看静态工作点。把每个管子的工作状态打出来,确认全部在饱和区。只要有一个不在,后面所有的“高输出阻抗”假设都是空谈。
- 测输出电阻。对输出节点做 DC 扫描,测量工作点附近的 (\Delta V/\Delta I)。如果实际输出电阻只有理论值的十分之一,说明某个管子可能在饱和边缘。
- 检查偏置电压的稳定性。把电源电压从低到高扫描,观察偏置电压是否跟随。如果偏置电压在某个电源电压下突然跳变,电流源会在那附近出现异常。
- 检查版图寄生。如果是后仿真结果不对,重点看节点电容和电阻,特别是 cascode 中间节点。这个节点的寄生电容会影响环路行为,寄生电阻会造成额外的直流压降。
- 最后才考虑噪声和稳定性。如果电路有振荡,或者输出噪声比预期大得多,再回到偏置环路和增益级的相位裕度分析。
这套链路帮我解决过很多“看起来原理没错但指标不达标”的 case,也是我建议初学者在仿真阶段就养成的习惯。
5. 电流源的进化还没停:从 cascode 到系统化 bias
5.1 工艺演进没有让 cascode 退役,而是改变了玩法
进入深亚微米和 FinFET 工艺后,电源电压越来越低,阈值电压并没有等比例下降,输出电阻也因为沟道变短而变得很难看。按说 cascode 会更难用,但实际恰恰相反,高输出阻抗的需求从来没有消失,于是出现了大量“变形 cascode”:
- 用低压 cascode 让电流源在 1V 甚至 0.9V 电源下工作。
- 用 regulated cascode 配合放大器进一步提升输出阻抗。
- 用 cascode 与斩波、动态元件匹配结合,既保持高阻抗,又通过开关电容方式消除失配和低频噪声。
所以不能说“cascode 过时了”。更适合的说法是,cascode 从一个具体拓扑,变成了一种设计思想:如果你觉得一个电流源的输出阻抗不够,就再加一层“电压/电流缓冲”,用额外的代价换取稳定性。
5.2 温度、工艺角、失配:电流源不只是直流电路
很多初学者认为电流源是纯静态电路,给个偏置就完了。实际上,电流源在系统里的表现会受到温度和工艺角影响。同一个过驱动电压下,快工艺角电流可能比慢工艺角大 20%,这时如果偏置点的余度不够,温度升高后某个管子就可能退出饱和。
真正实用的电流源,是要能配合带隙基准、偏置网络、启动电路一起工作的。你需要的不是一个“高阻抗理想源”,而是一个在 (-40°C) 到 (125°C),五个工艺角,甚至加了mismatch蒙特卡洛后仍然能落在指标范围内的偏置源。
这也是为什么我建议初学者不要只搭单个电流源仿真,而是把它放进一个完整的 bias 网络里,比如做一次温度扫描,画 (I_{out}) vs (T)。如果电流变化平缓,说明 cascode 的偏置点设置合理;如果温度到某一个点后电流突然跌掉,那就要回过去看是不是某个管子已经离开饱和区。
5.3 一点判断:把 cascode 当“句型”,不要当模板
如果要用一句话总结这一段,我会说:不要背 cascode 的电路图,然后认为“只要按图连接就完成任务”。你需要理解的是它为什么能让电流变稳,它的输出阻抗从哪里来,它牺牲了什么,以及在什么场景下该用哪种变形。
模拟电路里有很多类似的“句型”:差分对、电流镜、共源共栅、折叠结构。真正的高手不是记住了所有结构,而是能判断当前设计里哪一项指标是短板,然后选择最合适的结构去补那根短板。共源共栅电流源,就是这种判断力最典型的一个起步练习。你可以从单管电流源开始,在仿真里观察它的输出曲线;再叠一层管子,看那条曲线变平多少;然后换低压版本,看它能不能承受更低的输出电压;最后尝试 regulating circuit,看反馈带来的新问题。走完这一圈,你对电流源的理解,就不会再停留在“用电流源当尾电流”这种表面套用了。
回到最开始的问题:为什么不用一个大电阻?因为电阻只能约束电流,不能稳定电流。而共源共栅用一层“盾牌”把电压波动挡在外面,让电流源从“能工作”进化成“值得信任”。如果你正在学习这个结构,我的建议是:先花一天时间,在仿真器里把单管电流源、cascode 电流源、低压 cascode 电流源的输出曲线都扫出来,对比一下输出电阻和最小输出电压的区别。当你真正感受到那条曲线变平的那一瞬间,你就会明白,电流源的进化,本质上就是不断往“理想”靠近一点点,而共源共栅,是这条路上最扎实的一级台阶。