Gm Enhancement

Gm-enhanced Transconductor

Small-signal Differential Equivalent Transconductance

Full circuit Analysis

Quit

eq1={I1==Gm1*Vi1-Gms1*VG2b-Gds1*VG2b,
I2==Gm1*Vi2-Gms1*VG2a-Gds1*VG2a,
Gm1*Vi1-Gms1*VG2b-Gds1*VG2b==Gm2*VG2a-Gms2*VS+(Gds2+s*CGS2)*(VG2b-VS)+s*2*CGD2*(VG2b-VG2a),
Gm1*Vi2-Gms1*VG2a-Gds1*VG2a==Gm2*VG2b-Gms2*VS+(Gds2+s*CGS2)*(VG2a-VS)+s*2*CGD2*(VG2a-VG2b),
Gm2*VG2a-Gms2*VS+(Gds2+s*CGS2)*(VG2b-VS)+s*2*CGD2*(VG2b-VG2a)+Gm2*VG2b-Gms2*VS+(Gds2+s*CGS2)*(VG2a-VS)+s*2*CGD2*(VG2a-VG2b)==Ys*VS}

sol1=Solve[eq1,{I1,I2,VS,VG2a,VG2b}]

sol1[[1,3]]

VS=VS /. sol1[[1,3]]

Simplify[VS/. {Vi1->+Vid/2,Vi2->-Vid/2}]

sol1[[1,1]]

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

sol1[[1,2]]

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

Iod =Simplify[I1-I2]

Iod=Simplify[Iod /. {Vi1->+Vid/2,Vi2->-Vid/2}]

Ymeq=Simplify[Iod/Vid]

num=Numerator[Ymeq]
den=Denominator[Ymeq]

num=Collect[num,s,Factor]

n0=Coefficient[num,s,0]
n1=Coefficient[num,s,1]

wz=-n0/n1

den=Collect[den,s,Factor]

d0=Coefficient[den,s,0]
d1=Coefficient[den,s,1]

Gmeq=Simplify[n0/d0]

wp=Simplify[d0/d1]

Ymeq1=Gmeq*(1-s/wz)/(1+s/wp)

Simplify[Ymeq1-Ymeq]

Gmeqa=Simplify[Gmeq /. {Gds1->0,Gds2->0}]

wpa=Simplify[wp /. {Gds1->0,Gds2->0}]

wza=Simplify[wz /. {Gds1->0,Gds2->0}]

Analysis using the Half-circuit

Quit

eq1={Iod/2==Gm1*Vid/2-(Gms1+Gds1)*VS1,
Gm1*Vid/2-(Gms1+Gds1)*VS1==(-Gm2+Gds2)*VS1}

sol1=Solve[eq1,{Iod,VS1}]

sol1[[1,1]]

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

Gmeq=Simplify[Iod/Vid]

Gmeqa=Simplify[Gmeq /. {Gds1->0,Gds2->0}]

Analysis using the half-circuit with parasitic cap

Quit

eq1={Iod/2==Gm1*Vid/2-(Gms1+Gds1)*VS1,
Gm1*Vid/2-(Gms1+Gds1)*VS1==(-Gm2+Gds2+s*Cp)*VS1}

sol1=Solve[eq1,{Iod,VS1}]

sol1[[1,1]]

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

Ymeq=Simplify[Iod/Vid]

Ymeq0=Ymeq /. s->0

num=Numerator[Ymeq]
den=Denominator[Ymeq]

num=Collect[num,s,Factor]

n0=Coefficient[num,s,0]
n1=Coefficient[num,s,1]

wz=-n0/n1

den=Collect[den,s,Factor]

d0=Coefficient[den,s,0]
d1=Coefficient[den,s,1]

Gmeq=Simplify[n0/d0]

wp=Simplify[d0/d1]

Ymeq1=Gmeq*(1-s/wz)/(1+s/wp)

Simplify[Ymeq1-Ymeq]

Ymeqa=Simplify[Ymeq /. {Gds1->0,Gds2->0}]

num=Numerator[Ymeqa]
den=Denominator[Ymeqa]

num=Collect[num,s,Factor]

n0=Coefficient[num,s,0]
n1=Coefficient[num,s,1]

wz=n0/n1

den=Collect[den,s,Factor]

d0=Coefficient[den,s,0]
d1=Coefficient[den,s,1]

Gmeqa=Simplify[n0/d0]

wp=Simplify[d0/d1]

wp1=Gms1/Cp*(1-Gm2/Gms1)

Simplify[wp1-wp]

Half-circuit analysis

Quit

eq1={Iod/2==Gm1*Vid/2-Gms1*VS1a,
Gm1*Vid/2-Gms1*VS1a==-Gm2*VS1a}

sol1=Solve[eq1,{Iod,VS1a}]

sol1[[1,1]]

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

Gmeq=Simplify[Iod/Vid]

Noise Analysis

Full Circuit Analysis

Quit

