开年又到了模拟IC面试季,我每年这时候都会把几个老朋友翻出来重新推一遍:共源极、共栅极、源随器,也就是CS、CG、SF这三个单级放大器。很多刚入行的朋友觉得小信号分析就是背几个公式——CS增益是-gmRD,CG增益是gmRD,SF增益接近1——可真到画版图、调电路、被面试官追问的时候,发现这三个电路背后的模型、阻抗关系、密勒效应、体效应全都搅在一起,脑袋里一团浆糊。
我自己当年也是这么过来的。后来把拉扎维和Allen的书来回翻了三遍,把每个拓扑的等效电路亲手推了两三遍,才真正把“小信号分析”这四个字变成直觉。这篇文章打算把这三个单级放大器放在一起,从模型建立、增益推导、输入输出阻抗、频率特性一直聊到选型思路和面试高频坑。适合正在学模拟IC设计的学生、准备面试的求职者,以及那些想回头把基础打扎实的在职工程师。
1. 小信号分析前,先把这四件事想清楚
1.1 小信号等效模型到底在等效什么
所谓小信号分析,本质上是把MOS管这个非线性器件,在直流工作点附近做线性化处理。你在栅极上加一个很小的交流变化量,漏极电流也会跟着做一个近似线性的变化,这个变化量的大小由跨导gm决定。gm的定义是漏电流对栅源电压的偏导,在饱和区平方律模型下等于μnCox(W/L)(VGS-VTH),也等于2ID/(VGS-VTH),还等于根号下2μnCox(W/L)ID。三个表达式对应不同的设计视角:第一个式子告诉你过驱动电压固定时w/l决定gm,第二个式子告诉你电流固定时过驱动电压越小gm越高,第三个式子告诉你尺寸固定时电流开根号决定gm。现代短沟道器件不一定精确符合平方律,但这组关系的物理趋势依然成立,工程上够用。
沟道长度调制效应则体现为输出电阻ro。漏源电压变化时有效沟道长度跟着变,漏电流就不是完全平坦的,等效成一个有限输出电阻,近似为1/λID,也写成VA/ID。这里有个工程直觉:沟道越长ro越大,电流越小ro越大。所以想不做大增益,要么把电流做小,要么把沟道拉长,代价分别是速度变慢和面积变大。
另一个容易被忽略的是体效应跨导gmb。当源极和衬底不短接时,衬底电压变化会影响阈值电压,等效出一个从衬底到漏端的受控电流源,gmb约等于ηgm,η通常在0.1到0.3之间。CS结构源极接地,衬底通常也接地,体效应可以忽略;但源随器这种源不接地的电路,体效应就必须算进去。
1.2 开始分析前,先把“四步法”立起来
我每次手算小信号电路都按固定流程走,这样不容易漏东西:
- 第一步,确定直流工作点。检查管子是否在饱和区,过驱动电压、电流、vds余量是否合理。这一步做错了,后面全白算。
- 第二步,所有直流电源置零。VDD和VSS对交流都是地,理想电流源在小信号下是开路。很多初学者这一步卡住,总觉得恒流源应该短路,其实恒流源的交流阻抗是无穷大,等效成断路。
- 第三步,把每个MOS管替换成小信号模型,包括gm受控源、ro、gmb受控源,注意受控源的方向要和vgs、vbs的参考方向一致。
- 第四步,列KCL和KVL,解出增益、输入阻抗、输出阻抗。这步考验的是电路方程的熟练度,算多了自然快。
这套流程看着朴素,但能解决九成以上单级放大器的问题。下面的CS、CG、SF全部建立在它之上。
2. 共源极(CS):反相放大,密勒效应的重灾区
2.1 增益推导:从忽略ro到计入ro
共源极是最基础的电压放大结构,输入加在栅极,输出取自漏极,源极接地。小信号下受控电流源gmvgs,其中vgs就是输入电压Vin,电流方向从漏到源。如果漏极接一个电阻RD到VDD,那么在漏端节点列KCL:gmVin + Vo/RD = 0,得到Av = -gm*RD。负号表示反相,物理直觉是栅压上升导致漏电流增大,电阻上压降增大,漏端电位下降。
计入ro之后,受控电流源并联一个ro到地,漏端挂的两个阻抗是RD和ro的并联。此时Av = -gm*(ro ∥ RD)。这个式子值得多看一眼:增益本质上是“输入电压转化为电流的能力gm”乘以“漏端看到的总阻抗”。想提高增益,要么提高gm,要么提高漏端等效阻抗。这就是为什么模拟设计里常把负载做成电流源,因为理想电流源的ro可以做得很大。
我还有一个推导习惯:从漏端看进去的阻抗是ro∥RD,而不是单纯的RD。这一个细节在计算输出阻抗和频率响应时特别容易踩坑。从漏端节点向电路内部看,栅极交流接地意味着受控源gm*vgs=0,剩下的就是一个ro并联RD,所以Rout = ro ∥ RD。
2.2 输入阻抗、输出阻抗与密勒带宽
CS的低频输入阻抗是无穷大的,栅极氧化层是绝缘体,交流下没有电流流入栅端,这是MOS管做电压放大的最大优势。实际电路中输入阻抗由偏置电阻决定,但原理上这一点让CS可以轻松驱动高阻前级。
频率特性就没这么舒服了,密勒效应是CS绕不开的问题。栅源电容Cgs跨接在输入和地之间,不做倍乘;真正麻烦的是栅漏电容Cgd,它跨接在输入和输出之间,输入输出有增益Av,所以从输入端看到的等效电容约等于Cgd*(1+gm*RD)。这个倍增后的电容加上Cgs,直接决定了输入极点频率。输出端还有一个由Cgd和Cdb构成的极点,通常在更高频。整个CS放大器的带宽往往由输入极点主导,就是因为密勒电容把输入电容撑大了好几倍。
我在调电路时经常遇到这种情况:明明管子速度很快,结果整个放大器带宽上不去,查来查去发现就是Cgd的密勒效应在捣鬼。解决思路要么降低源阻抗Rsig,要么减小增益,要么用共栅管做cascode隔离密勒,后者的思路在后面CG部分会讲到。
2.3 负载选型对CS的影响
CS的负载选择直接决定增益和输出摆幅,实际项目里常见四种方式。电阻负载最简单,增益为-gmRD,线性度尚可,但无源电阻在工艺角下偏差大,面积也不小。二极管连接的MOS管负载,增益由两个管子的宽长比决定,鲁棒性好但输出电压摆幅受限,而且从漏端看进去阻抗低,增益做不高。电流源负载用PMOS挂VDD的恒流源,等效阻抗是PMOS的ro,可以做很大,所以增益高,代价是输出摆幅需要留足两个管子的饱和电压。我见过不少应届生在选型时只盯着增益,忽略了输出摆幅,结果电路搭出来直流工作点都不对,输出直接顶到电源轨。
选负载还要考虑一个点:如果你想用Cadence/SPICE验证手算结果,建议先在简单电阻负载上验证CS的增益公式,再换成电流源负载对比。这样可以快速分清哪些误差来自模型二阶效应,哪些来自自己的推导疏忽。
3. 共栅极(CG):同相宽带好,但输入阻抗是个低阻
3.1 CG增益推导:同相但公式长得像CS
共栅极的输入加在源极,栅极接交流地,输出取自漏极。分析时要注意vgs的符号,这里vgs = 0 - Vin = -Vin,所以受控源是-gmVin。但这个负号并不会让输出反相,因为电流方向和节点方程组合起来最终得到同相放大。我直接给出计入ro的推导结果:在漏端列KCL,得到Vo/Vin = (gm + 1/ro) * (ro ∥ RD),约等于gm(ro ∥ RD)。注意这里是正号,这是CG和CS在增益符号上的本质区别。
很多初学者第一次看到这个结果会愣住:CG的增益大小和CS几乎一样,只是极性不同。物理直觉是这样:源极输入上升,vgs下降,漏电流减小,漏端电压上升,所以输出和输入同相。这种“源极控制电流,电流控制漏端电压”的路径,本质上和CS是同一套gm乘以阻抗的逻辑。
如果计入体效应,源极电位相对于衬底变化,还会多出一个gmb项,增益修正为(gm+gmb)*(ro∥RD)。衬底和源极不短接的电路中,这个修正不能忽略,否则手算和仿真对不上。
3.2 为什么CG输入阻抗低:1/gm的由来
CG最鲜明的小信号特征是输入阻抗低,约等于1/gm。这个特性让很多人困惑:MOS管栅极输入阻抗明明无穷大,为什么从源极看进去就变成低阻了?
关键在于反馈。想象你在源极加一个小电压增量vx,vgs变成-vx,管子会产生一个-gmvx的电流变化,这个电流会从源端“抽走”或者说“抵抗”你施加的电压变化。等效到输入端,表现为一个很小的阻抗。计入ro后的完整公式是Rin = (RD + ro)/(1 + gmro),当gmro远大于1时,约等于1/gm + RD/(gmro),主体还是1/gm量级。RD换成电流源负载,输入阻抗依然大约是1/gm。
1/gm的量级是多少?如果gm是2mS,那么输入阻抗大约是500Ω,这对很多低阻信号源是友好的,但对高阻前级就是灾难。所以CG一般不会单独接在CS后面直接做电压放大,因为CS输出阻抗高,分压损失太严重。它更适合做电流输入、电压输出的变换级,或者作为cascode叠在CS上面。
3.3 为什么CG是宽带回路的常客
CG没有密勒效应的原因是结构性的,栅漏电容Cgd跨接在漏极和栅极之间,而栅极是交流地,所以Cgd根本没有跨接在输入和输出之间,不存在电压增益的倍增。CG的输入极点和输出极点都相对干净,做宽带放大器时比CS从容很多。
CG还有一个隐藏技能:从漏端看进去的输出阻抗可以被源端阻抗抬高。如果源极接了一个电阻Rs,那么从漏端看进去的阻抗约为ro*(1+gm*Rs)+Rs。这个式子就是cascode结构输出阻抗极高的来源。CS管把信号转换成电流,CG管当作共栅放大、同时把CS管漏端看到的阻抗抬高,两者一叠,既保留了CS的高输入阻抗,又消除了密勒效应,还提升了输出阻抗。想明白这一点,你对cascode的理解就超过了大多数初学者。
实际项目中CG常用于输入匹配场景。比如一个50Ω的射频接收前端,CG放大器把输入阻抗设计到50Ω附近,直接省掉外部匹配网络。代价是噪声系数不算低,所以噪声要求极高的链路里会换别的方案。
4. 源随器(SF):单位增益的缓冲和电平移位
4.1 源随器增益推导:为什么永远差一点点
源随器也叫共漏极放大器,输入在栅极,输出在源极,漏极接VDD交流地。小信号下vgs = Vin - Vout,受控源是gm*(Vin - Vout)。如果源极接一个等效阻抗RL到地,那么输出节点KCL:gm*(Vin - Vout) = Vout/RL,解得Av = gmRL/(1 + gmRL) = RL/(RL + 1/gm)。当gm*RL远大于1时,Av趋近于1,但永远小于1。
这个“永远小于1”在实际电路里很重要。很多人默认源随器增益就是1,其实计算gm只有1mS、RL只有10kΩ的情况,gmRL就是10,Av大约是0.91,差了快1成。在诸如ADC参考缓冲、LDO反馈分压这种要求精确比例的场合,这一个点的增益损失就足以影响整体精度。计入ro和体效应后,Av约等于(gm+gmb)(ro∥RL)/(1+(gm+gmb)*(ro∥RL)),还是小于1。
为什么源随器依然能做缓冲?因为它的电压增益接近1,但电流增益很大。栅极几乎不取电流,源极可以输出电流驱动负载,本质是把一个高阻电压信号变成一个低阻电压源。
4.2 输出阻抗与电平移位
源随器的输出阻抗大约等于1/gm,同样受体效应影响会降到1/(gm+gmb)左右。这个低输出阻抗是它能当缓冲器的原因。直观理解:你把源极电压往上抬一点,vgs减小,受控源下拉电流减小,相当于源极对外呈现的“抗抬升能力”很弱,所以阻抗低。
源随器还有一个容易被忽视的直流功能:电平移位。输出直流电位约等于输入直流电位减去一个Vgs,也就是减去VTH+Vov。在电平转换电路里,这个特性经常被用来把信号拉低到下一级需要的共模范围。不过注意,电平移位量本身受工艺角、温度影响,跟电流和尺寸都有关系,不能指望它像理想稳压管那样精确。
4.3 体效应:源端不接地的代价
源随器源极不再接固定电位,衬底如果接固定电位,vbs不为零,体效应就出来了。gmb的存在会降低源随器的增益,也会降低输出阻抗。如果工艺允许把源极和衬底短接,比如PMOS放在单独的N阱里,可以消除这个效应。用NMOS做源随器时,如果衬底必须接地,那就要在增益预算里把体效应的影响吃进去。
我踩过的坑是:手算源随器增益按1算了,仿真出来只有0.9,查了很久才发现是体效应和负载阻抗的双重作用。所以现在我做源随器都会写清楚“增益不是1,而是gmR/(1+gmR)”这个式子,r并且把gmb考虑进去。
5. 三种单级放大器横向对比与选型思路
5.1 一张表看清三兄弟的差异
把三个结构放在一起对比,很多细节会一目了然:
| 结构 | 增益表达 | 极性 | 输入阻抗 | 输出阻抗 | 密勒效应 | 典型用途 |
|---|---|---|---|---|---|---|
| 共源极CS | -gm(ro∥RD) | 反相 | 极高 | 中到高 | 严重 | 通用电压放大 |
| 共栅极CG | +gm(ro∥RD) | 同相 | 低,约1/gm | 高 | 无 | 电流缓冲、宽带、cascode |
| 源随器SF | ≈1,略小于1 | 同相 | 极高 | 低,约1/gm | 小 | 电压缓冲、电平移位 |
这个表不是让你背的,而是让你在选结构时快速定位。需要反相且高增益,CS是第一选择;需要同相和宽带,CG要纳入考虑;需要驱动低阻负载,SF跑不掉。三种结构组合起来,就是两级运放、cascode、输出级这些常用单元的基础。
5.2 从系统指标反推结构选择
我在实际设计里很少直接问“这里用哪个结构”,而是先看系统指标,反推需求。输出要驱动大电容负载,就要低输出阻抗,那SF是天然候选。输入信号源阻抗很高,后面需要放大器不汲取信号电流,那CS的栅极输入最合适。如果是电流输入、希望转换成电压信号,CG的低输入阻抗就很自然。
增益要求特别高时,单级CS用电流源负载能做到40dB以上,但再往上就困难了,此时要么加cascode,要么搞两级。带宽要求特别高时,避免在信号路径上出现密勒倍增,所以要么用CG,要么用cascode隔离,要么把增益分摊到多级。这些都是从系统需求反推结构的好例子。
5.3 从单级走向级联:cascode和两级运放
很多人学完单级之后会问:那实际芯片里为什么都是看起来很复杂的结构?答案是把单级放大器串起来用。cascode就是CS+CG的串联,CS负责把电压变电流,CG负责把电流从低阻节点搬到高阻节点,既保留高增益又削弱密勒效应。两级运放常见的是CS加CS,或者CS加SF再驱动负载,每一级都可以在三个基本结构里选。
理解单级的小信号特性后,看这些复杂结构就不会怕了。你可以按“拆解成一个个单级”“逐级算增益和阻抗”“再做级间负载匹配”的思路去分析,而不是上来就想硬解整个电路。这也是我把这篇文章命名为One-Stage AMPs的原因——单级是骨,多级是肉,骨没搭好,肉全白长。
6. 常见错误排查与面试高频考点实录
6.1 直流工作点都没对,小信号全是空谈
这是最经典的新手问题。小信号模型有一个大前提:管子工作在饱和区。如果管子在线性区或者截止区,gm、ro的表达式全部失效。我见过有人拿CS增益公式算出一个很大的增益,结果仿真出来完全对不上,一查发现漏端电压太低,管子已经进了线性区,RD上压降太大导致没给MOS留足vds余量。所以动手算小信号之前,先花两分钟检查直流点,看看vds是否大于vov,所有管子是不是都在饱和区。
6.2 符号、方向等低级错误
另一个高频错误是vgs的符号。CS里vgs=Vin没问题,但CG里vgs=-Vin,源随器里vgs=Vin-Vout。我建议每画一个等效电路,都先把gmn受控源的方向标上去,再写KCL。受控电流源方向标错,算出来的结果可能完全相反。体效应也一样,vbs的参考方向是衬底到源,或者源到衬底,不同的教材定义不一样,自己心里要统一一套体系。
6.3 面试现场追问的几种变体
面试官围绕这三个电路能问的花样很多,核心就几类。第一类是“推导增益,不要忽略ro”,考察你会不会在漏端做ro和负载的并联。第二类是“CG输入阻抗为什么低”,考察物理直觉,最好用反馈视角解释。第三类是“源随器什么时候增益不是1”,考察gm和负载阻抗的关系。第四类是“CS带宽为什么上不去,怎么改进”,标准答案是密勒效应,改进方向是cascode或降低源阻抗。
还有一类更综合的变体:给你一个信号源阻抗50Ω,要求放大器输入匹配且增益不低于10dB,让你画一个一级放大结构。这时候你如果只能想到CS,说明你还没理解CS的高输入阻抗在这种场景下反而是问题。正确路径是先想到CG的输入阻抗匹配特性,再确认增益够不够。
6.4 用Spectre/SPICE验证手算结果
我强烈建议初学者把手算公式和仿真对照起来。在Cadence Virtuoso里搭一个最简单的testbench:CS放大器,输入用直流偏置加上1V交流小信号,做AC仿真,看增益曲线低频平台是不是等于-gm(ro∥RD),再用stb方法打一下输入输出阻抗。如果你发现仿真和手算对不上,先排查模型参数是不是没有定义沟道长度调制,再确认仿真器里用的MOS模型是否包含体效应。很多时候误差来源于工艺库的模型比你手算用的平方律模型复杂得多,这时候能对上数量级就算正确。
最后再分享一个小技巧:我自己在做小信号分析时会把gm、ro、gmb三个参数先写在纸上,再开始画等效电路。参数都不清楚就开始列方程,通常只会越算越乱。这个习惯救了我无数次,希望也能帮你把CS、CG、SF这三个老朋友真正变成肌肉记忆。