模拟CMOS放大器设计:从结构选型到流片验证的工程实践总结
1. 为什么“模拟CMOS放大器”值得反复总结模拟CMOS集成电路设计里放大器是绕不开的第一道坎。不管是刚进实验室的研一新生还是做了几年混合信号的老手手头总会攒着几套自己反复迭代过的放大器结构。原因很简单几乎所有的模拟模块最终都能拆解成某种形式的放大器。比较器是开环放大器带隙基准里藏着误差放大器开关电容电路的核心是运算放大器就连LDO的本质也是一个负反馈放大器环路。我见过不少初学者一上来就啃拉扎维那本教材的第三章把共源、共栅、源跟随、共源共栅的增益公式背得滚瓜烂熟但真到了要设计一个具体指标的两级运放时却不知道从哪下手。问题出在教材讲的是分析工程要的是综合。分析是给定电路算指标综合是给定指标选电路。这两者之间的鸿沟只能靠反复总结和实际流片来填。这篇总结面向的是已经学过基础模拟电路、准备动手设计第一个完整放大器、或者想系统梳理CMOS放大器知识体系的读者。我会从结构选型的底层逻辑讲起把单级到两级、从差分对到共源共栅的演进脉络理清楚然后落到具体的参数计算、仿真验证和版图注意事项上。所有内容都基于我在实际项目中的经验不是教材的复述。提示本文涉及的工艺参数均以某通用0.18微米CMOS工艺为参考具体数值在不同工艺节点下会有差异但设计思路是通用的。2. 放大器结构选型的底层逻辑2.1 从“增益不够”这个永恒问题说起做模拟设计的人最常挂在嘴边的一句话就是“增益不够”。单管共源放大器的本征增益只有gm乘以ro在0.18微米工艺下一个最小尺寸的NMOS本征增益大概只有十几到二十几换算成dB也就二十多dB。而一个实际的两级运放直流增益动辄要求60dB以上也就是1000倍以上。这中间的差距就是各种放大器结构要解决的问题。为什么增益这么重要因为增益决定了反馈系统的精度。一个闭环增益为A的负反馈系统其闭环误差与开环增益成反比。开环增益越高闭环越接近理想。对于精度要求12位以上的系统开环增益通常需要80dB以上。这就是为什么我们不得不用多级结构或者共源共栅结构来堆增益。但增益不是白来的。提高增益的每一种手段都会在其他指标上付出代价。共源共栅提高输出阻抗代价是输出摆幅减小。多级级联提高增益代价是频率补偿变得复杂。这些取舍才是放大器设计的核心。2.2 单级放大器的三种基本形态与适用边界CMOS单级放大器本质上只有三种共源、共栅、源跟随。共栅的输入阻抗低源跟随的增益小于1真正作为电压放大主力的是共源结构。但共源结构单独用的时候增益和摆幅是一对矛盾。我通常这样判断如果目标增益在20dB以内输出摆幅要求又比较宽单管共源加电流源负载就够了。如果增益要求到30dB左右可以考虑共源共栅但要仔细算输出摆幅还剩多少。如果增益要求超过40dB单级基本不可能必须考虑两级。这里有个经验公式可以快速估算对于共源共栅结构输出摆幅大约损失两个过驱动电压。假设电源电压1.8V每个管子过驱动电压0.2V那么输出摆幅大概还剩1.8减去4个0.2也就是1.0V左右。如果信号摆幅要求1.2V那共源共栅就不合适了。2.3 差分结构为什么成为标配单端放大器在实际芯片里几乎见不到原因不是增益不够而是抗共模干扰和抑制电源噪声的能力太差。差分结构通过对称性把共模干扰和偶次谐波抵消掉同时提供了双端输出的灵活性。但差分对也有它的代价。首先它需要尾电流源而尾电流源的输出阻抗直接影响共模抑制比。其次差分对的失调电压与负载失配和输入对管失配直接相关版图对称性要求极高。第三差分对的噪声比单端结构多了一倍因为输入对管和负载管都贡献噪声。我在实际项目中总结了一个判断准则如果系统对电源噪声和共模干扰敏感差分结构是必须的如果只是做一个内部偏置电路单端结构反而更省面积和功耗。不要为了差分而差分。3. 核心细节解析与实操要点3.1 共源共栅结构的增益提升到底怎么算共源共栅的核心思想是用一个共栅管把输入管的漏极电压“屏蔽”起来使得输入管的漏极电压波动很小从而其输出阻抗从ro提升到gm乘以ro再乘以ro。具体来说一个共源共栅结构的输出阻抗近似为Rout ≈ (gm2 gmb2) * ro2 * ro1 ro1 ro2其中下标1是输入管下标2是共栅管。在典型工艺下gm乘以ro大约在20到40之间所以共源共栅的输出阻抗大约是单管的20到40倍对应增益提升约26到32dB。但这里有个容易踩的坑共栅管的体效应。如果共栅管的体没有单独接源而是接最低电位那么体效应系数gmb会引入额外的输出阻抗提升但同时也让共栅管的阈值电压随源电压变化导致非线性。我在早期项目中就吃过这个亏仿真时增益很高实测时失真严重后来发现是体效应导致共栅管的工作点漂移。解决办法很简单如果工艺允许把共栅管的体接到它的源消除体效应。如果工艺不支持那就把共栅管的过驱动电压设大一点减小体效应的影响。3.2 两级运放的频率补偿米勒补偿的代价与优化两级运放绕不开频率补偿。最经典的是米勒补偿在第二级输入和输出之间跨接一个电容Cc。这个电容利用米勒效应在第一级输出端等效出一个放大的电容从而把主极点推向低频实现极点分裂。但米勒补偿有个致命问题右半平面零点。这个零点来自Cc的前馈通路它会让相位进一步下降严重时导致系统不稳定。解决右半平面零点的方法有三种串联电阻法在Cc上串联一个电阻Rz让零点从右半平面移到左半平面或者无穷远。Rz的理想值大约是1/gm2其中gm2是第二级跨导。但gm2随工艺和温度变化所以实际设计中常用一个工作在线性区的MOS管来代替电阻让其阻值跟踪gm2的变化。共源共栅补偿用共源共栅结构代替第二级消除前馈通路。这种方法效果好但输出摆幅损失大。电流缓冲器法在Cc和输出之间插入一个电流缓冲器阻断前馈通路。这种方法在低压工艺中越来越流行。我个人的经验是对于0.18微米及以上工艺串联电阻法最实用对于先进工艺电流缓冲器法更有优势。但不管用哪种方法补偿电容Cc的值都需要仔细优化。Cc太大会降低单位增益带宽Cc太小则相位裕度不够。通常Cc取负载电容的0.2到0.5倍具体要看第一级和第二级的跨导比。3.3 噪声与失调差分对设计的隐形陷阱差分对的噪声和失调是很多初学者容易忽略的问题。噪声方面输入对管的闪烁噪声与面积成反比所以增大输入对管的面积可以降低闪烁噪声。但增大面积会增大寄生电容降低带宽。这是一个典型的折中。失调方面差分对的失调电压主要来自三个方面输入对管的阈值电压失配、负载管的阈值电压失配、以及尾电流源的不匹配。其中输入对管的失配贡献最大因为它的失配直接折算到输入端。根据Pelgrom模型阈值电压失配的标准差与器件面积的平方根成反比。所以要降低失调就要增大输入对管的面积。但这里有个反直觉的地方增大输入对管面积并不总能降低失调。如果版图不对称增大的面积反而会放大失配。我见过一个案例设计者把输入对管面积增大了一倍但版图布局时把两个管子放得不对称结果失调反而变大了。所以版图对称性比面积更重要。输入对管必须采用交叉指状结构并且周围加dummy管保证刻蚀和应力环境一致。注意差分对的尾电流源也必须对称。如果尾电流源采用电流镜结构镜像管的匹配性直接影响共模抑制比。尾电流源的输出阻抗也要足够高否则共模增益会恶化。4. 实操过程与核心环节实现4.1 从指标到结构的完整设计流程假设我们要设计一个两级运放指标如下直流增益大于80dB单位增益带宽10MHz相位裕度大于60度负载电容2pF电源电压1.8V功耗小于1mW。第一步确定结构。80dB增益单级共源共栅最多也就40到50dB所以必须两级。第一级用差分共源共栅提供高增益第二级用共源提供输出摆幅和驱动能力。第二步分配增益。假设第一级增益60dB第二级增益20dB总共80dB。第一级用共源共栅输出阻抗高容易实现60dB。第二级用共源增益20dB也合理。第三步分配电流。总功耗1mW电源1.8V总电流约0.56mA。第一级差分对需要尾电流假设每边0.1mA尾电流0.2mA。第二级需要驱动2pF负载假设电流0.3mA。偏置电路约0.06mA。第四步计算管子尺寸。以第一级输入对管为例假设过驱动电压0.15V则gm1 2Id/Vov 20.1mA/0.15V ≈ 1.33mA/V。根据gm sqrt(2μCoxW/LId)可以反推W/L。具体数值取决于工艺参数这里不展开。第五步频率补偿。单位增益带宽GBW gm1/(2πCc)。要求GBW10MHzgm11.33mA/V则Cc gm1/(2πGBW) ≈ 21pF。这个值太大了因为负载电容才2pF。说明gm1太小需要增大第一级电流或者增大输入对管的W/L。重新分配增大第一级电流到0.4mAgm1 ≈ 5.3mA/V则Cc ≈ 84pF还是太大。问题出在GBW公式上。实际上两级运放的GBW gm1/(2π*Cc)要得到10MHz如果gm15.3mA/VCc应该是84pF。但84pF的补偿电容面积太大不现实。这说明我的指标分配有问题。要么降低GBW要求要么增大gm1。如果gm1增大到20mA/VCc可以降到318pF更不现实。等等我算错了。GBW gm1/(2πCc)所以Cc gm1/(2πGBW)。gm15.3mA/VGBW10MHz则Cc 5.3e-3/(23.1410e6) ≈ 84fF不是84pF。我少算了三个数量级。84fF是合理的比负载电容2pF小很多没问题。这个计算过程说明单位换算和数量级估算在模拟设计中极其重要。我见过太多人因为数量级错误把电容设计大了1000倍结果芯片面积浪费严重。4.2 仿真验证的关键步骤与常见误区设计完成后仿真验证是必不可少的。但仿真也有陷阱。我通常按照以下步骤进行直流工作点仿真检查所有管子是否工作在饱和区。特别注意共源共栅管和尾电流源管。如果某个管子进入线性区增益会急剧下降。交流小信号仿真扫描频率查看增益和相位曲线。确认直流增益、单位增益带宽、相位裕度是否满足指标。注意相位裕度的定义在增益为0dB的频率处相位与-180度的差值。瞬态仿真输入阶跃信号观察建立时间、过冲和振铃。这是检验稳定性的最直观方法。噪声仿真在输入和输出端分别仿真噪声确认输入参考噪声是否满足要求。工艺角仿真在TT、SS、FF、SF、FS等工艺角下重复上述仿真确认最差情况下的性能。这里有个常见误区很多人只看TT工艺角的结果忽略其他工艺角。实际上SS工艺角下增益可能下降10dB以上FF工艺角下相位裕度可能不足。我一般要求所有工艺角下相位裕度都大于45度增益下降不超过6dB。另一个误区是忽略温度影响。温度变化会改变载流子迁移率和阈值电压进而影响gm和ro。我通常要求在-40度到125度范围内性能变化不超过20%。4.3 版图设计中的对称性与匹配技巧版图是模拟设计的最后一公里也是最容易出问题的地方。对于差分对对称性是第一位的。我总结了几条实用规则输入对管采用交叉指状结构即ABBA或ABAB排列保证两个管子的 centroid 重合。在差分对周围加dummy管保证边缘管子和内部管子的刻蚀环境一致。尾电流源的镜像管也要对称并且尽量靠近差分对减少连线电阻和寄生电容。补偿电容Cc要放在第一级输出和第二级输入之间连线尽量短减少寄生电容。电源线和地线要宽减少IR drop和噪声耦合。提示版图完成后一定要做后仿真。前仿真和后仿真的差异可能很大尤其是高频情况下。我见过前仿真相位裕度60度后仿真只有30度的情况原因就是寄生电容和连线电阻。4.4 测试与调试的实战经验芯片回来后的测试是检验设计的最终环节。我通常先测直流工作点确认电源电流和偏置电压正常。然后测交流增益用网络分析仪或者频谱仪。最后测瞬态响应用示波器观察阶跃响应。测试中最常见的问题是振荡。如果芯片一上电就振荡首先检查电源去耦是否充分。其次检查补偿电容是否接错。第三检查版图是否有寄生反馈路径。我遇到过一例振荡频率正好是电源线电感和补偿电容的谐振频率后来在电源线上串联了一个小电阻才解决。另一个常见问题是增益低于仿真值。原因可能是管子工作点偏移、负载效应、或者测试仪器阻抗不匹配。我一般会先测工作点再测开环增益逐步排查。5. 常见问题与排查技巧实录5.1 增益不达标的排查思路增益不达标是最常见的问题。我通常按照以下顺序排查排查步骤可能原因解决方法1. 检查直流工作点管子进入线性区调整偏置电压或管子尺寸2. 检查输出阻抗共源共栅管体效应体接源或增大过驱动电压3. 检查负载效应后级输入阻抗低增加缓冲级或调整后级尺寸4. 检查工艺角SS角增益下降增大电流或增大管子面积5. 检查温度高温下迁移率下降增大电流或调整偏置这个表格是我在实际项目中反复使用的基本上能覆盖90%的增益问题。5.2 相位裕度不足的典型原因相位裕度不足通常表现为阶跃响应过冲或振铃。原因主要有三个补偿电容太小增大Cc可以降低主极点频率提高相位裕度。但会降低GBW。右半平面零点未消除检查是否加了调零电阻阻值是否合适。负载电容太大负载电容会在输出端引入极点降低相位裕度。如果负载电容无法减小需要增大第二级跨导。我个人的经验是相位裕度至少留10度的余量。仿真时60度后仿真可能只有50度测试时可能只有45度。所以设计目标应该是70度以上。5.3 噪声和失调的优化技巧噪声优化方面输入对管的闪烁噪声是主要贡献。降低闪烁噪声的方法是增大面积但要注意面积增大会增大寄生电容。我通常先确定闪烁噪声的拐点频率如果拐点频率低于应用频段闪烁噪声可以忽略只需要优化热噪声。热噪声与gm成反比增大gm可以降低热噪声但会增大功耗。失调优化方面除了版图对称性还可以采用斩波稳定或自动调零技术。但这些技术会引入时钟馈通和电荷注入需要仔细设计。对于精度要求不高的应用版图对称性加上合理的尺寸选择就足够了。5.4 工艺角与温度仿真的避坑指南工艺角仿真不是简单地把模型换成SS或FF就完事。有几个细节需要注意SS角下阈值电压升高过驱动电压减小可能导致管子进入亚阈值区。需要检查所有管子的Vds是否足够。FF角下阈值电压降低电流增大可能导致功耗超标。需要检查电源电流是否在允许范围内。温度仿真时电阻和电容的温度系数也要考虑。有些工艺的电阻温度系数很大会影响偏置电流。我通常会在SS角、125度、电源电压下降10%的条件下做最差情况仿真。如果这个条件下性能仍然满足指标那设计就比较稳妥了。6. 从单级到系统的扩展思考6.1 放大器在反馈系统中的角色放大器很少单独使用大多数时候是放在反馈环路里。反馈系统的稳定性、精度、速度都与放大器密切相关。一个常见的误区是只关注放大器的开环指标忽略闭环行为。实际上闭环系统的相位裕度、建立时间、过冲等指标才是系统设计者真正关心的。我在设计反馈系统时通常会先确定闭环指标然后反推开环指标。比如要求闭环增益误差小于0.1%则开环增益至少需要60dB。要求建立时间小于100ns则单位增益带宽至少需要10MHz。这种从系统到电路的逆向设计方法比从电路到系统的正向设计更高效。6.2 低功耗设计中的放大器取舍低功耗是当前模拟设计的热点。但低功耗不是简单地减小电流而是在功耗和其他指标之间找到平衡。我通常从以下几个方面入手采用亚阈值设计让管子工作在亚阈值区gm/Id最大但速度慢噪声大。适合低频低功耗应用。采用电流复用技术让同一股电流同时流过多个管子提高gm效率。但会增加电路复杂度。采用动态偏置根据工作状态调整偏置电流空闲时降低功耗。但需要额外的控制电路。这些技术各有优缺点选择哪种取决于具体应用。我个人的经验是对于电池供电的传感器接口亚阈值设计最实用对于高速数据转换器电流复用技术更有优势。6.3 从放大器到完整模拟前端的演进放大器是模拟前端的核心但不是全部。一个完整的模拟前端还包括偏置电路、参考电压源、滤波器、ADC驱动器等。这些模块的设计与放大器密切相关但又各有特点。比如偏置电路需要提供稳定的电流和电压对电源噪声和温度变化不敏感。参考电压源需要低温度系数和高电源抑制比。滤波器需要精确的带宽和低噪声。ADC驱动器需要低失真和足够的驱动能力。我在设计模拟前端时通常会先设计一个通用的放大器单元然后根据各个模块的需求进行定制。这种模块化的设计方法可以提高设计效率降低风险。7. 一些个人体会模拟CMOS放大器设计是一门实践性极强的学问。教材上的公式和理论是基础但真正的设计能力来自于反复的仿真、流片和测试。我做了这么多年最大的体会是不要迷信仿真但也不能没有仿真。仿真可以验证设计思路但无法完全预测实际芯片的行为。工艺偏差、寄生效应、封装应力、测试环境都会影响最终性能。另一个体会是简单就是美。很多初学者喜欢用复杂的结构来追求极致的性能但复杂结构意味着更多的寄生、更多的失配、更多的调试难度。在实际项目中一个简单可靠的结构往往比一个复杂但脆弱的结构更有价值。最后记录和总结非常重要。我每做一个项目都会把设计过程、仿真结果、测试数据、遇到的问题和解决方法记录下来。这些记录不仅是自己的经验积累也是团队的知识财富。模拟设计没有捷径但有方法。方法就是多动手多总结多分享。