eq1={I1==Gm1*Vi1-Gms1*VG2b+In1a,
I2==Gm1*Vi2-Gms1*VG2a+In1b,
Gm1*Vi1-Gms1*VG2b+In1a==Gm2*VG2a-Gms2*VS+In2a,
Gm1*Vi2-Gms1*VG2a+In1b==Gm2*VG2b-Gms2*VS+In2b,
Gm2*VG2a-Gms2*VS+In2a+Gm2*VG2b-Gms2*VS+In2b==YS*VS}

sol1=Solve[eq1,{I1,I2,VS,VG2a,VG2b}]

sol1[[1,1]]

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

sol1[[1,2]]

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

Iod =Simplify[I2-I1]

Ion=Simplify[Iod /. {Vi1->0,Vi2->0}]

Ion=Collect[Ion,{In1a,In1b,In2a,In2b},Factor]

Hn1a=Simplify[(Ion /. {In1b->0,In2a->0,In2b->0})/In1a]
Hn1b=Simplify[(Ion /. {In1a->0,In2a->0,In2b->0})/In1b]
Hn2a=Simplify[(Ion /. {In1a->0,In1b->0,In2b->0})/In2a]
Hn2b=Simplify[(Ion /. {In1a->0,In1b->0,In2a->0})/In2b]

Gnout=Hn1a^2*Gn1+Hn1b^2*Gn1+Hn2a^2*Gn2+Hn2b^2*Gn2

Gmeq=((Gm1 Gm2)/(Gm2-Gms1))

Rnin=Simplify[Gnout/Gmeq^2]

Rnin=Collect[Rnin,{Gn1,Gn2},Factor]

Gn1*Coefficient[Rnin,Gn1,1]

Gn2*Coefficient[Rnin,Gn2,1]

eta=Simplify[%/%%]

Rnin1=%%%*(1+eta)

Simplify[Rnin1-Rnin]

Thermal noise

Rnt=Simplify[Rnin /. {Gn1->gamman1*Gm1,Gn2->gamman2*Gm2}]

Rnt=Collect[Rnt,{gamman1,gamman2},Factor]

gamman2*Coefficient[Rnt,gamman2,1]

etath=Simplify[Gm1/(2*gamman1)*%]

etath=Simplify[etath /. Gms1^2->Gms1*n1*Gm1]

Rnt1=2*gamman1/Gm1*(1+etath)

Simplify[(Rnt1-Rnt) /. Gms1->n1*Gm1]

Flicker noise

Rnf=Simplify[Rnin /. {Gn1->Gm1^2*rhon/(f*W1*L1),Gn2->Gm2^2*rhon/(f*W2*L2)}]

1/(W1*L1)*Coefficient[Rnf,1/(W1*L1),1]

1/(W2*L2)*Coefficient[Rnf,1/(W2*L2),1]

etafl=Simplify[%/%%]

Rnf1=%%%*(1+etafl)

Simplify[Rnf1-Rnf]

Noise Analysis using the half-circuit

Quit

eq1={Inout1==-Gms1*VS1+In1,
-Gms1*VS1+In1==-Gm2*VS1+In2}

sol1=Solve[eq1,{Inout1,VS1}]

sol1[[1,1]]

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

Hn1=Simplify[(Inout1 /. In2->0)/In1]
Hn2=Simplify[(Inout1 /. In1->0)/In2]

Gnout=2*(Hn1^2*Gn1+Hn2^2*Gn2)

Gmeq=-((Gm1 Gm2)/(Gm2-Gms1))

Rnin=Simplify[Gnout/Gmeq^2]

Rnin=Collect[Rnin,{Gn1,Gn2},Factor]

Gn1*Coefficient[Rnin,Gn1,1]

Gn2*Coefficient[Rnin,Gn2,1]

eta=Simplify[%/%%]

Rnin1=%%%*(1+eta)

Simplify[Rnin1-Rnin]

Thermal noise

Rnt=Simplify[Rnin /. {Gn1->gamman1*Gm1,Gn2->gamman2*Gm2}]

Rnt=Collect[Rnt,{gamman1,gamman2},Factor]

gamman2*Coefficient[Rnt,gamman2,1]

etath=Simplify[Gm1/(2*gamman1)*%]

etath=Simplify[etath /. Gms1^2->Gms1*n1*Gm1]

Rnt1=2*gamman1/Gm1*(1+etath)

Simplify[(Rnt1-Rnt) /. Gms1->n1*Gm1]

Flicker noise

Rnf=Simplify[Rnin /. {Gn1->Gm1^2*rhon/(f*W1*L1),Gn2->Gm2^2*rhon/(f*W2*L2)}]

1/(W1*L1)*Coefficient[Rnf,1/(W1*L1),1]

1/(W2*L2)*Coefficient[Rnf,1/(W2*L2),1]

etafl=Simplify[%/%%]

Rnf1=%%%*(1+etafl)

Simplify[Rnf1-Rnf]

Gm-enhanced OTA

Small-signal transfer function

Quit

