MOS管vd、vdsat和region的关系【详细作图步骤】

 仿真得到的region含义

 0 截止区

线性区(三极管区)

2 饱和区

3 亚阈值

4 break down

1.Vgs为3.3,扫描Vd

MOS管的源端和漏端分别接Vg和Vd,可设置Vg为3.3V,Vd为变量,设置变量Vd值为3.3V,dc仿真并对design variable ——Vd进行扫描,扫描范围选择0-3.3V,扫描方式选择线性,【automatic方式不准确,尽量避免使用】,step size可选择0.01,这样仿真设置就完成了。

接下来设置仿真完成后的输出,ADE→output→to be saved→select OP Parameters,在电路图中选择需要观测的MOS管,然后ADE的右下角会出现Save Operating Points窗口,选择输出OP参数有两种方式,

1.在Operating Parameters下边的框中输入vds vdsat vgs vth vgt region【仿真结果证明vgt=vgs-vth,所以也可以只输入vgt而省略vgs和vth啦】,中间用空格隔开,都是小写字母,【发现了遇到过的cadence中隔开两个变量的都是空格,比如给线打label时也是用空格隔开】

2.也可以点Operating Parameters下边的框的三个点点···,点击get information,选择需要输出的参数即可。

输出OP参数选择完成之后,选上Plot,使其仿真完成后自动plot。

然后选择Outputs→to be plotted→select on design,选择Vd。这样输出也设置好了,

下面开始仿真吧!

仿真完成,得到关于直流工作点的图啦!

tsmc.18工艺中,最小尺寸的NMOS,vd>vdsat时,region由1变为2。(Vgs=3.3V)

为了保证PVT下,管子处于饱和区,vd需要比vdsat大某个经验值。

vov=vgs-vth=vgt,从plot得到的图中可以看到在vds达到vgt之前,就已经进入了饱和区(region=2),这是由于短沟道器件中的速度饱和效应导致的。

贴张eetopregion判别MOS管工作区;以及vdsat、vds、vgs-vth之间的关系 - Analog/RF IC 设计讨论 - EETOP 创芯网论坛 (原名:电子顶级开发网) -上的图

2.Vd为3.3,扫描Vgs

除了扫描变量设置不同,vd=3.3V,对vg进行扫描,其他就和上述步骤一样~\(≧▽≦)/~

然后发现对于tsmc.18,nmos3v_mac最小尺寸W=2u,L=350n的管子,随着Vg的增加,vgt也以同样斜率增加,NMOS依次进入截止区、亚阈值区、饱和区,当-261mV<vgt<0V时,NMOS处于亚阈值区,当vgt>0时,进入饱和区。

为了实现低功耗,通常使放大器输入对管工作在亚阈值区,可以在使vgt在上述亚阈值范围内取值。

也可以在OP参数里加上id,看看MOS管工作在亚阈值区和截止区的电流情况,可以发现,随着vgt的增加,id一直是增加的趋势,在截止区和亚阈值区增加较缓,在饱和区增加较快:

在截止区内在随着vgt增加,id从46.88f增加到31.85n,在亚阈值区,id增加到约5u,在饱和区,当vg为3.3V时,id增加到最大,约1.15m。

