nmos1
Download MATLAB and LTSpice files: nmos.zip
clear
load spice
d = N1u();
disp(d)
name: 'N_1u'
TOX: 2.0000e-008
NSUB: 1.0000e+017
GAMMA: 0.5000
PHI: 0.7000
VTO: 0.8000
DELTA: 3
UO: 650
ETA: 3.0000e-006
THETA: 0.1000
KP: 1.2000e-004
VMAX: 100000
KAPPA: 0.3000
RSH: 0
NFS: 1.0000e+012
TPG: 1
XJ: 5.0000e-007
LD: 1.0000e-007
CGDO: 2.0000e-010
CGSO: 2.0000e-010
CGBO: 1.0000e-010
CJ: 4.0000e-004
PB: 1
MJ: 0.5000
CJSW: 3.0000e-010
MJSW: 0.5000
VSB = 0; VGS = 2; VT = d.VTO; e0 = 8.85e-12; eox = 3.8*e0; COX = eox/d.TOX; us = d.UO/(1+d.THETA*abs(VGS-VT)); k = us*COX*1e-4; % contains conversion from m^2 to cm^2 disp('calculate KP'); disp(k) disp('given KP'); disp(d.KP)
calculate KP 9.7587e-005 given KP 1.2000e-004
L = 2e-6;
W = 10e-6;
Leff = L - 2*d.LD;
COX = eox/d.TOX;
sigd = (8.15e-22)*d.ETA/(COX*Leff^3);
disp('sigma d');
disp(sigd)
sigma d 2.4932e-007
beta = k*W/Leff; FS = 1; FB = d.GAMMA*FS; VDsat = (VGS-VT)/(1+FB); VDS = linspace(0,5,100); %sigd = 8e-3; idx = find(VDS<VDsat); v = VDS(idx); Vt = VT - sigd*v; Id = beta*((VGS-Vt).*v - (1+FB)*v.^2/2); idx = find(VDS>=VDsat); v = VDS; Vt = VT - sigd*VDS(idx); Id(idx) = 0.5*beta*(VGS-Vt).^2/(1+FB); plot(spice.vds,spice.data(:,1)*1e3,'--',v,Id*1e3); xlabel('V_{DS} (V)'); ylabel('I_d (mA)');