1. 为什么折叠式共源共栅结构值得花时间吃透
模拟集成电路设计里,放大器是绕不开的基本功。你翻遍拉扎维那本经典教材,或者在公司内部的技术文档里找,会发现共源共栅(Cascode)结构出现的频率极高。原因很简单:它用相对简单的结构换来了可观的增益提升。但普通套筒式共源共栅(Telescopic Cascode)有个硬伤——输出摆幅被严重压缩,输入共模范围也窄,在低电源电压场景下几乎没法用。
折叠式共源共栅(Folded Cascode)就是来解决这个矛盾的。它把输入管和共源共栅管放在不同的电流支路上,输入信号从底部管子栅极进入,电流经过折叠节点后向上或向下流过共源共栅管。这样一来,输出摆幅比套筒式大了差不多一个过驱动电压的量级,输入共模范围也宽松不少。代价是多了一条电流支路,功耗和噪声会略高,但对于0.18μm工艺下1.8V供电的典型场景,这个折中是划算的。
我这次用Cadence Virtuoso在0.18μm工艺上完整走了一遍折叠式共源共栅放大器的设计流程,从手工计算到原理图仿真再到版图验证。整个过程踩了不少坑,也积累了一些书本上不会写的经验。这篇文章适合已经学过基础模拟电路、想动手做一次完整放大器设计的同学,也适合工作中需要快速回顾设计流程的工程师。我会把每一步的计算依据、仿真设置、参数调优过程都摊开来讲,你跟着做就能复现出一个可用的放大器。
2. 设计目标与整体架构拆解
2.1 先定指标,再谈结构
动手画原理图之前,必须把设计指标定清楚。没有指标约束的电路设计就是耍流氓。我这次设定的目标如下:
| 参数 | 目标值 | 说明 |
|---|---|---|
| 直流增益 | ≥60dB | 运放基本要求 |
| 单位增益带宽 | ≥50MHz | 中等速度场景 |
| 相位裕度 | ≥60° | 保证稳定性 |
| 输出摆幅 | ≥1.2Vpp | 差分输出 |
| 功耗 | ≤2mW | 单支路 |
| 电源电压 | 1.8V | 0.18μm典型值 |
| 负载电容 | 1pF | 片上负载 |
这些指标之间是互相拉扯的。增益要60dB,单级共源共栅在0.18μm下本征增益大概只有40-50dB,所以要么用增益提升技术,要么做两级。但两级运放需要米勒补偿,带宽和稳定性设计会更复杂。我选择单级折叠式共源共栅加增益自举(Gain Boosting)的方案,既能满足增益要求,又避免了多级补偿的麻烦。
2.2 折叠式共源共栅的架构选择
折叠式共源共栅有两种基本形态:PMOS输入折叠到NMOS共源共栅,或者NMOS输入折叠到PMOS共源共栅。选哪种取决于输入共模范围和输出摆幅的需求。
我选的是NMOS输入管、PMOS共源共栅管的方案。理由有三点:第一,NMOS的迁移率比PMOS高,同样的电流下输入管可以做得更小,寄生电容更低,有利于带宽;第二,输入共模范围可以做得比较低,适合前级直接耦合的场景;第三,PMOS共源共栅管的衬底可以接到源极,消除体效应,提高输出阻抗。
折叠节点的电压设定很关键。它必须足够低,让输入NMOS管工作在饱和区,同时又要足够高,让PMOS共源共栅管有足够的过驱动电压。在1.8V供电下,我通常把折叠节点设在0.6-0.8V左右。这个电压由尾电流源的过驱动和输入管的Vgs共同决定。
2.3 电流分配的逻辑
折叠式共源共栅的电流关系需要仔细算。假设输入对管各流过Iin,那么折叠节点处,PMOS共源共栅支路需要提供的电流是Iin加上从PMOS尾电流源注入的电流。通常的做法是让PMOS尾电流源和NMOS尾电流源提供相同的电流Iss,那么每条PMOS共源共栅支路的电流就是Iin + Iss/2。
这里有个经验值:Iin通常取总电流的1/3到1/2。Iin太小,输入管的gm不够,增益和带宽都上不去;Iin太大,折叠节点处的寄生电容充放电电流增加,速度反而可能下降。我这次取Iin = Iss/2,即输入管和PMOS尾电流源各承担一半的电流。总电流2mA的话,每条支路电流约1mA,输入管和PMOS负载各500μA。
3. 手工计算与参数初选
3.1 从增益公式反推器件尺寸
折叠式共源共栅的低频小信号增益可以写成:
Av ≈ gm1 × (gm3 × ro3 × ro1 || gm5 × ro5 × ro7)
其中gm1是输入管的跨导,gm3和gm5分别是NMOS和PMOS共源共栅管的跨导,ro是对应的输出电阻。简化一下,如果NMOS和PMOS的共源共栅输出阻抗相当,增益约等于gm1 × Rout,Rout是输出节点的总阻抗。
0.18μm工艺下,NMOS的本征增益gm×ro大概在15-20倍(约24-26dB),PMOS略低一些。单层共源共栅的输出阻抗大约是ro乘以(1+gm×ro),所以单边输出阻抗可以到几百kΩ量级。要得到60dB(1000倍)的增益,gm1需要做到大约1-2mS。
gm1 = 2×Iin / (Vgs1 - Vth1),取Iin = 500μA,过驱动电压Vov1 = 0.15V,则gm1 ≈ 6.7mS。这个值相当充裕,说明增益目标不难达到。实际上过驱动取0.2V左右更稳妥,gm1约5mS,配合增益自举后增益可以轻松超过60dB。
输入管的宽长比由饱和区电流公式决定:
Id = 0.5 × μn × Cox × (W/L) × Vov²
0.18μm工艺的μn×Cox大约在300-400μA/V²。取Vov = 0.2V,Id = 500μA,算得W/L ≈ 12.5。如果L取0.5μm(为了更好的输出阻抗和匹配),W就是6.25μm。实际我会取L = 0.6μm,W = 8μm,留一些余量。
3.2 共源共栅管的尺寸考量
共源共栅管的尺寸选择逻辑和输入管不同。它的gm不需要很大,因为增益主要由输出阻抗决定,但它的ro必须足够大。增大L可以有效提高ro,但会带来更大的寄生电容。0.18μm工艺下,共源共栅管的L通常取0.5-1μm。
我取NMOS共源共栅管的L = 0.8μm,W = 10μm,过驱动电压0.25V。PMOS共源共栅管L = 0.8μm,W = 20μm(PMOS迁移率低,需要更大宽度),过驱动0.3V。这些值不是一次算准的,后面还要在仿真中反复调。
3.3 尾电流源的设计
尾电流源用简单的电流镜实现。NMOS尾电流源提供2mA总电流,PMOS尾电流源也提供2mA。电流镜的参考电流从外部理想电流源给入,实际流片时会用带隙基准产生。
尾电流源的输出阻抗直接影响共模抑制比。为了提高匹配和输出阻抗,尾电流管的L取1μm以上,并采用共源共栅结构。不过共源共栅尾电流源会消耗额外的电压余量,在1.8V供电下需要仔细权衡。我这次先用简单电流镜,仿真看共模抑制比是否达标,不够再加共源共栅。
4. Cadence Virtuoso实操全流程
4.1 环境准备与库文件配置
打开Virtuoso之前,确认工艺库已经正确挂载。0.18μm工艺通常对应TSMC或SMIC的库,库名可能是tsmc18或smic18。在cds.lib文件中添加库路径:
DEFINE tsmc18 /path/to/your/pdk/tsmc18 DEFINE mylib ./mylib启动Virtuoso后,先建一个自己的设计库mylib,依附到tsmc18工艺库上。然后新建schematic cell,命名为folded_cascode_amp。
注意:工艺库的模型文件(model file)路径要在ADE L的Setup→Model Libraries中正确加载,否则仿真会报错找不到模型。通常PDK里会有
models/spectre目录,里面是.scs文件。
4.2 原理图绘制要点
画原理图时,器件从tsmc18库中调用。NMOS用nch,PMOS用pch,注意区分不同阈值电压的器件(如nch_25是2.5V器件,nch是1.8V器件)。0.18μm工艺的1.8V器件栅氧较薄,耐压只有1.8V左右,电源电压不能超过这个值。
绘制顺序建议从输入对管开始,然后画NMOS共源共栅管、PMOS共源共栅管、尾电流源,最后加偏置电路。每画完一个支路就检查一下连接关系,避免后面查线麻烦。
折叠节点的连线要特别注意。输入管的漏极和NMOS共源共栅管的源极相连,同时接到PMOS共源共栅管的漏极。这个节点在版图上会是一个比较关键的公共节点,寄生电容要尽量小。
偏置电压用理想电压源先给,方便前期调试。等电路功能验证通过后,再换成实际的偏置电路。理想电压源从analogLib库中调用vdc。
4.3 直流工作点仿真
原理图画完后,第一个要跑的仿真就是直流工作点(DC Operating Point)。在ADE L中设置:
- 分析类型:
dc - 保存所有节点电压和器件工作区
- 输出
dcOp信息
跑完仿真后,用Results→Print→DC Operating Points查看每个管子的区域。确保:
- 输入管在饱和区(region = 2)
- 共源共栅管在饱和区
- 尾电流管在饱和区
- 所有管子的Vds > Vdsat,且有一定余量(至少50mV)
如果发现某个管子在线性区,先检查偏置电压是否合理,再检查器件尺寸。常见问题是PMOS共源共栅管的源极电压太高,导致Vds不够。这时候需要降低折叠节点电压,或者增大PMOS管的W/L降低其过驱动。
我第一版就遇到了PMOS共源共栅管进入线性区的问题。折叠节点电压被输入管的Vgs推到了0.9V,而PMOS管的源极接在1.8V,Vds只有0.9V,减去过驱动后余量不足。解决办法是把输入管的W/L加大,降低Vgs,把折叠节点拉到0.7V左右。
4.4 交流小信号仿真
直流工作点正常后,跑AC仿真看增益和带宽。设置:
- 分析类型:
ac - 频率范围:1Hz到1GHz
- 扫描方式:对数,每十倍频程20个点
- 输入:在输入端加
ac源,幅度设为1
输出看差分输出节点的电压。用Results→Direct Plot→AC Gain & Phase可以直接看幅频和相频曲线。
我第一版仿真结果:低频增益约52dB,单位增益带宽约35MHz,相位裕度约55°。增益不够,带宽也差一点。分析原因:输出阻抗不够高,gm1也偏小。
调优措施:
- 增大输入管W,提高gm1
- 增大共源共栅管L,提高ro
- 适当增大电流,但功耗不能超
第二轮把输入管W从8μm加到12μm,共源共栅管L从0.8μm加到1μm,电流从2mA加到2.5mA。增益提升到58dB,带宽到48MHz,相位裕度62°。还是差一点增益。
4.5 增益自举电路的加入
单级折叠式共源共栅在0.18μm下做到60dB确实吃力。我加了一个简单的增益自举辅助放大器。辅助放大器是一个差分对,检测共源共栅管的源极电压,反馈到其栅极,等效于把共源共栅管的gm提高了A倍,输出阻抗也提高A倍。
辅助放大器的设计要点:
- 增益不需要很高,20dB左右即可
- 带宽要足够,至少和主放大器相当
- 输入共模范围要覆盖共源共栅管的源极电压
- 功耗要小,每条辅助支路控制在100μA以内
加了增益自举后,低频增益跳到了72dB,带宽略降到45MHz,相位裕度58°。相位裕度偏低,需要调零电阻或者稍微降低增益自举的带宽。
实操心得:增益自举的辅助放大器带宽不要做太高,否则会引入额外的极点,恶化相位裕度。辅助放大器的单位增益带宽取主放大器带宽的1.5-2倍比较合适。
4.6 稳定性与相位裕度调优
相位裕度是运放设计的生命线。58°虽然能用,但留的余量不够。我做了两件事:
第一,在输出节点加了一个小电容(约0.2pF)到地,引入一个低频极点,同时把主极点往低频推。这个电容不能太大,否则带宽掉太多。
第二,调整增益自举辅助放大器的补偿电容,降低其带宽,让它的极点远离主放大器的单位增益频率。
调完后相位裕度到65°,带宽42MHz,增益70dB。这个结果可以接受。
4.7 噪声与失配仿真
噪声仿真在ADE中选noise分析,输出噪声用Results→Direct Plot→Noise查看。输入参考噪声在1kHz处约15nV/√Hz,主要贡献来自输入对管和PMOS尾电流源。折叠式结构的噪声比套筒式略高,这是折叠支路多带来的代价。
失配仿真用蒙特卡洛分析。设置monteCarlo分析,跑200次,看失调电压的分布。0.18μm工艺下,输入对管的失调电压标准差大约2-3mV。如果失调要求高,需要增大输入管面积,或者加斩波稳定技术。
5. 版图设计与后仿真
5.1 版图布局规划
原理图仿真通过后,开始画版图。折叠式共源共栅的版图布局有几个原则:
- 输入对管放在最左边,做共中心对称(common centroid)布局,减小梯度失配
- 电流镜管也做对称布局
- 折叠节点走线尽量短,减小寄生电容
- 电源线和地线用宽金属,减小IR drop
- 敏感节点加保护环(guard ring),隔离衬底噪声
我用的版图层次:M1走内部连线,M2走电源和地,M3走输出和偏置。0.18μm工艺通常有6层金属,够用了。
5.2 匹配与寄生优化
输入对管的匹配直接决定失调。共中心对称布局把两个管子拆成多个finger,交叉排列。比如每个管子拆成4个finger,按ABBA的方式排列。这样即使工艺有梯度,两个管子看到的平均环境也是一样的。
寄生电容方面,折叠节点和输出节点是重点。折叠节点的寄生电容会降低带宽,输出节点的寄生电容会影响相位裕度。走线用最小宽度,能短则短。共源共栅管的漏极和栅极走线避免平行长距离走线,减小耦合电容。
5.3 后仿真流程
版图画完后,用Calibre或Assura做LVS(版图与原理图一致性检查)和PEX(寄生参数提取)。PEX会生成带寄生参数的网表,用这个网表跑后仿真。
后仿真结果通常比前仿真差一些。我这次后仿真增益降到65dB,带宽降到38MHz,相位裕度60°。寄生电容吃掉了不少性能。如果后仿真结果不达标,需要回到版图优化走线,或者回到原理图增大设计余量。
注意:PEX提取时选择正确的提取模式。
C+CC模式提取电容和耦合电容,精度够用;R+C+CC模式提取电阻,精度更高但仿真时间更长。前期用C+CC快速迭代,最终签核用R+C+CC。
6. 常见问题与排查技巧实录
6.1 直流工作点不收敛
仿真报错DC convergence failed是新手最常遇到的问题。原因通常是电路存在正反馈环路,或者某个节点没有直流通路。
排查步骤:
- 检查所有节点是否有到地的直流通路,特别是高阻抗节点
- 在ADE中设置
dc分析的homotopy方法为gmin或source - 给关键节点加初始条件(
.ic语句) - 先用理想电压源替代偏置电路,确认主电路能收敛
我遇到过一次折叠节点不收敛,原因是PMOS尾电流源和NMOS尾电流源同时给电流,节点电压被推到电源轨。解决办法是加一个大的电阻(1GΩ)到地,给节点一个直流通路。
6.2 增益远低于预期
增益不够的原因很多,按优先级排查:
| 可能原因 | 检查方法 | 解决措施 |
|---|---|---|
| 管子不在饱和区 | 看dcOp的region | 调偏置或尺寸 |
| 输出阻抗低 | 看ro值 | 增大L,加增益自举 |
| gm1太小 | 看gm值 | 增大W或电流 |
| 负载效应 | 看输出节点连接 | 检查是否有意外负载 |
| 寄生电容旁路 | 看AC曲线 | 优化版图 |
我第一版增益只有52dB,查了半天发现是PMOS共源共栅管的衬底接错了,体效应导致阈值电压变化,管子实际工作点偏移。把衬底接到源极后,增益恢复到58dB。
6.3 相位裕度不足
相位裕度低于45°时,阶跃响应会有明显振铃,低于30°可能振荡。提升相位裕度的方法:
- 降低主极点频率(加补偿电容)
- 提高次极点频率(减小该节点阻抗)
- 加调零电阻(米勒补偿时)
- 降低增益自举辅助放大器的带宽
我试过在输出节点加0.5pF电容,相位裕度从55°提到70°,但带宽从45MHz掉到25MHz。后来改用0.2pF,配合辅助放大器带宽调整,找到了平衡点。
6.4 版图LVS报错
LVS报错通常是连线错误或器件参数不匹配。常见错误:
- 器件finger数不一致:原理图是1个管子,版图拆成了4个finger,LVS会认为器件不匹配。需要在原理图中也设置相同的finger数,或者用
m参数。 - 衬底连接错误:NMOS的衬底必须接最低电位,PMOS接最高电位。如果接错,LVS会报错。
- 文本层缺失:版图中的pin没有对应的label层,LVS找不到端口。
排查LVS时,先看报错信息中的器件名和节点名,对照版图定位。Calibre的RVE工具可以高亮显示不匹配的器件,非常方便。
6.5 后仿真性能下降太多
后仿真比前仿真差是正常的,但差太多就不正常了。如果增益掉了10dB以上,带宽掉了一半,说明版图寄生太大。
重点检查:
- 输出节点和折叠节点的走线是否太长
- 共源共栅管的漏极扩散区面积是否过大
- 是否有长距离平行走线引入耦合电容
- 电源地线是否太窄导致IR drop
我这次后仿真增益掉了5dB,带宽掉了7MHz,在可接受范围内。如果掉太多,优先缩短关键节点走线,或者换用更高层金属(寄生电容更小)。
7. 几个让我少走弯路的实操习惯
第一个习惯是每改一次参数就存一个版本。Virtuoso的schematic和ADE state都可以存多个版本,命名带上日期和关键参数,比如amp_gain60_bw50_v3。这样调优过程中可以随时回退,不会把自己绕进去。
第二个习惯是仿真前先跑一遍Check & Save,确保没有悬空节点和短路。Virtuoso的Check功能能查出大部分连接错误,比仿真报错后再查快得多。
第三个习惯是AC仿真时同时看幅频和相频曲线,不要只看增益。相位裕度不够的话,增益再高也没用。我通常把Direct Plot设置成同时显示gain和phase,一眼就能判断稳定性。
第四个习惯是版图完成后先跑LVS再跑PEX。LVS过了说明连接没问题,PEX才有意义。LVS没过就跑PEX,提取出来的网表也是错的,白费时间。
第五个习惯是保留一份理想源的测试bench。偏置电路换上去之后,如果仿真结果异常,可以快速切回理想源,判断是偏置电路的问题还是主电路的问题。这个bench在debug时能省很多时间。
折叠式共源共栅放大器在0.18μm工艺下的设计,说到底就是增益、带宽、功耗、摆幅这几个指标的折中游戏。手工计算给你一个起点,仿真帮你找到方向,版图决定最终性能。我这次从零开始到后仿真通过,大概花了三天时间,其中版图和后仿真占了一半。如果你刚开始做,建议先把原理图仿真跑通,指标不用追求极致,留20%余量给版图寄生。等第一版完整走通后,再回头优化参数,心里就有底了。