从MOS管到完整OTA:模拟电路设计实战指南
1. 从一颗MOS管开始为什么OTA值得你花时间啃下来模拟电路里有一类电路你平时可能不太注意它但一旦缺了它整个信号链就瘫了——运算跨导放大器OTAOperational Transconductance Amplifier就是这样的角色。它跟咱们熟悉的运放Op-Amp是近亲但输出的是电流而不是电压增益用跨导gm来衡量单位是A/V或者S西门子。这个区别听起来很小实际用起来差别巨大OTA天然适合驱动容性负载、功耗可以压得很低、在开关电容电路和连续时间滤波器里几乎是标配。我带过几个刚入行的朋友做模拟设计发现一个普遍现象很多人能画CMOS反相器、能搭三极管开关电路、能照着教程跑一个两级运放的AC仿真但一旦让他们从零设计一个OTA就卡住了。卡在哪不是不会用仿真工具而是脑子里没有一条清晰的路径——从最底层的MOS开关行为到差分对的小信号建模再到偏置电路、共模反馈、版图匹配每一步之间的逻辑链条断了。这篇内容就是来补这条链的。我会从CMOS开关电路讲起因为开关是理解MOS管工作区间最直观的入口然后一步步推到差分放大器、电流镜负载、共源共栅结构最后拼出一个完整的、可以跑仿真的OTA。过程中我会解释每个设计决策背后的“为什么”分享我在实际项目中踩过的坑以及那些教科书上不会写但流片时能救命的细节。不管你是微电子专业的学生、刚转模拟方向的工程师还是想复习基础的老手这篇都能让你拿到一条可复现的设计路径。2. CMOS开关电路理解MOS管三个工作区的活教材2.1 一个NMOS开关的完整状态分析先看最简单的NMOS开关。源极接地漏极接负载电容栅极加控制信号。当栅压Vg远大于阈值电压Vth时沟道形成MOS管导通漏极电压被拉到接近0V当Vg低于Vth时沟道消失漏极通过负载电阻或电容保持在高电平。这个行为看起来简单但里面藏着三个工作区的完整切换过程。截止区Vgs Vth沟道没形成只有亚阈值漏电流通常在nA级别。线性区Vgs Vth且Vds Vgs - Vth沟道像一个压控电阻Ron 1/(μnCox(W/L)(Vgs-Vth))。饱和区Vgs Vth且Vds Vgs - Vth沟道在漏端夹断电流基本由Vgs决定Id 0.5μnCox(W/L)(Vgs-Vth)^2(1λVds)。做开关设计时你希望MOS管在线性区工作因为此时Ron最小、压降最低。但实际电路中开关关断时漏极电压可能被拉到很高如果Vds超过击穿电压器件就废了。所以选开关管时击穿电压BVdss必须留够余量一般至少是最大漏源电压的1.5倍。2.2 PMOS开关为什么经常和NMOS配对出现PMOS开关的导通条件是Vgs VthVth为负也就是说栅极电压要比源极低。当PMOS源极接高电平、漏极接负载时栅极拉低导通拉高关断。单独用PMOS做高边开关有个问题当漏极电压接近源极电压时Vgs接近0管子进入亚阈值区Ron急剧上升。这就是为什么传输门Transmission Gate要把NMOS和PMOS并联。NMOS擅长传低电平PMOS擅长传高电平两者互补整个输入范围内的Ron都比较平坦。我实测过一个0.18μm工艺下的传输门W/L分别取10μm/0.18μm在1.8V电源下Ron在整个0到1.8V范围内波动不超过15%。如果只用单个NMOS在输入接近1.8V时Ron会翻好几倍。注意做开关电路仿真时一定要跑DC扫描看Ron vs Vin曲线而不是只看一个点的Ron值。很多新手只仿一个输入电平结果流片后发现高电平传不过去。2.3 从开关到放大器的思维跳跃开关电路和放大器之间隔着一道认知门槛开关关心的是导通和关断两个状态放大器关心的是在饱和区里对微小信号的线性放大。但两者的底层物理是同一个——都是通过栅极电压控制沟道电荷进而控制漏极电流。理解这个连续性的关键在于把MOS管看成一个压控电流源。在饱和区Id对Vgs的导数就是跨导gm μnCox(W/L)(Vgs-Vth) 2Id/(Vgs-Vth)。这个gm就是OTA的核心参数。你设计OTA时做的所有事情——选W/L、定偏置电流、加共源共栅——本质上都是在调gm、调输出阻抗、调带宽。我习惯在教新人时让他们先做一个简单的共源放大器NMOS源极接地漏极通过电阻Rd接VDD栅极加偏置。输入小信号从栅极进输出从漏极出。这个电路的增益是-gm×Rd。然后问他们如果我把Rd换成一个电流源增益会变成什么答案是-gm×ro因为电流源的输出阻抗是ro。这就是从共源放大器到OTA的第一步跳跃。3. 差分对与电流镜OTA的两块基石3.1 为什么差分结构是OTA的默认选择单端共源放大器有个致命问题它对电源噪声和共模干扰毫无抵抗力。电源上任何一个纹波都会直接耦合到输出。差分结构通过两个完全对称的支路让共模干扰在输出端相互抵消。这是OTA几乎全部采用差分输入的根本原因。基本差分对由两个匹配的NMOS管M1、M2组成源极相连并接一个尾电流源Iss。当Vin和Vin-相等时Iss平均分配Id1 Id2 Iss/2。当有差模输入Vid时Id1 Iss/2 gm×Vid/2Id2 Iss/2 - gm×Vid/2。差模电流ΔId gm×Vid。这里有个设计要点尾电流源Iss不能太小否则差分对的线性输入范围会变窄。线性范围大约为±√(2Iss/(μnCox(W/L)))。如果你需要处理较大的输入信号要么增大Iss要么增大W/L。但增大Iss意味着功耗上升增大W/L意味着寄生电容变大、速度下降。这就是模拟设计里典型的折中。3.2 电流镜负载如何把差分电流转成单端电压差分对的输出是两条支路上的电流但大多数应用需要单端输出。电流镜负载就是干这个的。把M3、M4做成PMOS电流镜M3的漏极和栅极短接二极管连接M4的栅极接M3的栅极。M1的漏极电流流过M3被镜像到M4而M4的漏极接M2的漏极。这样M2的电流和M4镜像过来的电流在输出节点相减差值就是gm×Vid。这个结构的输出阻抗是ro2 || ro4增益为gm1×(ro2 || ro4)。在0.18μm工艺下如果Iss 100μAgm1大约在1mS量级ro大约在几十kΩ量级单级增益大概在20到40倍26到32dB。这个增益对于很多应用来说不够所以需要第二级或者共源共栅结构。3.3 电流镜匹配版图阶段才暴露的坑电流镜的精度直接决定OTA的失调电压。理论上M3和M4完全匹配但实际流片时工艺梯度、应力、边缘效应都会导致失配。我在一个项目里遇到过电流镜失配导致输入失调电压达到15mV的情况远超规格要求的5mV。解决办法有几个层面。电路层面增大M3、M4的沟道面积W×L失配与面积成反比。版图层面采用共质心Common Centroid布局把M3和M4拆成多个指条交叉排列。比如M3拆成A1、A2M4拆成B1、B2按A1-B1-B2-A2排列。这样任何线性梯度的影响都会在平均后抵消。提示做电流镜时在M3和M4的源极各串一个小电阻几十欧姆可以改善匹配。这个技巧在低压工艺里特别有用因为电阻的匹配精度通常比MOS管好。还有一个容易被忽略的点电流镜的栅极走线要尽量短且等长。如果M3和M4的栅极走线长度差很多走线电阻会导致有效Vgs不同引入额外失配。我在一次流片复盘中发现仅仅因为栅极走线差了20μm就贡献了2mV的失调。4. 从单级到完整OTA增益、带宽与相位的三角博弈4.1 套筒式共源共栅用堆叠换增益单级差分放大器的增益不够最直接的思路是提高输出阻抗。共源共栅Cascode结构通过在输出端堆叠一个MOS管把输出阻抗从ro提高到gm×ro×ro。套筒式Telescopic共源共栅就是把差分对、共源共栅管、电流镜全部堆在一起形成一条从VDD到GND的“套筒”。套筒式OTA的增益可以做到60dB以上带宽也不错但代价是输出摆幅受限。因为输出端堆了至少三个管子尾电流源、输入管、共源共栅管每个管子需要一定的Vdsat才能工作在饱和区留给输出的摆幅可能只有VDD减去三到四个Vdsat。在1.8V电源下输出摆幅可能只有0.8V左右。我一般会先算摆幅预算VDD - Vdsat_tail - Vdsat_input - Vdsat_cascode - Vdsat_load。如果这个值小于应用需要的输出摆幅套筒式就不能用得换折叠式Folded Cascode。4.2 折叠式共源共栅用电流换摆幅折叠式共源共栅的核心思想是把输入管的电流“折叠”到另一条支路上这样输出端的堆叠管子少一个摆幅可以多出至少一个Vdsat。代价是功耗增加因为折叠支路需要额外的电流而且噪声也会变大。具体来说输入差分对的电流Iss被分成两路一路直接流向输出端的共源共栅管另一路通过折叠节点流向另一组共源共栅管。折叠节点的寄生电容是限制带宽的主要因素。设计时要仔细权衡Iss的分配比例一般让输入管电流占总电流的60%到70%剩下的给折叠支路。折叠式OTA的增益和套筒式差不多但摆幅更好适合低电源电压应用。缺点是噪声系数比套筒式差3dB左右因为折叠支路引入了额外的噪声源。4.3 两级OTA增益和摆幅都要如果套筒式和折叠式都满足不了增益要求比如需要80dB以上那就得上两级。第一级用套筒式或折叠式提供高增益第二级用共源放大器提供大摆幅。两级之间需要频率补偿否则闭环时会振荡。最常用的补偿方式是米勒补偿Miller Compensation在第一级输出和第二级输出之间跨接一个电容Cc。这个电容利用米勒效应在第一级输出端等效为Cc×(1A2)的电容把主极点推向低频同时让次极点往高频移动实现极点分裂。米勒补偿会引入一个右半平面零点位置在gm2/Cc。这个零点会恶化相位裕度。解决办法是串一个调零电阻Rz让零点移到左半平面或者无穷远。Rz的取值一般是1/gm2。我实测过不加Rz时相位裕度只有35度加了之后能到65度以上。注意调零电阻不能用理想电阻得用工作在线性区的MOS管实现。这个MOS管的栅极偏置要仔细设计确保在所有工艺角下都能提供合适的电阻值。5. 偏置电路OTA的“心脏起搏器”5.1 为什么不能用理想电流源做偏置仿真时用理想电流源当然方便但实际芯片上你得自己产生偏置电流。最常用的结构是β乘法器Beta Multiplier或者恒跨导偏置Constant-gm Bias。β乘法器利用两个不同W/L的MOS管和一個电阻产生一个与电源电压无关的电流。具体电路M1二极管连接M2的栅极接M1的栅极但W/L是M1的K倍M2的源极通过电阻R接地。由于M1和M2的Vgs相同但电流不同电阻R上的压降就是ΔVgs。这个ΔVgs等于√(2Id/(μnCox(W/L)))×(1-1/√K)。解出Id后可以发现Id与电源电压无关只与R和器件参数有关。这个结构的启动是个问题。因为Id0也是一个简并解电路可能停在零电流状态。所以需要加启动电路一个弱上拉的PMOS或者一个电容耦合的脉冲在电源上电时注入初始电流把电路推离零态。5.2 偏置电流的分配与走线一个完整的OTA里偏置电流要分配给差分对、共源共栅管、输出级、共模反馈电路。分配比例直接影响噪声、带宽和功耗。我的经验是输入差分对分到的电流最多因为gm与Id成正比输入管的gm决定了整个OTA的增益和噪声。一般输入对占40%到50%共源共栅管占20%到30%输出级占20%左右。偏置走线要用宽金属减少IR drop。如果偏置电流是10μA走线电阻是100Ω压降就是1mV。这个压降会导致不同位置的管子Vgs不同引入系统性失配。我一般会把偏置走线画成树状结构从偏置产生电路出发等长分支到各个子电路。5.3 共模反馈全差分OTA的必备模块全差分OTA的输出共模电压是不确定的因为差分路径对共模信号没有反馈。如果不加共模反馈CMFB输出共模可能漂到VDD或者GND导致管子退出饱和区。共模反馈的基本原理是检测输出共模电压与参考共模电压比较把误差放大后反馈到尾电流源或者负载电流源的栅极调节电流使输出共模稳定在目标值。检测共模电压的方法有两种电阻分压和电容分压。电阻分压简单但会降低输出阻抗电容分压不降低阻抗但需要周期性刷新。我一般用电阻分压因为OTA通常不需要太高的输出阻抗精度。分压电阻的取值要远大于OTA的输出阻抗否则会显著降低增益。比如输出阻抗是100kΩ分压电阻至少取1MΩ以上。共模反馈环路的稳定性也要注意。CMFB环路的带宽不能太高否则会和差模环路耦合产生振荡。一般让CMFB环路的单位增益带宽是差模环路的1/3到1/2。6. 仿真验证从DC到AC再到瞬态的完整检查清单6.1 DC仿真工作点对不对第一步永远是DC工作点仿真。检查每个管子的Vds、Vgs、Vth、Vdsat确保所有管子都在饱和区。饱和区的判据是Vds Vdsat且Vgs VthNMOS或Vgs VthPMOS。我习惯把每个管子的region信息打印出来用仿真器的annotate功能直接在原理图上标注。如果发现某个管子在线性区先检查偏置电压对不对再检查W/L是否合理。常见问题是共源共栅管的栅极偏置不够导致它进入线性区。还要检查DC增益。用DC扫描输入差模电压看输出变化。增益就是输出斜率。如果增益远低于预期多半是某个管子不在饱和区或者输出阻抗被意外降低了。6.2 AC仿真增益、带宽、相位裕度AC仿真看三个东西低频增益、单位增益带宽UGB、相位裕度PM。低频增益决定了精度UGB决定了速度PM决定了稳定性。对于两级OTAPM至少要60度最好65度以上。如果PM不够先检查米勒补偿电容和调零电阻。增大Cc可以改善PM但会降低UGB减小Rz会让零点往高频移动但可能不够左。我一般会跑一个参数扫描Cc从0.5pF扫到3pFRz从0扫到2/gm2看PM和UGB的trade-off曲线。找到PM刚好65度、UGB最大的那个点。提示AC仿真时要在输出端加一个负载电容CL模拟实际应用中的负载。CL的大小直接影响次极点位置。如果忽略CL仿真结果会过于乐观。6.3 瞬态仿真建立时间和压摆率瞬态仿真看阶跃响应。给一个小的输入阶跃比如10mV看输出建立到0.1%精度需要多长时间。这个时间由线性建立时间决定与UGB和PM有关。再给一个大阶跃比如500mV看压摆率Slew Rate。压摆率由尾电流Iss和补偿电容Cc决定SR Iss/Cc。如果压摆率不够要么增大Iss要么减小Cc。但增大Iss会增加功耗减小Cc会降低PM。我遇到过一个问题小信号建立时间达标但大信号建立时间超标。原因是压摆率不够输出在达到最终值之前先以SR线性上升然后再进入线性建立阶段。解决办法是加一个动态偏置电路在大信号时临时增大Iss。6.4 工艺角与温度仿真别只跑TT只跑典型工艺角TT是不够的。必须跑SS慢NMOS慢PMOS、FF快NMOS快PMOS、SF、FS以及温度从-40°C到125°C。SS角下增益可能下降、UGB可能降低FF角下PM可能变差。我一般会跑一个PVT矩阵5个工艺角×3个温度×3个电源电压共45个仿真点。用仿真器的corners工具自动跑然后看最差情况是否满足规格。如果SS角下增益不够可以适当增大W/L或者增大Iss。如果FF角下PM不够可以增大Cc。7. 版图阶段那些仿真发现不了的坑7.1 匹配与对称性差分对的版图艺术差分对的版图必须对称。M1和M2要拆成相同的指条数交叉排列。比如M1拆成A1、A2M2拆成B1、B2按A1-B1-B2-A2排列。这样任何线性梯度的影响都会在平均后抵消。输入管的走线要等长。如果M1的栅极走线比M2长10μm走线电阻和电容的差异会导致失配。我一般会用蛇形走线来匹配长度但蛇形走线会增加寄生电容所以要权衡。源极的共用节点要用宽金属减少IR drop。如果源极走线电阻太大两个输入管的Vgs会不同引入失调。7.2 寄生电容与电阻提取后的后仿真原理图仿真用的是理想器件没有寄生参数。版图画完后要提取寄生参数PEX跑后仿真。后仿真里会看到UGB下降、PM变差因为寄生电容增加了。我遇到过后仿真UGB从100MHz掉到60MHz的情况原因是输出节点的金属走线太长寄生电容达到200fF。解决办法是缩短输出走线或者增大驱动能力。寄生电阻也会影响性能。电源和地的走线电阻会导致IR drop降低有效VDD。我一般会把电源和地走线画得很宽至少是信号线的3到5倍。7.3 噪声与串扰敏感节点的保护OTA的输入节点是高阻节点容易受到噪声耦合。输入走线要尽量短远离时钟线和数字信号线。如果必须交叉用垂直交叉而不是平行走线。电源和地要加去耦电容。我一般会在OTA的电源和地之间加一个几pF的MOS电容滤掉高频噪声。但要注意MOS电容的栅极要接电源源漏短接接地否则会引入非线性。衬底噪声也是一个问题。在混合信号芯片里数字电路的衬底噪声会通过衬底耦合到OTA。解决办法是在OTA周围加保护环Guard Ring把衬底噪声引导到地。8. 实测调试流片回来之后做什么8.1 上电第一件事测静态工作点芯片回来之后先别急着加信号。上电测每个管子的静态电压。用万用表或者示波器测关键节点的DC电压和仿真值对比。如果偏差超过10%说明有问题。常见问题偏置电流不对。可能是β乘法器的启动电路没工作或者电阻值偏差太大。我遇到过一次偏置电流只有设计值的1/3原因是启动电路的上拉PMOS太弱电路停在了一个中间态。8.2 增益和带宽的实测方法测增益可以用网络分析仪或者频谱分析仪。给一个小的正弦输入扫频率看输出幅度。低频时的输出/输入就是增益。增益下降3dB的频率就是带宽。如果没有网络分析仪可以用示波器测阶跃响应然后估算带宽。上升时间tr和带宽BW的关系是BW ≈ 0.35/tr。这个方法精度不高但够用。8.3 失调电压的测量与修调失调电压的测量方法是把输入短接测输出电压然后除以增益。如果失调太大可以用修调电路。修调的方法有几种调整电流镜的W/L、调整输入管的负载、或者用数字电位器调整偏置。我一般会在设计时预留修调端口用熔丝或者EEPROM存储修调值。修调范围一般是±20mV步进1mV左右。9. 一些零散但重要的经验做OTA设计这些年有些经验是教科书上不会写的但实际项目中能救命。第一仿真收敛问题。OTA电路里有很多高阻节点仿真器可能不收敛。解决办法是在高阻节点加一个很大的电阻比如1GΩ到地或者用仿真器的.nodeset语句给一个初始电压。第二模型文件的选择。不同工艺角的模型文件不一样别用错了。我见过有人用TT的模型跑SS的仿真结果完全不对。模型文件里还有温度参数跑温度仿真时要确认模型支持的温度范围。第三单位问题。仿真器里默认单位是米但画原理图时用的是微米。W/L填10u/0.18u仿真器会自动转成10e-6/0.18e-6。但如果填10/0.18仿真器会认为是10米/0.18米结果完全不对。这个坑我踩过不止一次。第四保存仿真状态。跑长仿真时保存状态文件下次可以从断点继续。不然每次都要从头跑浪费时间。第五版本管理。原理图和版图都要用版本管理工具比如Git。我见过有人改了原理图没保存结果版图和原理图不一致流片回来才发现。第六和工艺厂沟通。遇到模型不准或者工艺偏差大的情况直接找工艺厂要数据。别自己瞎猜。我遇到过一次SS角的模型和实际芯片偏差很大后来工艺厂给了修正模型问题才解决。最后说一个心态问题。OTA设计是迭代的过程第一版流片一次成功的概率很低。我做了这么多年一次成功的也就两三次。大部分情况是第二版或者第三版才达标。所以别怕失败每次流片都是学习的机会。把每次的问题记录下来下次设计时避开这就是经验积累的过程。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →