前言:
自己的仿真记录,仿真的时候很可能不清楚需要仿真什么参数,就按照自己的感觉来了。有用就点个赞,没用的话就没用好了哈哈。反正就是一个用来记录的帖子。
PS:
因为是我记录的帖子,所以会有仿真一半发现错了,然后进一步进行修改的过程,所以可能会写得比较长。我还是比较喜欢这种不断发现问题改进问题的过程,模拟嘛,坑走多了,后面就熟练了。
另外,内容是按照拉扎维那本书来推进写的。在运放和带隙部分我会着重仿真,其他的部分可能会有一些不周到。
帖子是我一步一步学习的见证,可能会发现开始的部分写得很烂,那是初期的我啦,啊哈哈哈。
在此处慢慢见证自己的进步。😃
一些想补充的话:
1、拉扎维还是需要买正版的,盗版的或者电子书(很多渠道的我都下载过),上面还是有很多错误的,看得很难受,这个正版还是值得支持一下的。
2、从开始仿真到现在,感觉长进还是很多的。在此期间也算是摸懂了拉扎维,然后发现光拉扎维还是不够,他的书在训练直觉确实不错(切实体会,用来入门真的不错),不过,有直觉后到设计阶段就需要更多的书了。Sansen的书更适合在懂了拉扎维后去看,拉扎维像是告诉你这个电路是什么怎么算,而Sansen更像是在这个基础上做补充,看完有种豁然开朗,这玩意还能这么理解的感受。Allen的书在指标和指标的计算写得很详细,很适合仿真使用。另外,在跟着 博主(冯+) 的帖子仿真后发现了一本宝藏书 《模拟集成电路与系统》 ,上面会告诉你仿真管子的经验,很实用。当然除了拉扎维外的书我还没有从头到尾看过,只是用到什么看什么。
目录
序 仿真方法汇总处
0、我的拉扎维学习笔记以及一些仿真小技巧
见我的其他帖子,哈哈,引一下流。
小刘同学的CMOS模拟集成电路学习小记(不停更新)
cadence—virtuoso的使用技巧收集区
1、gm/id方法
gm/id方法学习帖子1
gm/id方法学习帖子2
我一开始是跟着学习帖子2学的,然后转向1。
gm/id =2/Vov.
所以决定输出范围的管子应该Vov小一些,对应的gm/id就大一些。
同时应该注意到ft与Vov成正比与L成反比;增益与Vov成反比,与L成正比。
2、增益
这个直接使用ac交流分析,该分析在输入端接一个vdc,设置其AC magnitude值,就相当于为输入加入了一个交流源。如果是双输入口,正端加一个500mv,负端加一个-500mv,输出电压直接就是小信号交流增益(因为vin1-vin2=1,Av=vout/(vin1-vin2),这样设置比较方便,不用写公式的时候再除以个输入端口电压差)。
注意:在vdc中有AC magnitude 为小信号有效值幅度,设置AC magnitude并不会改变直流偏置(我目前还没搞懂原理),在trans瞬时仿真中,输入端也没有出现小信号波动。在vsin中有AC amplitue,为信号峰值幅度,一般还需要设置频率,vsin中设置的AC amplitude加入输入端后会随着时间影响直流偏置,在trans仿真中也会看到一个正弦波。
如果需要使用分贝显示可以加一个dB20()。
3、相位裕度
在学会查看增益曲线以后,我们来仿真相位曲线:
打开ADE仿真器中的放大器:
同时仿真增益曲线(分贝显示)与相位曲线:
点击这个按钮可以将曲线分离开:
结果如下:
选择增益曲线图像后,点击Marker->Create Marker:
然后选择通过Y轴确定Mark位置,并输入Y坐标为0(即0dB点):
这样就找到了单位增益带宽是多少了:
再次创建Marker,这回选择Vertical,即创建垂直线,输入刚才找到的单位增益带宽值:
然后相位裕度就可以得到了,大功告成。
另外一种更简单的是直接用:
仿真直接给数。
4、零极点
5、CMRR(共模抑制比)
来源:共模抑制比CMRR与电源抑制比PSRR的仿真原理
根据此博客可以得到:
Vcm/Vout = (1 + Adm - 1/2Acm) / Acm
Adm是差模增益,一般都几十几百甚至上千;Acm是共模增益,一般就零点几或者几毫。
将共模小信号Vcm设置为1,上式可以约等于为:
1/Vout = Adm / Acm =CMRR
这里需要说明,virtuoso中的ac仿真的源可以通过修改vdc中的AC magnitude。
注:值得注意的是,要搞清楚输出端接入输入端端口的极性,以及CMRR的公式,别搞错了。
6、电源抑制比(PSRR)
《CMOS模拟集成电路设计(Allen)》书413到415页有一些现实中测试方法与仿真测试方法,这里我只研究了下仿真测试方法。
首先要搞清什么是电源抑制比:
这句话其实容易造成歧义,修改一下表达:PSRR表示把输入信号与电源视为两个独立的信号源,所得到的两个电压增益的比值。
不论是输入ac信号在输出的增益/电源ac信号在输出的增益,还是取个倒数,在分贝表示也就一个正负的关系,绝对值都一样,问题不大。我们按前者来算好了。
搭好电路:
PSRR+:
可以看到左边加了输入差模小信号,电源没加。右边的电源加了,输入没加。
PSRR-:
可以看到正电压抑制比为40dB左右,负电压抑制比为71dB左右,也就是说VDD的波动对输出影响比GND的波动大。分贝运算(dB20(vout/vout+))可以拆成输入电压在输出端的增益的分贝值减去电源波动在输出端的增益的分贝值的差值。电源波动对输出的影响越大,后者数值越大,得到的PSRR+/-就越小,代表着电源波动的影响更大。
7、输入共模范围
可以通过DC直流仿真扫描共模电压从0-Vdd,查看每个管子的状态(region),整个电路直流偏置都处于期望状态(我需要都在饱和区)时的输入共模信号范围就是输入共模范围。
先不进行参数扫描进行一次DC仿真,不然没法查看参数。扫描后可以通过点击:
选择其中的DC operating points,点击需要查看参数的mos管,可以看到有一份参数表,等等使用计算器就可以用图像来显示了。
其中,region:0-夹断区,1-线性区,2-饱和区,3-亚阈值区,4-击穿区。
打开计算器,点击os:
出现这个框后,单击mos管,点开List,选择region,可以看到计算器内出现了公式:
单击这个按钮,将公式送入输出设置中:
选择好每个管子的这个参数后,对输入共模信号扫描,选择从0-vdd,得到输出结果:
再拉两条垂直线:
可以得到在[937mv,1.76v]内管子都工作在饱和区,这就是输入共模范围。
8、输出电压范围(无共模反馈时)
先添加两个独立的输入共模电压源:
一端设置在共模电压范围内,调另一端即可。该电路设计电压增益为100倍左右,可见如果输出电压摆动一个vdd(例如1.8v),输入端两者只需要有vdd/100(18mv)的差值即可。
先设置左端在950mv,扫描右端,扫描范围为0-1.8v。
输出设置为输出电压曲线以及在输出端上下两个管子的region曲线:
发现两个管子在0-vdd电压范围的某一瞬间会同时处于饱和区,奈何电压扫描范围太宽了,看图发现实在是难以测出那个范围。那么就缩小扫描范围。按照前面的分析,只需要在950mv上下浮动18mv就能达到输出电平一个vdd的摆动,那么我们重新设置右边vdc的电压从950mv-20mv=930mv到950mv+20mv=970mv进行扫描:
可以看到图像变得友好了许多。那么就可以找到左侧图中同时处在饱和区的电压范围,在右侧图中找出对应输出电压是多少:
941.2mv-963.6mv,在右侧也标出来:
可以读出输出电压范围为:[471.606mv,1.58245v]
9、压摆率(Slew)
我用的是virtuoso ic 618,把输入共模信号改成方波,用瞬态分析,在输出的图像中点击:
然后右侧就会有一个详细信息显示:
通过读该显示窗口可以看到,共有10个升降延,目前是第一个,是一个下降沿,具体时间为54ns至264ns,摆率为3.62 V/μs。
戳这个可以调整查看的边沿:
比如我们调到2:
显示出第二个边沿是一个上升沿,时间在1.02us至1.06us之间,摆率为21.1V/μs。
第三章 单级放大器
1、电阻为负载的共源极
1、负载电阻为1K时:
2、负载电阻10K时:
3、负载电阻100K时:
总结:负载电阻越大,使得Vds越小,使管子进入线性区。
(很简单的结论,但实际仿真了下才有那味,记得牢了)
2、工作在线性区的MOS为负载的共源极
AC仿真:
上面的是错误的!
因为把负载MOS管的栅电压设置太高,导致PMOS进入饱和区,顺便把NMOS压入线性区。看了眼拉扎维,发现要把Vb设置低一些。
计算器涉及到的部分参数:
跨导:
OS("/NM0" "gm")
rout:
OS("/NM0" "rout")
线性区mos电阻:
1/(OS("/PM0" "betaeff") * (VAR("vdd")-VAR("vb")-abs(OS("/PM0","vth")))
3、带源极负反馈的共源极
我才发现Vgs-Vth 在这里面是Vgt 而不是Vdsat。 管子Vd>Vdsat时进入饱和区。
但此时Vdsat和Vgt不一样大?!!!为什么?
OS("/NM0","gm")
OS("/NM0","gmb")
OS("/NM0","rout")
VAR("Rd")
VAR("Rs")
得到:
Av=
OS("/NM0","gm")* OS("/NM0","rout")* VAR("Rd")/( VAR("Rd")+ VAR("Rs")+ OS("/NM0","rout") +( OS("/NM0","gm")+ OS("/NM0","gmb"))* VAR("Rs")* OS("/NM0","rout"))
交流增益:
公式计算增益:
433.26m与416.8161m
差的不算多,还行。
4、采用二极管连接型器件作负载的共源极
计算出的电阻为5.3K,然而实测的Vx/Ix=16K。看拉扎维上说这个二极管连接型的小信号等效电阻为1/(gm+gmb),那是不是说用大信号的方式没法测出呢,将Vx换成一个mos管,通过计算小信号增益再来重新算一次。
(重新算了也不对,不会算)
算增益:
有一些偏差,不太清楚为什么。
5、源跟随器
计算得到Av=gm*Rs/[1+(gm+gmb)Rs]=0.2066
ac增益:
作图ac小信号增益为0.198,差的不大。
6、共栅极
ac交流仿真增益:
Rd=2k Rs=1k
gm=166.946u
gmb=16.8227u
ro=41.8845k
Av=
((OS("/NM0","gm")+OS("/NM0","gmb"))*OS("/NM0","rout")+1) *2000/( OS("/NM0","rout")+( OS("/NM0","gm")+OS("/NM0","gmb")) * OS("/NM0","rout") *1000+1000+2000)
Av=330.803m 也差不多,但还是有误差
7、共源共栅极
现在需要弄清楚R取多大会把两个管子压入线性区。
(管子的Vth是浮动的,所以会不停有偏差)
结果:110K左右
8、折叠式共源共栅极
仿真后发现小信号增益很低,忘记截图了
第四章 差动放大器
1、简单电阻负载的差分放大器:
下限为Vdd-Iss*Rd
加入源极电阻反馈后:
对源极电阻进行扫描
可以看出加入源极电阻负反馈后中间线性区的部分的斜率越来越小,线性区范围也在扩大。
ac交流分析计算小信号增益:
(下面先单边看看,看一下负载电阻对增益的影响,然后再算算具体公式计算与仿真结果之间的差异)
对负载电阻进行扫描:
发现这个随着负载电阻的上升增益在增加了,但是相应的带宽下降了,也就是说电路的速度下降了。
ac双边增益:
ac仿真真实增益
Av=
VF("/***10")-VF("/***9")
计算增益:
|Av|=gm * Rd=83.6296u * 100K=8.3630
有一些差距,想想问题出在哪里。
书上写的那个增益公式是忽略了沟道长度调制效应和体效应的,再算算是不是这个缘故。
负载电阻R=100K,rout=242K
有限的rout会拉低阻抗。
matlab当计算器的计算结果:
单边仿真增益:
差别不大了,看来就是忽略了沟道长度调制效应的锅。
第五章 电流镜与偏置技术
1、基本电流镜:
想仿真书上图5.8的电路,发现M3与M4总被旁边的M5,M6管子怼到亚阈值区,旁边的那个M5,M6管子也总是处在线性区,搞了半天都怼不到饱和区,想了好久。接着翻回去仿真图4.45(a),仿着仿着发现用betaeff代替uCoxW/L每次都算不对平方律公式,才发现用beff才对,然后又发现这个beff是随着Vgs的增大而减小的,mmp,看了下第十一章才发现深亚微米效应(纵向电场导致的迁移率退化),如下图:
图5.8:
图4.45(a)
两个电路之间有一定的相似性。我从基础的往上加枝节逐渐发现了问题所在的。
这个电路把vin抬到4.2V,M3,M4才从亚阈值区进入饱和区,同时旁边的M5,M6管子才从线性区进入饱和区(如下图),为什么呢?
【两个管子的region随vin的变化图 (0-截止区,1-线性区,2-饱和区,3-亚阈值区,4-击穿区】
因为M3,M4一定在饱和区和亚阈值区,这时很有可能是vin设置的太小,即Vgs设置的太小,需要Vds很大才能满足这么大的电流,恰好上面的是二极管连接型的器件,不需要太大的Vds也能饱和,而把Vin抬高,使得Vds不用很高也能满足饱和条件,相当于M5,M6提高了Vds,才从线性区进入饱和区。
呼,问题解决。
第六章 放大器的频率特性
想深入研究一下如何精确计算电路的频率响应。
1、简单共源极
1.1、一个无聊的错误分析
本来以为这个电路如此简单肯定很好分析,我还是想错了,从电路里获取电容、输出电阻、增益等参数,算了一下差距好大,我将目标转向把寄生电容用实际的大电容并联上去代替,结果计算还是不理想。实际的分析结果如下(使用的是smic 18ee 工艺库,mos管为"n33e2r"):
如果我将Cs,CL数值设置很大,那么就可以用它代替寄生电容进行频率响应的分析,看看手算和仿真之间的区别:
几个重要寄生电容参数已经给出:
rout与gm也给出:
P1=1/(RL * CL)=1 * 1e5;
P2=1/(Rs * Cs)=1 * 1e6;
然而,仿真结果如下:
经过计算,更改R与C的值总与实际结果小个0.16倍。经过我细致的分析,终于找到了原因,我忘记除2pi了(手动狗头),自己给自己一巴掌。
1.2、正式分析与验证
1.2.1、RL为电阻
找到了问题的所在后,去掉大电容,看看通过寄生参数能不能计算出正确的零极点,最后再去验证书上的公式。
结果为:
这里我故意把Rs,RL弄得区别大一些,就是为了让两个极点离远一些,方便验证。
易得:
Pout=1/(2pi *RL ( Cdb+Cgd(1-Av^-1) ));
Pin=1/(2pi * Rs (Cgs+Cgd(1-Av)));
经过matlab计算:
得到:
从结果可以看出,我们计算的输入极点大了,输出极点小了,零点是差不多的。
部分电容修正:
把Cgs和Cdb换成Cgg和Cdd再看看:
可以看到Pin差不多了,但Pout更小了。那是因为Pout偏小,需要电阻或电容变小,而Cdd比Cdb大一些,会更偏离。
难道是我的输出电阻计算不对吗,下面来仿真电路的输出电阻:
不改变电路的直流偏置点,在输出端加入一个1v的小信号:
ac仿真结果:
可以看到输出电阻其实是差不多的。
所以并不是输出电阻的锅,还是寄生电容计算不正确,目前不知道为什么了。
通过拉扎维公式(6.30)详细计算:
挺不理想的结果,未知为何。
1.2.1、用理想电流源替换RL
新加入的电流源不改变原有静态工作点:
零极点分布为:
可以看到零点没变,但极点都剧烈变化了。
极点与结点的关联方法,matlab计算结果:
将输出电阻直接用管子的rout=26MΩ代替:
可以看到这个方法此时偏小3许多。
考虑一下,是不是又是Rout在作祟,再新仿真一下Rout:
好吧,是Rout太大了,matlab重新计算极点如下:
Pin差不多了,但Pout还是偏小,不知为何。
Pout总有问题,奇怪。
第九章 运算放大器
1、套筒式共源共栅运放
以书上例9.7来仿真:
(这个小表咂电路费了我好多时间,毕竟刚学不久,很多二级效应考虑不周到,调了好久,也算摸出来点门道)
想仿真这个,可是0.18μm工艺下的μCox,lamda,Vth,均会随着Vds,Vgs的变化而变化,这个变化很小也就罢了,偏偏误差特别大,算出来的Id飘得没法用,这时候就需要祭出gmoverid方法了。
这个是我学习gm/id方法的一个帖子:https://blog.csdn.***/weixin_44115643/article/details/119419501
先看书上9.7的例题,单单就设计M9而言,我们需要M9的Vdsat=500mV,Id=3mA,L=500nm,然后求出M9的栅宽是多少。
我们先单另用一个nmos仿真:
L可以确定,W随便填一个数,或者你可以先用平方律公式算一下,确定一个大概的数,vgs满足开启就行了,vds大于你想要的vdsat。
输出使用计算器公式,列出你想要的参数,我这里需要求W,以及此时的vgs需要多少,以及此刻对应的vdsat是多少,因为在短沟道器件中,往往vdsat<vgt(即:vgs-vth)。
仿真看一下:
在vdsat中选择我们的vdsat=500m.
再找到此时对应的:Id/W=106.247 Vgs=1.1315V
Id=3mA,则W=28.236μm.
回忆一下,一开始我们的W和Vgs是随便填的,所以需要带回去重新迭代一下,大概迭代两次就够了,如果需要精度更高的,需要迭代更多次。
计算得到W‘=26.7μm,vgs=1.15V懒得弄更多次了
可以看到直流仿真结果满足要求。
同时考虑到Vds也是随便设置的数,看看它有没有什么影响:
以上仿真中可以看到,我们设置vds大于vdsat,但对vds扫描后,可以看到对想求的参数是有影响的,不过先避开这个问题好了,之后肯定要在这里栽跟头,还得回来哈哈。
接下来就可以继续算一下:
对于M1-M4:
vdsat=200mV;
W1-4=96.39u
Vgs=656mV
对于M5-M8:
vdsat=300mV。
W5-8=218.92u
|Vgs|=776.5mV
然后发现把管子按精确的数据丢进去,管子全都在线性区,……有点无语,找了一下哪里出了问题,才发现原来Vds>vdsat大约5mv才会进入饱和区,所以Vds要留一些余量,不能精确的像书上一样刚刚好那种。下面重新仿真,看看对不对。下面全部将Vdsat预期降低50mv。重新计算。
由于对于nmos而言vdsat=150mv有些低了,仿真不出来,这里我们将电源电压改成3.3V,把多出来的300mv给了M1-4.这里我们仿真时,vds设置300mv,vdsat=250mv来计算。
重新计算结果:
M9:
Vgs=1.06V W=33.64u
M1-4:
Vgs=0.73V W=60.45u
M5-8:
Vgs=0.713V W=325.88u
中途发现总是整体仿真是不是难以发现规律,然后就对半仿真,最后拼一起了。
仿真下半电路:
根据之前仿真的经验,当所有管子进入饱和区时,多出来的电压会落在M3-M4上,vout处在2.5V左右,注意这时候Vds3,4会很大,这里就涉及到前面那个图了。翻回去那个图可以看到,随着Vds的增加,vdsat也会增加,与之对应的是Vgs也会增加,就会导致已经算好的vb1减去一个变大的Vgs3,4,使得M1,2的Vds太小了,压入线性区。所以需要合理抬高vb1。就可以使上述管子都进入饱和区。
接下来仿真上半部分:
去掉电流镜的电路:
接下来把电流镜接回来:
增益与相位(相位裕度):
用到的公式:
Av=
dB20(((VF("/vout1") - VF("/vout2")) / (VF("/vin1") - VF("/vin2"))))
phase=
phaseDegUnwrapped(((VF("/vout1") - VF("/vout2")) / (VF("/vin1") - VF("/vin2"))))
感觉还行
增益会和L有关,这里我锁定了L,跟着书上走,如果解放L,增益还会增加,但就是管子面积压不住了。。。。。。
算一下增益
仿真得到的增益是Av=372。
1、粗略增益公式:
Av=gm1[(gm3ro1ro3)||(gm5ro5ro7)]=283
2、精确增益公式(自以为的精确):
Av=gm1 * (R1 || R2)=399.28
其中,R1=[1+(gm3+gmb3)ro1]r03+r01
R2=[1+(gm5+gmb5)ro7]r05+r07
但是,考虑到M9的rout那么小,完全不是理想电流源,猜想会不会是其作为源极负反馈电阻在作怪。可惜,想了一下,源极带有负反馈电阻的共源极增益并不会超过它的本征增益(gmro),即gm1ro1=47,且会比这个数小很多。所以到底怎样精确计算增益呢?在这里保留,待我日后继续想想。
突然想明白了一点,上面那段话有些错误,共源共栅极合起来可以当作一个新的共源极,那么上面计算得出的R1可以当作新共源极的rout,R2当作负载阻抗,跨导还是gm1。
|Av|=gm * ro * Rd / [Rd+ro+Rs+(gm+gmb)roRs ]
=304.55
emm,还是不对,算了,再想想好了。
这里总结一下小经验:
一定要先用之前gm/id中算出来M7和M9的vgs7与vgs9,通过调电流镜的vgs,改变vgs7与vgs9直至到达之前算好的数,即:通过调节电流镜栅宽调整vgs7与vgs9,调到满意为止,不然整个电路的电流不稳定,调vin,vb1,vb2都白搭。我就忘记了,可把我坑坏了,电流飘来飘去的。
另外,输入共模信号会影响vds9,这个也需要小心。当vin确定后就不要乱改了,去调整vb1,vb2就可以了。
最后还想吐槽一句:
这个软件修改参数,点运行,居然会不给我用新参数,再换一次参数才更新到上一回的参数。大无语(奇怪的软件bug)
我知道是什么“bug”了。ADE左边修改参数后需要点一下别的空白区域,表示修改完成,不然参数就还停留在上一次。
2、折叠式共源共栅运放
打算仿一下下面这个电路:
有了套筒式共源共栅电路的经验这回就快多了,没有再分成小部分设计再拼接了,可喜可贺。具体还是按书上分配好电压电流后,算出管子参数。然后先调节Mb1,Mb2,Mb3的栅宽使得M11,M5,6,M9,10的vgs达到预设值,这个时候电路电流基本就卡死了,然后算一个大概的vb1与vb2再微调就行了。这回很快就好了。
参数分配:
仿真结果:
增益为48dB
3、两级运放:
按照书上例9.10来仿真:
书上有一点小错误,他电源电压只给了1v,但是在给第一级分配Vds时没有考虑到电流源Iss,由于Vds3=Vgs5,所以这个Vgs5小不了,也就是说分配给M3,4的vds肯定会很大,导致vb1可能会是个负数,vin也没法安排。所以我就擅作主张把vdd用2v了。后面计算的时候本来是要把每条路用120uA的,然后算的时候带错了,就用成了150uA,然后就将错就错得了,懒得改了,反正也不能给我流片用,自己仿真就随便来好了。
gmoverid计算结果:
这里面还是默认vdsat与vds设计值之间留有余度50mv
其中,M9是Iss电流源的mos管名称。
仿真结果:
看上述参数可以看到我的M9没有按照设计时的来算,由于Iss太小,其W也跟着小,转换到Wb1后就太小了,直接给我干到W下限了,然后就只能修改W9了。
增益与相位裕度
增益为65.852dB,相位裕度8°多。
可以看到两级运放的增益还是很高的,快到2000倍了,但这个电路没有进行频率补偿,所以相位裕度小得可怜。同时也能印证书上说的,两级运放会增加极点,使得很容易不稳定。
4、运放中的共模反馈
最近看了一位大佬的帖子:
折叠式共源共栅放大器+共模反馈电路+偏置电路的设计
这几天都在忙着仿真他给出的电路,按照他的方法进行设计,终于体验到了设计运放的乐趣,也算是把运放摸清楚了。
对于共模反馈,如果不是自己全程仿真了一次,还是觉得这个概念抽象,尤其是为什么需要共模反馈,就是只是为了平衡NMOS与PMOS路之间的电流不匹配吗?最重要的其实是稳定各个点的共模电平,在我眼中最重要的还是确定输出电平。
之前,我在设计了一个没有共模反馈的运放后其实还有一种很模糊的感觉,尤其是联系本科学模电时有关运放运算电路时,还是无法理解(以下面这个图为例):
1、输入端真的可以直接接地吗?
2、输出端接电阻反馈网络再接回输入端,整个电路的工作状态不会崩掉吗?
3、输入到输出的增益那么大,那他输出到底是多少呢?我好像没有办法直接看出来输出端直流电压是多大?
在加入共模反馈电路后,这些问题好像都迎刃而解了。
首先对于运放,它的增益很大,所以用于处理的是小信号,小信号被放大。运放的输入“虚短”,指的是它的端口差模值很小,但是还是会有一个共模电平值。某个端口接地,指的是在这个端口没有小信号加入,而不是指这个端口直接电压就是0了,是在一个直流电压上没有上下波动。用virtuoso仿真后,对差模小信号与共模信号的理解又上了一个台阶(之前有些抽象,没有理解到位,也怪我学术不精)。
第二个问题,需要得到在没有共模反馈时,运放的输入输出范围。在加上了反馈(如上图的电阻负反馈网络)后,会不会使输入超出了输入共模范围,如果在范围内,电路是可以正常工作的。
第三个问题,正是由于共模反馈的加入使得可以有一个Vref与输出共模信号进行比较,将误差值送回某个可以很好控制整个电路的电流源,利用反馈不停地使输出共模信号与Vref靠拢,那么就是这里,Vref就成了你需要的输出电平,感觉好神奇。只需要调Vref,输出电平就会靠过来。当然,你需要提前算好无共模反馈时运放的输出摆幅,不然随便调Vref超出输出摆幅会使电路无法正常工作(带宽异常,增益异常等等)。
又仿真了一段时间,共模反馈就是用在运放的同一支路有两个电流源决定电流大小,这两个电流源肯定没法设置到一模一样的电流,有一点偏差就被放大,直至一方无法工作。所以OTA不需要共模反馈,套筒式需要。
下面放一个我仿真的运算电路:
运放电路:
运放电压增益为66dB,输入共模范围为0.7-2.1V,输出共模范围为0.4到1.34V。
运算电路:
这里反馈网络的两个电阻都是10M。
低频时,可以看到符合我们计算的增益为2。
仿真至此也算是了结了我对运放很多不理解之处,好开心。
第十二章 带隙基准
最近想再研究一下这部分知识了。还没有好好仿真过。
0、部分带隙学习资源汇总处
我学习带隙仿真的第一个视频:带隙基准电路原理及仿真完整版
1、正负温度系数初仿真
负温度系数:
设置vdd为1.8v,I0为5uA。仿真温度为-40~85℃。
仿真结果如下:
可以看到负温度系数为-1.5573mV/℃
正温度系数:
两个三极管通过的电流均为5uA,vdd为1.8mV。右边管子为2个并联。
可以读出正温度系数为:62.785μV/℃。
2、简单的带隙基准
这个是搭好的电路,电源电压1.8v:
参数调节思想是,先调左半边电路获得PTAT电流,然后再通过电流镜传到右侧电阻上生成PTAT电压再与一个PNP管的Vbe的CTAT电压叠加,通过电阻的比值生成带隙基准电压。
电路中mos管的长度都一致,先扫描pmos和nmos的宽度,使得在27℃时Vd12=Vd1-Vd2与Vs12=V1-V2的值尽可能趋于零,为的是在27℃时获得零温度系数的带隙电压(仿真结果并不能得到,会靠左一些,不会调这个零温度系数点与温度的关系):
选择合适的PMOS与NMOS宽度后再调节电阻(这个感觉很重要,但感觉也没啥用,插个眼,说不定以后就懂了)。
左边电阻为R1,右边电阻为R2,扫描R2,此时查看ppm与输出带隙电压图像:
附带一下ppm的计算公式:
(((ymax(VS("/Vbg")) - ymin(VS("/Vbg"))) / (85-(-40)) / average(VS("/Vbg"))) * 1000000)
这里的Vbg指的是我最后要输出的带隙电压端口。(85-(-40))指的是仿真温度范围。
公式含义是:
(最大值-最小值)/(平均值 * 温度范围) * 1000000
结果如下:
3、加上运放的带隙基准
电路与参数可以参考何乐年的模拟集成电路设计与仿真。
我的仿真也是按照这个的,这个最后也没有什么特殊的地方。
运放内部:
只是仿真的时候需要考虑一下运放的正负端口接哪里,如果接反了运放就不会正常工作了。
4、低压带隙基准
可以看到,我的运放的增益为81dB,已经将输入的差控制地十分小了,但是还是避免不了被沟道长度调制效应背刺。如图所示,最右侧的PMOS的VDS是由电阻与漏电流决定的,那个电阻变化阻值,漏电流就因为沟道长度调制效应微微变化,但这个变化对于带隙基准的ppm来说就是剧变。拉扎维公式(12.69)中,先当R4=R2时,仿真R2大小,使VBG正常工作,约为1.2V;再修改R4=k*R2的比例重新仿真R2的值。
我这里随便仿真了一下(有点难以使ppm小于60)。R3就相当于书上的R4.
突然想到应该补充一下这里怎么仿真运放和调节带隙的PMOS:
我的运放使用的是两级OTA(无共模反馈),好处是输出共模范围大:
我是用的gm/id方法设计的。易得gm/id=2/vov,而vov会影响输出共模范围,就一个nmos和一个pmos(上图第二级电路中)的vov卡着输出共模范围,同理,输入共模范围也是。想要输入输出共模范围大一些,就让vov小一些,也就是说让gm/id大一些。我取了gm/id=12(在sansen的书中规定了强反型区和弱反型区,vov需要在一个范围内,我忘了多少了,想知道的可以去看看sansen前两章)。
在仿真运放时需要关注其输入输出共模范围,比如VBE一般为0.7V,那么运放的输入共模最小值就需要比0.7V更小。对于运放的输出则可以由带隙的PMOS的VGS来调整,只要调制R1的阻值就可以调整顶端PMOS(M3,M4)的VGS,然后让PMOS的栅极电压落在运放的输出共模范围内就可以了。
所以,仿真步骤就是要先搭好电路,调整R1使电路电流合理,PMOS栅极电压在运放的输出共模范围内,使电路电流不至于太大(使R4不会落一个大电压把M5压入线性区),又使电流不至于太小(使M3,M4进入亚阈值区)。确定好R1后,再去调整R2(R3=R2),R4。
5、带隙的简并点仿真
把运放的输出断开,在PMOS的栅极加一个vdc=x的电压源,测量运放的输出电压与x电压的图像:
可以看到只有一个可以工作的电压点,也就是说不需要启动电路也可以直接正常运行。
6、包含双VBE的基准产生器
如下图,拉扎维书468页:
这个电路的思想是把VT * ln(N)这一项弄大一倍,使得和运放失调电压之间的差距拉大,使运放失调电压的影响减小。本来以为这个很好仿真,没有什么坑,试了一下,沟道长度调制效应可真坑啊。
可以看到M1,M2,M3/M4的电流由于沟道调制效应还是很不同的。
由于运放的输入在R1,R2之间,M1,M2的漏极电压就不相同了,沟道调制效应使得其电流也不大一样。
这时有两种方法:
1、需要缩小R2之间的电压差,使得沟道调制效应的影响变小。可以定好R2的值,在两端电压差不大后,再调节R1。
2、增大漏电流,就算电压差很大,两个管子漏电流的差值在大的漏电流相比差距也不大了。
7、浮动基准电压
拉扎维书478页
想仿真这个,还需要学习其内部子结构:
自偏置共源共栅电流源。
7.1、自偏置低压共源共栅
电流为25μA,对电阻阻值进行扫描:
可以看到177mv <= R * I <=330mv时,两个管子都是在饱和区的。
7.2、自偏置低压共源共栅基础上的简单带隙基准
先把下图的简单带隙基准调出来,再想更复杂的部分。
比较头疼的就是两条支路的电流如何确定。
看了一篇论文,问题解决哈哈哈,舒坦。《一种自偏置低压共源共栅带隙基准电路设计》:
就是那个画星的地方,解决了问题。
下面还是用拉扎维的图来描述仿真流程:
1、确定想要的I1,I2大概想要多大,我取值为40uA。
2、R1两端电压为VT * ln(N)=26mv * ln8 =54mv,实际略有偏差,可以从电路图上读,我的是60mv。然后用欧姆定理求出R1=1.5KΩ。
先利用这个图可以确定低压自偏置共源共栅电路的R的取值范围:
|Vgs1|-|Vthp2|<= R * I <=|Vthp1|
注意观察不定式右侧的|Vthp|一般在0.3-0.5v之间,不等式左侧相当于一个过驱动电压,所以可以利用gm/id的方法设计mos管宽长比,使得Vov大概取200mv或者更低,使得R * I的取值可以更多。
3、在利用gm/id方法设计好I=40uA,Vov=200mv时NMOS与PMOS的宽长比参数后,随便填一个R2,R3的值,看一下MOS管的Vth与Vgs,方便确定上述不等式的范围(我的):
250mv<= R2 * I1 <=332mv
取了一个中间数 280mv,算得R2=7K(然后发现R3取7K也刚好,就懒得再管R3的范围了):
4、得到PTAT电流后作用在电阻R4上得到PTAT电压,再叠加CTAT电压,得到带隙基准电压:
注:电源电压为5V。
7.3、浮动基准电压(简易版)
没有按书上的仿真,先通过上面的电路进一步仿真额。因为我按书上的一直仿真出错,现在终于找到问题的原因了,来看我慢慢讲述:
(找到问题真的超级开心,涉及到我运放的一些概念又进一步加深了)
下面是已经仿真出来的电路,来证明书上的结构确实是可以使用的:
两级运放结构(含共模反馈):
首先是运放的设计,拉扎维上没有画出电路需要共模反馈。这个运放需要很高的增益来保持E与F电压几乎保持一致。这里就需要用到二级运放,以及其共模反馈。
其次,整个电路的电流大小也会影响运放的使用。我就是因为是自己使用不太看重电路电流的大小,结果上了一个大电流,导致运放十分难用。共模反馈失效。电流是从R5的左侧流向右侧,从R4的右侧接上流向左侧,所以R4的右侧电压会很大,即VE会略大于VF。调电路时先让调R6,调整下半路的电流,然后R4=R6,R5=R1看电路效果,然后调大R5。共模运放的检测点是从两个10M电阻上测得。VREF=1/2(VOP+VON),设计VREF的大小时需要观察预计的VOP和VON能否满足。比如,我需要VOP-VON=2.2V。已知VOP+VON=2VREF,那VREF就得有个3V到4V才好用。那么设计运放的时候就把VREF为3.5V左右调精准就可以了。这个得自己设计过共模反馈才能理解,我用文字我感觉都无法描述清楚。
至于为什么要用小电流,是因为E与F点上下的mos管的VGS固定了,能变化的只有VDS,PMOS与NMOS都因E与F点电压而电流有所变化,即沟道调制效应在影响。使用小电流就能使下面的NMOS的VDS小一些,上面PMOS的VDS大一些,从而运放的输入就能稳定在一个小的值上。因为沟道长度调制效应影响力也有限,电流微微变大也可能把VDS(NMOS)整到一个大电压上,运放输入共模电压太大,其第一级电流源很可能就被压入线性区,使得运放很多元件无法正常工作,从而运放性能看起来就很差。
总之,记住电路电流要小一些就可以了。(我当时电路电流用了80u,然后就崩了)
7.4、浮动基准电压(书478页,图12.38)
电路仿真和7.3内容接近。
后记 其他书的电路仿真
这个我就重新开一个帖子了,这个帖子太长了。之后就在这里放链接。
小刘同学的sansen-virtuosoIC618电路仿真记录