当尺寸变大时,电流也会随之变大。

  • 5
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是一个简单的 nmos 晶体管 Verilog-A 建模代码的示例: ``` `include "constants.vams" module nmos_v1 (drain, gate, source, body, vbs, vgs, vds, ids); // 定义端口 inout drain, source, gate, body; input vbs, vgs, vds; output ids; // 定义参数 parameter REAL W = 1e-6; // 晶体管宽度 parameter REAL L = 1e-6; // 晶体管长度 parameter REAL tox = 2.5e-9; // 氧化层厚度 parameter REAL nsub = 1e16; // 衬底掺杂浓度 parameter REAL eps_ox = 3.9*8.854e-12; // 氧化层介电常数 parameter REAL eps_si = 11.7*8.854e-12; // 硅介电常数 parameter REAL mu = 0.05; // 迁移率 // 定义局部变量 real Vth; real vdsat; real idsat; real vfb; real phi_f; real eps_eff; real Cox; real Cgs; real Cgd; real Cgb; real Cdb; real gamma; real lambda; real W_eff; real L_eff; real Vgs; real Vds; real Vbs; real VT; real VG; real VD; real VSB; real ID; real Rd; real Rs; real gm; real gmb; real go; real Cgso; real Cgdo; real Cgbo; real Cdbo; real Cgsd; real Cgbd; real Cox_inv; real VDD; // 计算局部变量 Vth = 0.5 * (sqrt(4*nsub*eps_si*phi_f) + gamma*sqrt(eps_si)*Vsb - Vdsat); vdsat = Vgs - Vth; idsat = 0.5*mu*Cox*W_eff/L_eff*(Vgs-Vth)^2*(1+lambda*Vds); vfb = -phi_f + eps_si/eps_ox*phi_f; phi_f = kT/q*log(nsub/ni); eps_eff = eps_si*eps_ox/(eps_si+eps_ox); Cox = eps_ox/tox; Cgs = Cox*W*L_eff/(L_eff+W_eff); Cgd = Cgs; Cgb = Cox*W*Leff/(Leff+W_eff); Cdb = Cox*Leff*L/(L+W_eff); gamma = sqrt(2*q*eps_si*nsub)/(Cox*Vt); lambda = 0; W_eff = W-gamma*(sqrt(phi_f-Vbs)-sqrt(phi_f)); L_eff = L-lambda*W_eff; VT = Vt*log((nsub)/ni); VG = gate; VD = drain; VSB = body; ID = 0; Rd = 0; Rs = 0; gm = 0; gmb = 0; go = 0; Cgso = 0; Cgdo = 0; Cgbo = 0; Cdbo = 0; Cgsd = 0; Cgbd = 0; Cox_inv = 1/Cox; VDD = 1.8; // 计算电流 if(VD > VG) begin ID = mu*Cox*W_eff/L_eff*(Vgs-Vth-Vds/2)*Vds*(1+lambda*Vds); Rd = 1/lambda/mu/W_eff*Cox*L_eff; end else begin ID = mu*Cox*W_eff/L_eff*(Vgs-Vth)^2*(1+lambda*Vds); Rd = 0; end if (VG <= Vth) begin ID = 0; Rd = 0; end if (ID > idsat) begin ID = idsat; Rd = Vdsat/idsat; end if (ID < 0) begin ID = 0; Rd = Vdsat/idsat; end // 计算导通电阻 if (VDS <= Vgs-Vth) begin Rs = 1/(mu*Cox*W_eff/L_eff*(Vgs-Vth-VDS/2)); end else begin Rs = 1/(2*mu*Cox*W_eff/L_eff*(Vgs-Vth)*(Vdsat-VDS/2)); end // 计算导通电阻的变化量 if (VDS < Vgs-Vth) begin gm = mu*Cox*W_eff/L_eff*(2*(Vgs-Vth-VDS/2)); gmb = 0; go = mu*Cox*W_eff/L_eff*Vdsat; Cgso = Cox*W_eff*gamma/2; Cgdo = Cox*W_eff*gamma/2; Cgbo = Cox*Leff/gamma; Cdbo = Cox*Leff/gamma; Cgsd = Cox*L_eff/gamma; Cgbd = 0; end else if (VDS < vdsat) begin gm = mu*Cox*W_eff/L_eff*(2*(Vgs-Vth-Vdsat/2)); gmb = 0; go = mu*Cox*W_eff/L_eff*Vdsat; Cgso = Cox*W_eff*gamma/2; Cgdo = Cox*W_eff*gamma/2; Cgbo = Cox*Leff/gamma; Cdbo = Cox*Leff/gamma; Cgsd = Cox*L_eff/gamma; Cgbd = 0; end else begin gm = mu*Cox*W_eff/L_eff*(2*(Vgs-Vth-Vdsat/2)); gmb = 0; go = 0; Cgso = Cox*W_eff*gamma/2; Cgdo = Cox*W_eff*gamma/2; Cgbo = Cox*Leff/gamma; Cdbo = Cox*Leff/gamma; Cgsd = Cox*L_eff/gamma; Cgbd = 0; end // 输出电流和阻值 ids = ID; endmodule ``` 该代码定义了一个名为 `nmos_v1` 的模块,其中包含了各种局部变量和计算公式,以及从输入端口 `drain`, `gate`, `source`, `body`, `vbs`, `vgs`, `vds` 中读取输入信号的代码。最后,该模块通过输出端口 `ids` 输出计算出的电流值。在模拟器中调用该模块时,需要传递相关参数,如晶体管的宽度、长度、氧化层厚度、衬底掺杂浓度等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芯宝典

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值