GMID方法与经典7管二级运放
本着前人栽树后人乘凉的原则,我来一手抛砖引玉。
最近在摸二级运放的设计八股文,最后发现gmid设计方法最好用。
第一个搜到的教程是站内某台湾老师的教程,虽然很详细,但发现设计与结果不符(这就是本文要强调的二级运放的电流匹配)。
所以我写了一手分享教程,希望大家少批评老师的错误教法,多批评批评我。
网盘里有pdf版
链接:https://pan.baidu.com/s/1yt20F5hh2d_LROeGWZIH4A
提取码:6666

Gmid设计二级运放:
一、 背景
由于尺寸变小,次级效应的影响变大,平方律计算结果偏差变大,没有工艺参数的情况下也很困难。如果gm/id的值已经确定,也可以确定管子的其他参数,所以我们运用工艺库提供的仿真模型,创建一个gmoverid与id/W,self_gain,gds等参数关系的图表,用来参考设计。
贴心的是,vitruoso中的cmos,是有gmoverid这个参数的。
二、 创建一个工艺库的CMOS的gmoverid图表
画一个这样的电路:

NMOS的参数分别是w = Wn,l = Ln, m = muln;
PMOS的参数分别是w = Wp,l = Lp, m = mulp;
V3电压是Vd,V0和V2电压是Vg,V1的作用是保证管子在饱和区,所以V1只要大于Vth都很好,我是0.8V。
为什么要工作在饱和区?集成电路里面的CMOS,正常情况下,都处于饱和区,在其他区可以认为都是不正常工作,Virtuoso的CMOS有个参数叫region可以快速查看静态工作点CMOS处于哪个区。
保存并check之后,我们新建一个仿真:



随后在变量这一栏右键,让其自动抄写变量,为变量设置值,然后设置成下面的大小,因为我用的是5V的管,所以Vg和Vd的初值我设置为了2.5V。

随后设置仿真条件,dc仿真,Vg变化时的dc仿真,变化范围,刚刚我们已经给NMOS一个0.8V的电压了,所以他可以从0.8~5V变化,只要确保PMOS也在饱和区即可,也就是0~4.2V。

现在先跑一次仿真,让ADE拥有可选的参数。然后打开计算器,利用计算器下面的功能,把需要仿真的结果表示出来。


怎么用我就不教了,反正用到了红圈圈的功能。懒的话可以直接抄我的:

这个按钮可以新建一个表达式
name details
Vgst_p waveVsWave(?x OS("/M1" "gmoverid") ?y (OS("/M1" "vgs") - OS("/M1" "vth")))
gds_p waveVsWave(?x OS("/M1" "gmoverid") ?y OS("/M1" "gds"))
id/W_p waveVsWave(?x OS("/M1" "gmoverid") ?y (OS("/M1" "id") / VAR("Wp")))
gain_p waveVsWave(?x OS("/M1" "gmoverid") ?y OS("/M1" "self_gain"))
Vgst_n waveVsWave(?x OS("/M0" "gmoverid") ?y (OS("/M0" "vgs") - OS("/M0" "vth")))
gds_n waveVsWave(?x OS("/M0" "gmoverid") ?y OS("/M0" "gds"))
id/W_n waveVsWave(?x OS("/M0" "gmoverid") ?y (OS("/M0" "id") / VAR("Wp")))
gain_n waveVsWave(?x OS("/M0" "gmoverid") ?y OS("/M0" "self_gain"))
记得勾上plot生成图表,再跑一次仿真,这时候你可以看到gmoverid图表了。
你可以根据设计需求,改变变量的初值,Ln,Wn,muln,Lp,Wp,mulp,这会让你对管子的特性有更多的了解,比如Ln = 0.5u:0.5u:5u 这句表达式的意思是Ln的取值从0.5u到5u每隔0.5u做一次仿真,他就会再一个图里画出多条gmoverid曲线。更直观看到管子的特性。
那么这里给出一些我的观察结论(暴论):
1,同一个gmoverid下,改W不会改变他的gm,gds,self_gain,只能改变电流,改L倒是可以。
2,L越大,可以选择的gmoverid范围也越大。
3,单级放大的极限可以在self_gain-gmoverid的图表看得出来,开环增益是Ao=gm*Ro=gm/gds,那么其实self_gain(自己的沟道做负载)=gm/gds可以看到我这里是整个NMOS单级放大的极限在40dB(不同情况不一样)
三、 根据图表设计一个二级运放

