news 2026/10/17 12:35:12

单端两级运放设计:5T-OTA+共源级的增益、补偿与调试实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
单端两级运放设计:5T-OTA+共源级的增益、补偿与调试实践

如果你在模拟IC设计里做过哪怕一个运放,多半遇到过这种尴尬:单级OTA图纸算得明明白白,仿真一看增益只有30几dB,带上负载摆幅又掉一截。我前阵子给某传感器接口做前端放大器,指标卡在增益大于60dB、GBW大于10MHz,单级结构怎么调都顶不上去,最后老老实实换回标题里这个经典组合——第一级用5管OTA,第二级用共源级CS,两级一串联,问题当场解决。

这套“单端两级运放”结构好在哪?第一级5T-OTA负责把差分小信号放大成单端中频信号,同时提供主要增益;第二级CS负责补足增益和输出电压摆幅,推动负载。两级之间用米勒电容Cc串联调零电阻Rz做频率补偿。整个电路满打满算就8个MOS管加1个电阻,是教科书里最简单、也最适合拿来练手的两级运放结构。不管你是刚开始学模拟IC的新人,还是做定制模拟IP的老手,这套架构都值得吃透。

1. 为什么是“5T-OTA+CS”:两级架构的选型逻辑

1.1 单级OTA卡在哪

单级OTA的增益公式很简洁:Av = gm × ro。工程上更常用的是把它改写成Av = 2VA / Vov,其中VA是厄利电压,Vov是过驱动电压。这个变形很有意思——增益跟电流基本无关,只跟器件本身的沟长和偏置的过驱动有关。要提升增益,要么用更长的沟道增大VA,要么减小过驱动电压Vov。

问题是这两种手段都有天花板。长沟道让器件变大、寄生电容变多,GBW往下掉;过驱动电压太小,管子又容易退出饱和区,工艺偏差下一碰就挂。实际做下来,单级OTA在0.18微米工艺下通常只能做到30~40dB的增益,也就是几十倍的放大。很多场景根本不够用。

我那个传感器接口项目的指标是60dB以上,单级无论如何都差一截。这时候最自然的思路就是再加一级放大,于是两级结构进入视野。

1.2 两级分工思路:增益与摆幅各司其职

两级结构的本质是“分工”两个字。第一级专攻小信号放大,把微弱的差分输入放大成有一定幅度的单端信号;第二级专攻输出能力和摆幅,保证在给定负载下能送出足够的电压范围。

这个思路和音响系统的“前级+后级”很像。前级负责把微弱信号放大到线电平,后级负责驱动喇叭,两者各干各的,谁也不拖累谁。运放里也一样:第一级可以追求高输出阻抗来拿增益,哪怕这个节点的摆幅很小也没关系;第二级用共源结构把输出摆幅做到接近电源轨。

为什么第二级不选源极跟随器?因为源极跟随器的电压增益最多只有0.9左右,既补不了多少增益,也没法做米勒补偿——米勒补偿需要第二级有反相电压增益,源极跟随器没有这个条件。共源级CS既能提供几十倍增益,又有反相特性,还能推大摆幅,是教科书和工程上都验证过的标准解法。

1.3 为什么第一级选5T、第二级选CS

5T-OTA全称是五管OTA,由一对输入差分对、一对电流镜负载、一个尾电流源构成。它是单端输出的差分放大器里最精简的版本,不需要共模反馈,面积小、功耗低、带宽高,非常适合做两级运放的第一级。

第二级用CS(共源极)放大器,由一个放大管加上一个电流源负载组成。它牺牲了一点线性范围,换来高增益和接近电源轨的输出摆幅。这个取舍在多数场景下都很划算,因为运放本身工作在小信号状态,线性失真的影响远不如增益和摆幅来得关键。

单端结构相比全差分还省了共模反馈电路和输出共模检测,对大部分传感器接口、基准源缓冲、比较器前端来说完全够用,而且好写好调。这也是我选择“5T-OTA+CS”组合的根本原因。

2. 电路级设计与手算参数:从指标反推管子尺寸

2.1 拓扑辨认:8管两级结构

