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)');