抑制共有的部分
想象两个朋友站在一张蹦床上,而你只关心他们头顶之间的*高度差*。如果有人把整张蹦床弹起来,两个人的头会一起上下起伏——但两人之间的高度差几乎不变。只量这个差,弹跳便干脆消失了。这个技巧——只关心两个信号之间的差值,而忽略二者共有的东西——正是模拟 IC 设计中最重要的一个思想。
真实的芯片身处一个充满敌意的环境。电源纹波、衬底噪声、温度漂移,以及来自附近数字 时钟 的串扰,都会对你的电路施压。残酷之处在于:这些垃圾大多会等量地出现在附近的每一根线上——它们对这些线而言是*共有的*。所以,与其让电路相对于一个固定的地去放大单个 电压(那样会把噪声也一起放大),我们改为给它喂两个电压,并只问一个问题:*它们相距多远?* 共有的垃圾骑在两个输入上,于是相互抵消。
差分对
做这件事的电路在此。取两个匹配的 MOSFET,把它们的源极接在一起。在这个公共节点下方,挂一个尾 [[current|电流]] 源——一份固定的电流预算,比如 100 µA,这对管子必须共享它。两个栅极是你的输入;两个漏极是你的输出。这就是 差分对,地球上几乎每一个 op-amp、比较器和数据转换器都是从它起步的。
尾电流源正是关键所在。因为总电流是*固定的*,这对管子唯一的自由就是如何分配它。让一个栅极比另一个稍高一点,电流就会向那一侧倾斜——一个漏极流出得更多,另一个则恰好少出同样多,就像一个总重量固定的跷跷板。如果*两个*栅极一起抬高(纯共模的动作),分配比例则完全不变:每一侧仍然各取一半。这对管子从根本上就看不到两个输入共有的信号——这是刻进物理本身的抑制,而不是事后再外加上去的。
对于给定的一点点推动,电流会倾斜得多厉害?这个灵敏度就是 跨导 gm——每伏输入对应多少输出电流——它决定了增益。对一个工作在饱和区的 MOSFET,gm 取决于你把它驱动到阈值之上多狠(即过驱动电压 Vov),而最省事的记法是用器件本就流过的 偏置 电流来表达:
gm = 2 * Id / Vov ; transconductance from the bias point ; Id = drain (bias) current through one side ; Vov = Vgs - Vth (overdrive), how hard the device is turned on ; small overdrive -> larger gm for the same current (efficient)
从差分对到 op-amp
光秃秃的差分对只会倾斜电流,但你想要的是一个输出电压,而且要有大量增益。两步即可收尾。第一,你得把那个双端(差分)电流变成一个单端电压。优雅的诀窍是用一个有源负载:用一个 电流镜 给两个漏极封顶。镜像把一侧的电流复制过来强加到另一侧,于是两半就*相加*而不是相互抵消——你在单个输出节点上免费收下了完整的差分信号。
第二,那个输出节点对地有一个高电阻(即晶体管的输出电阻 ro)。增益不过是跨导作用在这个电阻上:信号电流 gm·vin 在 ro 上建立起一个电压。所以单级大致能提供 增益 = gm · ro,也就是器件的*本征增益*——往往只有 20 到 40(几十倍),对精密工作而言远远不够。你每级联一级,增益就乘一次,这正是为什么单单一对差分对很少能撑起全部故事。
Av(single stage) = -gm * ro ; magnitude gm*ro = intrinsic gain (tens to ~hundreds) ; gm = transconductance (signal current per input volt) ; ro = output resistance of the stage (how much voltage that current builds) ; the minus sign: a common-source stage INVERTS
把差分对的输出叠到第二级放大上,你就有了一个 运算放大器 的骨架:一个拥有巨大增益、两个输入(+ 与 −)和一个输出的 放大器。我们之所以想要这么大的增益,是为了能用 负反馈 把它大部分扔掉——用裸增益去换精度、可预测性,以及一个由电阻比值(而不是变幻莫测的晶体管参数)决定的闭环响应。(反馈那段故事是下一个台阶。)
两级 op-amp
经典教科书里的 op-amp 恰好由你现在已经认识的两个放大级搭成。第一级是带电流镜负载的差分对:它负责做差、共模抑制,以及第一份增益。第二级是一个 共源放大器——一个单管,接过第一级的输出再放大一遍,同时把输出摆动到接近电源轨。两级 gm·ro 相乘起来,轻松就能达到 1,000 到 100,000(60 到 100 dB)的开环增益。
但把两个高增益级背靠背叠在一起是危险的。每一级都会增加延迟(相位滞后),而一旦你用反馈把环路闭合,足够多的滞后就会把本来帮忙的负反馈变成*正*反馈——于是放大器不再稳定下来,而是开始振荡。解决之道是 频率补偿:跨接在第二级两端的一个小 电容(Cc)。借助密勒效应,它表现得像一个大得多的电容,刻意把放大器放慢,让它的增益在相位滞后变得致命之前就跌到 1 以下。
同一个补偿电容也决定了放大器的速度。在密勒补偿下,增益带宽积(GBW)等于输入对的跨导除以那个电容——gm1 / (2π·Cc)。而这里还藏着第二个速度上限:尾电流给 Cc 充电的快慢,限定了输出的最大变化率,也就是 压摆率(大约 I_tail / Cc)。小信号受 GBW 约束;大的阶跃则会先撞上压摆极限。
.ac dec 20 1 1G ; small-signal gain & phase vs frequency (1 Hz -> 1 GHz) .op ; check the DC bias point: is the tail splitting evenly? ; read off the .ac plot: ; DC gain = gain at low frequency (the 60-100 dB plateau) ; GBW = frequency where gain magnitude crosses 0 dB (=1) ; PM = 180 deg minus the phase lag at that 0 dB crossing
增益、摆幅与规格书
一份 op-amp 的数据手册就是一纸合同,少数几个数字几乎就能告诉你一切。开环增益(A_OL)是裸的、无反馈的增益——就是那几万倍。它故意做得这么大:反馈会拿它去换精度,你起步时手里越多,最终结果就越精确。GBW 告诉你这份增益如何随频率衰减;增益和带宽是一比一地此消彼长,所以一个 GBW 为 10 MHz 的 op-amp,只有到 1 MHz 才能给你 10 倍的增益。
输出摆幅是指:在晶体管离开饱和区、增益崩塌之前,输出能逼近电源轨多近——一个能摆到距每条轨 100 mV 以内的器件,在一个 1.8 V 的电源上浪费的电压,要远少于一个差了整整一伏才停下来的器件。输入失调电压是匹配不完美带来的小小固有误差:给两个输入喂相同的电压,真实 op-amp 的输出却并不恰好居中,就好像在输入端偷偷加了几毫伏。失调主要由失配和低频的 1/f(闪烁)噪声 主导,而宽带的本底嘶声则来自 热噪声(4kTR)。
这对管子抑制共有噪声的本事好不好,有它自己的招牌数字:共模抑制比(CMRR)——差模增益与共模增益之比,以 dB 计。80 dB 的 CMRR 意味着:放大器对你在意的那个差值的响应,要比对两个输入共有的垃圾的响应强 10,000 倍。它是差分对和良好匹配所做的一切的量化回报,也是模拟 信噪比 能在一颗嘈杂芯片里存活下来的原因之一。
把 op-amp 当作一块积木
一旦你信任了那几个数字,你就不再去操心里面的晶体管了。op-amp 变成了一块可复用的积木——一个有两个输入和一个输出的三角形——你把它接进更大的系统里,就像数字设计师例化一个加法器那样。内部的 小信号 细节是真实存在的,在你设计或调试它时确实要紧;但日常使用中,你是从它的规格书、而不是它的电路图来推理这块积木的。
而这些积木*无处不在*。一个 ADC 用 op-amp 和比较器(一个被逼到硬判决的差分对)来采样并数字化。一个 DAC 和一个 带隙基准 靠它们来稳住电压。滤波器、传感器前端,以及 PLL 内部的环路滤波器,全都是乔装打扮的 op-amp。把这一块积木学透,你就握住了大半个模拟 芯片 的万能钥匙。