整体拓扑可以这样画:M1、M2是输入差分对管,M3、M4是PMOS电流镜负载,M5是尾电流源,这五个管构成第一级;M6是第二级CS放大管,M7是第二级电流源负载,这俩构成第二级;Cc加上串联的调零电阻Rz跨接在M6的栅极和漏极之间,也就是从第一级输出节点拉到最终输出节点。

信号流是:Vin+和Vin-差分输入,经过M1/M2的跨导转成差动电流,在M3/M4电流镜作用下合成单端电流,在第一级输出节点形成电压;这个电压再驱动M6的栅极,经过共源放大后从M6漏极输出。

这里有个细节值得多说一句:5T-OTA的输出是单端的,但输入是差分的。它能自动完成“差分转单端”而不需要额外的转换电路,靠的就是M3/M4这对电流镜的“翻折”作用。M1支路的信号电流被镜像到M4,和M2支路的信号电流在输出节点相减,等效输出电流是gm乘以差分输入电压。这个特性让5T-OTA在结构上天然适合做单端输出两级运放的第一级。

2.2 第一级5T-OTA的参数计算实例

直接给一组我实际用过的计算过程,工艺按0.18微米、电源1.8V来算。先定指标:总电流预算约80微安,其中第一级尾电流取20微安,第二级取50微安,剩下10微安留给偏置电流镜。

第一级尾电流20微安,意味着M1和M2各流过10微安。输入管过驱动我习惯取200毫伏左右,这样gm = 2 × ID / Vov = 2 × 10μA / 0.2V = 100μS。这个值不会太大也不会太小,后面算GBW也顺。

管子尺寸用饱和区电流公式反推:ID = 0.5 × μCox × (W/L) × Vov²。工艺参数μnCox取180μA/V²,NMOS输入管的W/L = 2 × ID / (μnCox × Vov²) = 20 / (180 × 0.04) ≈ 2.8。L我取0.5微米,W取1.4微米左右,实际做的时候取整到1.5微米或1.2微米都行。

PMOS负载管的μpCox只有45μA/V²左右,同样过驱动200毫伏、电流10微安,W/L = 20 / (45 × 0.04) ≈ 11。这就看出PMOS比NMOS“费面积”了,同样的电流和过驱动,PMOS管要做大三到四倍。

增益估算是这样:先估ro。工艺的厄利电压VA如果取10伏左右(0.5微米沟长差不多这个量级),ro ≈ VA/ID = 10V / 10μA = 1MΩ。M2和M4并联等效输出电阻约500kΩ,第一级增益Av1 = gm1 × R1 = 100μS × 500kΩ = 50倍,大概34dB。

2.3 第二级CS的参数计算与摆幅约束

第二级CS我定的电流是50微安,放大管M6过驱动取150毫伏,这样gm6 = 2 × 50μA / 0.15V ≈ 667μS。M6的W/L = 2 × 50 / (180 × 0.0225) ≈ 24.7。

负载管M7是PMOS电流源,过驱动取200毫伏,电流50微安,W/L = 100 / (45 × 0.04) ≈ 55。这管子和M4同属PMOS,同样过驱动下要做很大,版图上会占不少面积,属于正常现象。

第二级增益:假设VA还是10伏,ro6和ro7都是10V / 50μA = 200kΩ,并联等效100kΩ,Av2 = 667μS × 100kΩ ≈ 67倍,约36dB。两级总增益约70dB,也就是3000多倍,对60dB的指标绰绰有余。

输出摆幅的约束主要看饱和条件:M6要饱和,输出电压最低不能低于Vov6,也就是0.15V;M7要饱和,输出电压最高不能超过VDD减去|Vov7|,也就是1.8 - 0.2 = 1.6V。所以输出摆幅大约1.45V,在1.8V电源下已经很不错了。

2.4 直流耦合与偏置电流镜:教科书没说透的工作点问题

两级直接耦合有一个容易被忽略的坑:第一级的输出直流电平,就是第二级M6的栅极电压。这个电平不是你想设多少就多少的,它由第一级的负载电流镜决定。

拿NMOS输入 + PMOS负载这种组合来说,M3是二极管连接,第一级输出节点A的直流电平大概是VDD减去M3的|VGS|。如果M3的阈值电压加过驱动一共0.9伏,那么A点直流就是1.8 - 0.9 = 0.9伏。这个电压对NMOS的M6来说偏高了,会导致M6的VGS偏大,电流偏大,工作点往线性区滑。

解决办法通常是让A点的直流电平往下降一点。可以通过减小M3/M4的电流或者增大它们的W/L来压低|VGS|,也可以适当调整输入共模电平。实际操作中,我在仿真里第一件做的事就是打印A点电压,确认它落在第二级输入共模的合理范围内。这个点如果没对准,后面的AC、瞬态全部白调。

偏置电流镜的比例也在这里一次性理清楚:外部给一个基准电流,比如10微安,通过电流镜按比例复制到尾电流源M5(需要20微安,比例2:1)、第二级负载M7(需要50微安,比例5:1)。电流镜的复制精度直接决定两级工作点是否准,所以M5、M7和基准管的沟道长度要一致,W按比例放大。

3. 频率补偿:米勒电容与调零电阻的工程取舍

3.1 两级运放为什么会振荡

两级放大的代价是引入了两个低频极点。第一级输出节点一个,第二级输出节点一个。每个极点贡献90度相移,两个极点叠加,开环增益以每十倍频程40dB的速率下降,等它穿过0dB时,相位裕度已经接近零,甚至可能为负。这就是两级运放不加补偿接成单位增益负反馈时几乎必然振荡的原因。

米勒补偿的思路是把这两个极点拉开距离,而不是把它们都推远。具体做法是在第二级的输入和输出之间跨接一个电容Cc。由于米勒效应,这个电容在第一级输出端等效为Cc乘以(1 + Av2)这么大的电容,直接把第一级极点压到很低频;同时第二级输出极点被推到更高的频率。结果就是主极点变低、次主极点变高,增益在0dB附近以-20dB/dec的斜率穿过,相位裕度就有了保障。

3.2 零极点分布与关键公式

补偿后的关键参数用这几个公式估算:

  • 主极点:ωp1 ≈ 1 / (R1 × Cc × Av2)
  • 单位增益带宽:GBW ≈ gm1 / Cc
  • 次主极点:ωp2 ≈ gm6 / (CL + Cc)(工程粗略估算)
  • 无调零电阻时的零点:ωz ≈ gm6 / Cc

GBW由gm1和Cc直接决定,这是个很重要的关系:想提高GBW,要么加大输入管的跨导,要么减小补偿电容。但Cc减小会让次主极点和零点都往低频移动,相位裕度跟着恶化。所以Cc是个典型的折中参数。

零点的问题要单独说。Cc在第二级输入输出之间形成了从输入到输出的前馈通路,高频信号可以直接通过Cc绕过M6到达输出端,产生一个右半平面零点。RHP零点的相位贡献是滞后的,会进一步吃掉相位裕度,必须处理。

调零电阻Rz就是干这个的。加上Rz后,零点频率变为ωz ≈ 1 / [Cc × (Rz - 1/gm6)]。注意这个式子:当Rz等于1/gm6时,分母为零,零点被推到无穷远;当Rz大于1/gm6时,零点变成左半平面零点,开始贡献正的相位,对稳定性反而是好事。

3.3 Cc和Rz的实战调法

具体取值我一般按这样的顺序来:先根据GBW反推Cc。要10MHz的GBW,gm1是100μS,Cc = gm1 / (2π × GBW) = 100μ / (2π × 10M) ≈ 1.6pF。

再根据第二级跨导算调零电阻的起点:Rz = 1 / gm6 = 1 / 667μS ≈ 1.5kΩ。仿真从这个值开始,看相位裕度。

如果相位裕度不够,我不会急着把Cc加大,而是先把Rz往上调个10%到20%。这样零点移到左半平面稍微低频一点的位置,相位裕度通常能涨几度到十几度。如果还不够,再考虑加大Cc,比如从1.6pF加到2pF,GBW会让出20%左右,换取更好的稳定性。

最后提醒一句:Rz虽然能救相位裕度,但调太大会让零点太低,增益曲线在中频出现一个“峰”,对应瞬态响应里会有振铃。我一般把Rz限制在1.5倍1/gm6以内,超过就要回头调gm6或者Cc了。

4. 仿真调试:从DC工作点到AC指标的迭代思路

