Differential Pair with Resistive Load

Small-signal analysis

Schematic

Differential voltage gain

Quit

eq1={Vo1/R1+Gm1*VG1==0,
Vo2/R2+Gm2*VG2==0,
Gm1*VG1+Gm2*VG2==Ys*VS,
VG1==Vi1-VS,
VG2==Vi2-VS}

sol1=Solve[eq1,{Vo1,Vo2,VS,VG1,VG2}]

Vo1=Vo1 /. sol1[[1,1]]

Vo2=Vo2 /. sol1[[1,2]]

Vo1=Collect[Vo1,{Vi1,Vi2}, Factor]
Vo2=Collect[Vo2,{Vi1,Vi2}, Factor]

Vo1=Collect[Vo1 /. {Vi1->Vic+Vid/2,Vi2->Vic-Vid/2},{Vid,Vic},Factor]
Vo2=Collect[Vo2 /. {Vi1->Vic+Vid/2,Vi2->Vic-Vid/2},{Vid,Vic},Factor]

Vod=Collect[Vo1-Vo2,{Vid,Vic},Factor]

Vodd=Simplify[Vod /. Vic->0]

Avd=Simplify[Vodd/Vid]

Avdideal=Simplify[Avd /. {Gm1->Gm,Gm2->Gm,R1->R,R2->R}]

Common-mode to differential voltage gain

Vodc=Simplify[Vod /. Vid->0]

Avc=Simplify[Vodc/Vic]

Avcideal=Simplify[Avc /. {Gm1->Gm,Gm2->Gm,R1->R,R2->R}]

Vodc=Simplify[Vodc /. {Gm1->Gm+dGm/2,Gm2->Gm-dGm/2,R1->R+dR/2,R2->R-dR/2}]

Avc=Simplify[Vodc/Vic]

Avc=Expand[%]

Avc=Simplify[Avc /. {Ys->Gds}]

Expand[Avc]

num=Numerator[Avc]
den=Denominator[Avc]

den=den /. Gds->0

Avca=num/den

Expand[%]

Avca1=-(Gds*R)/2*(dR/R+dGm/Gm)

Simplify[Avca1-Avca]

CMRR=Simplify[Gm*R/-Avca1]

CMRR1=2*Gm/Gds*1/(dGm/Gm+dR/R)

Simplify[CMRR1-CMRR]

Noise analysis

Output noise PSD

Quit

eq1={InR1+Vo1/R+InM1+Gm*VG1==0,
InR2+Vo2/R+InM2+Gm*VG2==0,
Gm*VG1+Gm*VG2==Ys*VS,
VG1==Vi1-VS,
VG2==Vi2-VS}

sol1=Solve[eq1,{Vo1,Vo2,VS,VG1,VG2}]

Vo1=Vo1 /. sol1[[1,1]]

Vo2=Vo2 /. sol1[[1,2]]

Vno1=Simplify[Vo1 /. {Vi1->0,Vi2->0}]
Vno2=Simplify[Vo2/. {Vi1->0,Vi2->0}]

Vnout=Simplify[Vno1-Vno2]

Snout=R^2*(SnM1+SnM2+SnR1+SnR2)

Rnout=R^2*(GnM1+GnM2+GnR1+GnR2)

Rnout=Simplify[Rnout /. {GnM1->GnM,GnM2->GnM,GnR1->GnR,GnR2->GnR}]

Rnin=Simplify[Rnout/(Gm*R)^2]

Output thermal noise power (voltage)

fc=1/(2*Pi*R*C)

Bn=Pi/2*fc

Rnoutth=Simplify[Rnout /. {GnM->gamma*Gm,GnR->1/R}]

S0=4*kT*Rnoutth

Vnout2=Simplify[S0*Bn]

Input-referred thermal noise

Rninth=Simplify[Rnin /. {GnM->gamman*Gm,GnR->1/R}]

Expand[%]

etath=Simplify[Rninth*Gm/(2*gamman)-1]

Rninth1=2*gamman/Gm*(1+etath)

Simplify[Rninth1-Rninth]

Input-referred flicker noise

Rninfl=Simplify[Rnin /. {GnM->Gm^2*rhon/(W*L*f),GnR->0}]

Matching

We can reuse the above noise analysis, but now InM1, InM2, InR1 and InR2 represent the currents due to mismatch

Vno1
Vno2

Vod=Simplify[Vno1-Vno2]

Vod=Collect[Vod,R,Factor]

Vod=Simplify[Vod /. {InM1->dI/2,InM2->-dI/2,InR1->dR/R*Ib/2,InR2->-dR/R*Ib/2}]

Vos=Simplify[Vod/(Gm*R)]

Expand[Vos]

Vos=Simplify[Vos /. {dI->Ib*dbeta/beta-Gm*dVT0}]

Expand[Vos]

Vos1=dVT0-Ib/Gm*(dbeta/beta+dR/R)

Simplify[Vos1-Vos]

Vos=Vos1

sigmaVos2=sigmaVT2+(Ib/Gm)^2*(sigmabeta2+sigmaR2)

sigmaVos2=sigmaVos2 /. {sigmaVT2->AVT^2/(W*L),sigmabeta2->Abeta^2/(W*L)}