Offset Analysis
Generated from OFFSET.wxm with rfMaxima 0.2.5 on Maxima 5.46.0.
All results were computed by executing the notebook; none is transcribed.
declare([beta,beta_square,gmp,gmn,Lp,Ln,Vic,VTn,Wp,Wn,I_TAIL],[constant,real,scalar])$
assume(beta>0)$
assume(beta_square>0)$
assume(gmp>0)$
assume(gmn>0)$
assume(Lp>0)$
assume(Ln>0)$
assume(Vic>0)$
assume(VTn>0)$
assume(Wp>0)$
assume(Wn>0)$
assume(I_TAIL>0)$
Differential Pair with Resistive Load
No Mismatch
See "Analysis and Design of Analog Integrated Circuits", 4th Ed., by P. R. Gray, P. J. Hurst, S. H. Lewis, R. G. Meyer, Wiley, 2001, p. 219-221
Large-signal solution Channel-length modulation neglected
Solution:solve([
I_TAIL=I_1+I_2,
I_1=1/2*beta*(Vgs_1-VT)^2,
Vgs_1=Vg_1-Vs_12,
Vg_1=Vic+Vid/2,
I_2=1/2*beta*(Vgs_2-VT)^2,
Vgs_2=Vg_2-Vs_12,
Vg_2=Vic-Vid/2,
Vds_1=VDD-RD*I_1-Vs_12,
Vds_2=VDD-RD*I_2-Vs_12,
Vout=Vds_1-Vds_2],
[I_1,I_2,Vg_1,Vg_2,Vgs_1,Vgs_2,Vds_1,Vds_2,Vs_12,Vout]);
ev(Vout,Solution);
taylor(-(sqrt(beta)*Vid*sqrt(4*I_TAIL-beta*Vid^2)*RD)/2,Vid,0,7);
coeff(%,Vid,1);
ev(%,I_TAIL=gmn^2/beta);
Differential Pair with Active Load
No Mismatch
See "Analysis and Design of Analog Integrated Circuits", 4th Ed., by P. R. Gray, P. J. Hurst, S. H. Lewis, R. G. Meyer, Wiley, 2001, p. 287-299
Large-signal solution Channel-length modulation neglected
Solution:solve([
I_TAIL=I_1+I_2,
I_1=1/2*betan*(Vgs_1-VTn)^2,
Vgs_1=Vg_1-Vs_12,
Vg_1=Vic+Vid/2,
I_2=1/2*betan*(Vgs_2-VTn)^2,
Vgs_2=Vg_2-Vs_12,
Vg_2=Vic-Vid/2,
I_3=-I_1,
Vgs_3=sqrt(2*(I_3)/betap)+VTp,
Vgs_4=Vgs_3,
I_4=1/2*betap*(Vgs_4-VTp)^2,
Iout=-(I_2+I_4)],
[Vgs_1,Vgs_2,Vgs_3,Vgs_4,Vg_1,Vg_2,Vs_12,Iout,I_1,I_2,I_3,I_4]);
ratsimp(ev((sqrt(betan)*Vid*sqrt(4*I_TAIL-betan*Vid^2))/2,
betan=beta_square*Wn/Ln));
taylor(%,Vid,0,3);
coeff(%,Vid,1);
Gm:ev(%,I_TAIL=gmn^2/(beta_square*Wn/Ln));
With mismatch
A differential NMOST input pair (W/L=50/2 micron) is loaded with a PMOST current mirror (W/L=36/1 micron) in a process with A_VT,N = A_VT,P = 6 mV micron and the ratio between the beta square (for W/L = 1) is N/P = 3. Calculate the input referred mismatch.
delta_VTn contribution
Solution:solve([
I_TAIL=I_1+I_2,
I_1=1/2*betan*(Vgs_1-VTn)^2,
Vgs_1=Vg_1-Vs_12,
Vg_1=Vic,
I_2=1/2*betan*(Vgs_2-(VTn+delta_VTn))^2,
Vgs_2=Vg_2-Vs_12,
Vg_2=Vic,
I_3=-I_1,
Vgs_3=sqrt(2*(I_3)/betap)+VTp,
Vgs_4=Vgs_3,
I_4=1/2*betap*(Vgs_4-VTp)^2,
Iout=-(I_2+I_4)],
[Vgs_1,Vgs_2,Vgs_3,Vgs_4,Vg_1,Vg_2,Vs_12,Iout,I_1,I_2,I_3,I_4]);
Calculation of IOSout and VOSin
IOSout:ev((sqrt(betan)*delta_VTn*sqrt(4*I_TAIL-betan*delta_VTn^2))/2,
betan=beta_square*Wn/Ln,
I_TAIL=1/2*beta_square*Wn/Ln*(Vic-VTn)^2+1/2*beta_square*Wn/Ln*(Vic-(VTn+delta_VTn))^2);
VOSin:taylor(ev(IOSout/(beta_square*Wn/Ln*(Vic-VTn))),delta_VTn,0,2);
VOSin:taylor(ev(IOSout/(beta_square*Wn/Ln*(Vic-VTn))),delta_VTn,0,1);
delta_VTp
Solution:solve([
I_TAIL=I_1+I_2,
I_1=1/2*betan*(Vgs_1-VTn)^2,
Vgs_1=Vg_1-Vs_12,
Vg_1=Vic,
I_2=1/2*betan*(Vgs_2-VTn)^2,
Vgs_2=Vg_2-Vs_12,
Vg_2=Vic,
I_3=-I_1,
Vgs_3=sqrt(2*(I_3)/betap)+VTp,
Vgs_4=Vgs_3,
I_4=1/2*betap*(Vgs_4-(VTp+delta_VTp))^2,
Iout=-(I_2+I_4)],
[Vgs_1,Vgs_2,Vgs_3,Vgs_4,Vg_1,Vg_2,Vs_12,Iout,I_1,I_2,I_3,I_4]);
Calculation of IOSout and VOSin
IOSout:ratsimp(ev(-(betap*delta_VTp^2+2*sqrt(I_TAIL)*sqrt(betap)*delta_VTp)/2,
betap=1/3*beta_square*Wp/Lp,
I_TAIL=beta_square*Wn/Ln*(Vic-VTn)^2));
VOSin:ratsimp(taylor(ev(IOSout/(beta_square*Wn/Ln*(Vic-VTn))),delta_VTp,0,2));
VOSin:ratsimp(taylor(ev(IOSout/(beta_square*Wn/Ln*(Vic-VTn))),delta_VTp,0,1));
Summing up the offset variances and
VOSin_total:sqrt(delta_VTn^2+(-(sqrt(Ln)*sqrt(Wp)*delta_VTp)/(sqrt(Lp)*sqrt(Wn)*sqrt(3)))^2);
VOSin:ratsimp(ev(VOSin_total,
delta_VTp=AVT/sqrt(Wp*Lp),
delta_VTn=AVT/sqrt(Wn*Ln)));
float(ev(%,Wn=50e-6,Ln=2e-6,Wp=36e-6,Lp=1e-6,AVT=6e-9));
The answer is 0.92 mV