4.1 DC工作点检查清单

很多人上手直接跑AC,测出来增益不对就乱调管子尺寸,这是典型的瞎猫碰死耗子。正确的顺序是先检查DC工作点,确认所有管子都在饱和区。

我每次打开仿真,先做这几件事:打印每个管子的VGS、VDS、VDSAT三个值,确认VDS > VDSAT。重点查第一级输出节点A的直流电压、第二级输出节点的直流电压、M5和M7电流镜的实际电流是否和设定比例一致。电流偏差超过5%就要怀疑是尺寸计算错了还是沟道长度不一致。

M6的栅极电压是重中之重。前面说过,A点直流就是M6的栅压,它决定M6的工作点。我见过太多次A点电压算出来0.9伏,M6直接进了线性区,增益掉了一半还多。这时候第一件事不是改M6,而是回头调第一级负载管M3/M4的尺寸,或者调输入共模电平,把A点拉回合理范围。

4.2 AC参数调试顺序与实例

DC检查过了,再跑AC。AC仿真看四个数:低频增益、GBW、相位裕度、还有-3dB带宽。我的迭代顺序是固定的:先看增益够不够,不够就是gm或ro的问题,加大输入管W/L或调大L;再看GBW够不够,不够就加尾电流或减Cc;最后看相位裕度,不够就按前面说的调Rz加Cc。

举个我实际遇到的例子:第一版仿真低频增益有72dB,GBW有12MHz,但相位裕度只有42度。我没动Cc,先把Rz从1.5kΩ调到1.8kΩ,相位裕度到54度;再调到2.1kΩ,到61度。GBW略微降到11.5MHz,仍然在指标内。如果这时候相位还差,我就把Cc加到2pF,GBW降到9.8MHz,刚好卡在10MHz附近,但PM能到68度。

这个迭代过程很像调仪器,一次只动一个参数,动完看趋势,而不是一次性把很多变量一起改。一起改的后果是你根本不知道是哪个参数把指标救回来的,下次换个指标又抓瞎。

4.3 常见问题速查表

下面这张表整理了我这些年调试两级运放时遇到的高频问题,按“症状-原因-对策”给出,可以直接抄作业。

症状可能原因调试手段
相位裕度不足40°Cc太小、次主极点太低、Rz没生效加大Cc;减小gm6(降第二级电流/尺寸);把Rz调到1/gm6的1.1~1.3倍
GBW达不到指标gm1不足、Cc偏大加大尾电流或输入管W/L;减小Cc并重新验PM
输出摆幅不够第二级过驱动设太大、输出直流没居中减小Vov6/Vov7;调整第一级输出DC电平;重新分配两级电流
增益上不去管子不在饱和区、ro太小检查DC工作点;增大沟道长度L;减小过驱动
失调电压偏大输入对管面积小、版图不对称输入管W/L整体翻倍;版图做共质心匹配
功耗超标电流镜比例不对、第二级电流过大掐尾电流M5和第二级M7的尺寸;复核基准电流

5. 版图与实测:匹配、寄生与稳定性

5.1 电流镜与差分对的匹配布局

原理图仿真过了,流片前的版图才是真正出问题的地方。5T-OTA的第一级是全电路最敏感的节点,输入差分对和电流镜负载的匹配直接决定失调电压和共模抑制比。

输入对管M1/M2必须做交叉共质心布局,两个管子各分成偶数个finger交叉放置,周围加一圈dummy管保持刻蚀环境一致。差分输入走线要等长,两边的寄生电容尽可能对称。这一条做不到,前面算的失调指标会直接报废。

电流镜M3/M4同样是匹配大户。它们的尺寸一样,按finger并排居中放,四周加dummy,最好再用guard ring圈起来,减少衬底噪声的干扰。M5尾电流源和M7第二级负载属于不同比例的电流镜,不需要跟基准管紧贴,但沟道长度必须和基准管一致,否则有限输出电阻造成的电流误差会很大。

5.2 补偿电容、调零电阻与电源完整性

Cc和Rz的位置经常被新手忽略。米勒电容一端的信号是第一级高阻抗输出节点,这里的寄生电容哪怕只有几十fF,都会跟Cc并联,改变零极点位置。所以Cc要尽量靠近M6的栅极,MIM电容的下极板接第一级输出、上极板接输出端,减少走线寄生。