eq1={(Gds3+s*CL)*Vo1-Gms1*VG2b+Gm1*Vi1+Gds1*(Vo1-VG2b)==0,
(Gds3+s*CL)*Vo2-Gms1*VG2a+Gm1*Vi2+Gds1*(Vo2-VG2a)==0,
-Gms1*VG2b+Gm1*Vi1+Gds1*(Vo1-VG2b)==-Gms2*VS+Gm2*VG2a+Gds2*(VG2b-VS),
-Gms1*VG2a+Gm1*Vi2+Gds1*(Vo2-VG2a)==-Gms2*VS+Gm2*VG2b+Gds2*(VG2a-VS),
-Gms2*VS+Gm2*VG2a+Gds2*(VG2b-VS)+-Gms2*VS+Gm2*VG2b+Gds2*(VG2a-VS)==YS*VS}

sol1=Solve[eq1,{Vo1,Vo2,VS,VG2a,VG2b}]

sol1[[1,1]]

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

sol1[[1,2]]

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

Vod=Simplify[Vo2-Vo1]

Vod=Simplify[Vod /. {Vi1->Vid/2,Vi2->-Vid/2}]

Ad=Simplify[Vod/Vid]

num=Numerator[Ad]
den=Denominator[Ad]

den=Collect[den,s,Factor]

d0=Coefficient[den,s,0]
d1=Coefficient[den,s,1]

n0=num

Adc=Simplify[n0/d0]

wc=Simplify[d0/d1]

wu=Simplify[-Adc*wc]

num=Numerator[Adc]
den=Denominator[Adc]

num1=num /. Gds2->0

den=Expand[den]

den1=Simplify[den /. {Gds1*Gds2->0,Gds1*Gds3->0,Gds2*Gds3->0}]

Adca=Simplify[num1/den1]

Adca1=Gm1/(Gds1+Gds3*(1-Gms1/Gm2))

Simplify[Adca1-Adca]

num=Numerator[wc]
den=Denominator[wc]

num=Expand[num]

num1=Simplify[num /. {Gds1*Gds2->0,Gds1*Gds3->0,Gds2*Gds3->0}]

den1=Simplify[den /. {Gds1->0,Gds2->0}]

wca=Simplify[num1/den1]

wca1=(Gds1+Gds3*(1-Gms1/Gm2))/(CL*(1-Gms1/Gm2))

Simplify[wca1-wca]

num=Numerator[wu]
den=Denominator[wu]

num1=Simplify[num /. Gds2->0]

den1=den /. {Gds1->0,Gds2->0}

wua=num1/den1

wua1=Gm1/(CL*(1-Gms1/Gm2))

Simplify[wua1-wua]

Small-signal transfer function using half-circuit

Quit

eq1={Gm1*Vid/2-Gms1*VS1+Gds1*(Vod/2-VS1)+(Gds3+s*CL)*Vod/2==0,
Gm1*Vid/2-Gms1*VS1+Gds1*(Vod/2-VS1)==(Gds2-Gm2+s*Cp)*VS1}

sol1=Solve[eq1,{Vod,VS1}]

sol1[[1,1]]

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

Ad=Simplify[Vod/Vid]

Ad1=Simplify[Ad /. Cp->0]

num=Numerator[Ad1]
den=Denominator[Ad1]

den=Collect[den,s,Factor]

d0=Coefficient[den,s,0]
d1=Coefficient[den,s,1]

n0=num

Adc=Simplify[n0/d0]

wp=Simplify[d0/d1]

wu=Simplify[Adc*wp]

num=Numerator[Adc]
den=Denominator[Adc]

num1=num /. Gds2->0

den=Expand[den]

den1=Simplify[den /. {Gds1*Gds2->0,Gds1*Gds3->0,Gds2*Gds3->0}]

Adca=Simplify[num1/den1]

Adca1=Gm1/(Gds3*(Gms1/Gm2-1)-Gds1)

Simplify[Adca1-Adca]

Adca2=Gm1/Gds3/(Gms1/Gm2-Gds1/Gds3-1)

Simplify[Adca2-Adca]

Adcaa=Adca /. Gds1->0

Adcaa1=Gm1/Gds3/(Gms1/Gm2-1)

Simplify[Adcaa1-Adcaa]

num=Numerator[wp]
den=Denominator[wp]

num=Expand[num]

num1=Simplify[num /. {Gds1*Gds2->0,Gds1*Gds3->0,Gds2*Gds3->0}]

den1=Simplify[den /. {Gds1->0,Gds2->0}]

wpa=Simplify[num1/den1]

wpa1=(Gds1+Gds3*(1-Gms1/Gm2))/(CL*(1-Gms1/Gm2))

Simplify[wpa1-wpa]

num=Numerator[wu]
den=Denominator[wu]

num1=Simplify[num /. Gds2->0]

den1=den /. {Gds1->0,Gds2->0}

wua=num1/den1

wua1=Gm1/(CL*(Gms1/Gm2-1))

Simplify[wua1-wua]