根据GBW得到我们需要设计的gm大小,取一个表中合适的位置的gm/id(表中不存在的gm/id就没办法继续后面的操作了),得到输出电流id;同时通过图标也得到W或者L,得到其中一个而另一个选取合适的值。
第二级的gm则要配合相位裕度(60°以上),次极点要求是GBW的两倍到三倍,所以

1.3是经验数值。
电流匹配,这是第二级能够处于饱和区的必要条件。第二级的放大管和第一级的两个负载的id/W是相等的,所以他们会有相同的gm/id。而主动负载只要工作在饱和区,并且具有较小的gds,改变他的尺寸不会对第一级放大系数有太大的影响,所以他的尺寸只是考虑到第二级的放大管,W6=W3*Id6/Id3。
选择规则:经验告诉我们米勒电容Cc>0.22CL;为了减小噪声,放大管gm要大,电流源gm要小;L越大,偏向大gm,可选择的gmid也会大,L越小,偏向速度,可选择的gmid也会小;gm/id越大,偏向小电流节能,gm/id越小,偏向大输出摆幅。想要大GBW,就得要大电流。
NMOS输入的二级运放示例(tsmc 0.18um):
1. CL=3pF,Cc>0.66pF,GBW=100Mhz
2. gm1=1.885 mA/V
3. L=1u
4. Gm/id放大管选16电流源选10,主动负载为了匹配也要16
5. Id1=Id3=117.8uA,Id5=235.6uA
6. 查表,W1=117.8uA / 1.77835 A=66.2u;W5=235.6uA / 6.785353A =34.7 u
7. gm6=7.3515 mA/V
8. Id6=Id7=3.9Id1=459.47uA
9. 查表,W3=117.8uA /0.5220033A =226u;W6=W3*Id6/Id3=226u*4; W7=459.47uA / 6.785353A=67.8u=W5*2
W1=W2=66.2 u
W3=W4=226u
W5=34.7u
W6=226u*4
W7=34.7u*2

然后我们进行dc仿真检查直流工作点:


管子旁边出现了vds,vth等参数,但我想看gmoverid和gm,gds。右键画布任意位置,修改注释的参数:


可以看到,所有管子的region=2,意思是处于饱和区,0是截止,1是线性区,3是亚阈值区……,然后gmoverid是和计算时八九不离十了。不过第一级的负载gds有点太大了,可以适当变小W,这意味着他的id/w,也就是对应的gmoverid也会变化,相当于第二级放大管的gmoverid也得变化了,因为必须电流匹配。
如果你扫描得到了gm/id与gds,gm的关系,对于单管的放大电路来说,Ao=gm/gds,你就大概可以知道,这个单管放大电路的开环放大系数是有极限的,大概在40dB左右。
四、 问题
Q1:为什么必须电流匹配
A1:二级运放他就是需要,没有为什么,不匹配,第二级的放大管就不能处于饱和区,放大系数变得特别小。我看了很多个(5个)gmid设计二级运放,包括B站那位台湾老师的教学,都忽略了匹配这个问题,如果不匹配,就是用不了,没有为什么。
Q2:怎么选L
A2:L越大,偏向大gm,可选择的gmid也会大,L越小,偏向速度,可选择的gmid也会小,自己在gmidtest里面试试,改L,看看gmoverid图表怎么变化。
Q3:推荐的电流值
A3:首先不是推荐的,是算的,在于你怎么选gmoverid,GBW越大,算出来的id肯定也会越大,但是id小就节能。
五、 参考
【1】 The gmid methodology, a design guideline for two stage miller OP_哔哩哔哩_bilibili
【2】 gm/Id 设计方法_gmid设计方法原理_maxwell2ic的博客-CSDN博客gm/Id