Rz的位置比Cc更阴险。我吃过一次亏:Rz在版图上离Cc比较远,中间走了一段长金属线,实测相位裕度比仿真低了将近15度。后来一查,长走线带来的串联寄生电阻和寄生电感改变了零点频率,等于Rz根本没起到应有的作用。把Rz紧贴着Cc放,金属走线加宽,问题才解决。

电源完整性在两级结构里也要专门处理。第二级CS是电流变化的源头,输出大摆幅时会在电源线上打电流纹波,这个纹波一旦通过电源线耦合回第一级的高阻节点,就是一场振荡灾难。前级的电源脚和输出级电源脚分开走,中间加RC去耦,地线用星形连接,能省掉很多莫名其妙的稳定性问题。

衬底噪声同理。第一级差分对周围做双guard ring,第二级大电流管子离第一级远一点,必要的话给第一级单独加一坨N阱隔离。这些都是流片前多花半小时、流片后少加三周班的好习惯。

另一个容易翻车的地方是第二级输出节点的寄生电容。CL在原理图仿真里是理想电容,但实际版图里还有pad电容、ESD保护管结电容、走线电容,这些都会并到CL上,把次主极点拉低。我一般会在前仿真阶段就预留30%到50%的CL裕量,宁可GBW稍微让一点,也别等流片回来发现PM不够。

按这套流程做下来,5T-OTA加CS的两级运放基本不会出大问题。增益、GBW、摆幅、功耗四个核心指标,在设计初期就能用手算估到八九不离十,剩下的就是仿真和版图阶段的细节打磨。

最后再说个我个人习惯:做这种经典结构时,每改一版参数我都会先手算一遍,再和仿真结果对照。手算结果和仿真差太多,说明某个假设出了偏差,这时候停下来查比继续调参数更值。毕竟模拟电路这行,慢就是快,算清楚比调得快重要多了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 12:34:57

YOLOv5-EfficientHead:游泳比赛关键目标检测优化方案详解

先说个我自己的经历。上个月拿到一批游泳比赛视频素材,要做一个“游泳比赛关键检测目标识别”的小系统,要求把运动员、泳帽、泳道线、计时板这些关键目标在视频流里实时框出来,供给后续的战术分析用。一开始我的想法很天真:直接拉…

作者头像 李华
网站建设 2026/10/17 12:34:41

微幅波假设:水波解析解与弥散方程的数学基石

1. 为什么“微幅波”不是随便说说的工程近似,而是整个推导链的逻辑起点“微幅波的解析解求解及弥散方程的推导”——这个标题里最不起眼、最容易被跳过的词,恰恰是整件事的命门:微幅波。它不是一句轻飘飘的定性描述,而是一套严格限…

作者头像 李华
网站建设 2026/10/17 12:34:29

PAT乙级1102题解析:结构体排序与浮点数精度控制的典型应用

PAT乙级1102是那种一眼看去很基础、真动起手来却容易到处卡壳的题目。题面通常会给你一批商品记录,里面有编号、单价、销量这些字段,让你算出销售额和利润,最后找出那个“冠军商品”并输出。它不像纯模拟题那样无脑,也不像算法题那…

作者头像 李华
网站建设 2026/10/17 12:34:05

Text2SQL实战:从自然语言到安全可执行SQL的全流程解析

做过数据相关工作的朋友应该都有这种感觉:业务侧的一句话,到数据库这里往往要绕一大圈。运营说“帮我看下上个月哪些用户下了两单以上”,技术侧要先拆需求、查表结构、想 join 条件、写 SQL、跑数据、再核对口径。来回两三次,半天…

作者头像 李华
网站建设 2026/10/17 12:32:14

PyHiTLS:为C语言TLS库穿上Python外衣,解锁底层协议定制能力

看到「为 openHiTLS 穿上 Python 外衣」这个标题,你大概已经猜到了:PyHiTLS 不是另一个 TLS 库,而是给那套 C 实现的开源 TLS 基础库套的一层 Python 绑定。TLS 握手、证书校验、加密套件这些底层逻辑,全部留在 C 库里跑&#xff…

作者头像 李华