#Value of Transconductance
import math
#variable declaration
VGS1=-3.1 #in Volt
VGS2=-3 #in Volt
ID1=1 #in mA
ID2=1.3 #in mA
#calculations
delVGS=VGS2-VGS1 #in Volts
delID=ID2-ID1 #in mA
gm=delID*10**-3/delVGS #in mhos
#Result
print("Transconductance in mhos : %.3f"%gm)
#AC drain resistance transconductance and amplification factor
import math
#variable declaration
VGS1=0 #in Volt
VGS2=0 #in Volt
VGS3=-0.2 #in Volt
VDS1=7 #in Volt
VDS2=15 #in Volt
VDS3=15 #in Volt
ID1=10 #in mA
ID2=10.25 #in mA
ID3=9.65 #in mA
#Calculations
delVDS=VDS2-VDS1 #in Volts
delID=ID2-ID1 #in mA
rd=delVDS/delID #in Kohm
delVGS=VGS3-VGS2 #in Volts
delID=ID3-ID2 #in mA
gm=delID*10**-3/delVGS #in mhos
mu=rd*10**3*gm #unitless
#Result
print("AC drain resistance in Kohm : %.0f"%rd)
print("Transconductance in mhos : %.3f"%gm)
print("Amplification factor : %.0f"%mu)
#Voltage Amplification
import math
#variable declaration
gm=2 #in milli-mho
RL=10 #in Kohm
#calculation
Av=gm*10**-3*RL*10**3 #unitless
#Result
print("assuming rd>>RL")
print("Voltage amplification : %.0f"%Av)
#Output voltage of amplifier
import math
#Variable declaration
RL=20.0 #in Kohm
RS=1.0 #in Kohm
RG=1.0 #in Mohm
Cs=25.0*10**-6 #in uF
mu=20.0 #unitless
rd=100.0 #in Kohm
Vs=2.0 #in Volt
f=1.0*10**3 #in KHz
#Calculations
Xc=1/(2*math.pi*f*Cs) #in Ohm
Av=mu*RL/(rd+RL) #unitless
Vo=Av*Vs #in Volt
#Result
print("Xc in Ohm : %.1f"%(math.floor(Xc*10)/10))
print("As Xc<<Rs, therefore Cs bypasses all ac components. ")
print("Output voltage in volt : %.2f"%Vo)
#IDQ VGSQ VD VS VDS VDG
import math
#variable declaration
R1=2.1 #in Mohm
R2=270 #in Kohm
RD=4.7 #in Kohm
RS=1.5 #in Kohm
VDD=20 #in Volt
VP=-4 #in Volt
IDSS=8 #in mA
#Calculations
#step 1 : Find VGS :
VG=R2*10**3*VDD/(R1*10**6+R2*10**3)
print("step 1\nVS=ID*RS-VGS Volt")
print("VGS=VG-VS=2.28-1.5*ID")
#step 2 : Find ID :
print("\nstep 2\nID=IDSS*[1-VGS/VP]^2 mA")
print("ID=8*[1-(2.28-1.5*ID)/4]^2 mA")
print("2*ID=39.44-18.84*ID+2.25*ID^2")
print("2.25*ID^2-20.84*ID39.44=0")
print("ID=6.6mA or 2.65mA")
print("For ID =6.6mA VDS=-ve")
print("So discard the value so IDQ = 2.65mA.")
ID=2.65 #in mA
#step 3 : Find VGSQ :
IDQ=ID #in mA
VGS=2.28 #in Volt
VGSQ=VGS-1.5*IDQ #in Volt
#step 4 : Find VDSQ :
VDSQ=VDD-IDQ*(RD+RS)#in Volt
#step 5 : Find VD,VS and VDG :
VDS=VDSQ #in Volt
VG=VGS #in Volt
VS=ID*RS #in Volt
VD=VS+VDS #in Volt
VDG=VD-VG #in Volt
print("IDQ in mA : %.3f"%IDQ)
print("\nstep 3\nVGSQ in Volt :%.3f"%VGSQ)
print("VD in Volt :%.3f"%VD)
print("VS in Volt :%.3f"%VS)
print("\nstep 4\nVDS in Volt :%.2f"%VDS)
print("\nstep 5\nVDG in Volt :%.3f"%VDG)
#Pinch off voltage
import math
#variable declaration
a=5.6*10**-6/2 #in meter
k=12 #unitless
epsilon_o=8.86*10**-12 #in F/m
epsilon=k*epsilon_o #in F/m
ND=10**15 #in cm^-3
ND=10**15*10**6 #in m^-3
e=1.6*10**-19 #in Coulamb
#Calculationd
VP=e*ND*a**2/(2*epsilon) #in Volt
#Result
print("Pinch off voltage in volts : %.2f"%VP)
#Plot gm VS IDSS
import math
#Variable declaration
print("We have,\nID=IDSS*[1-VGS/VP]^2\n")
print("Mutual conductance, gm = (delID/delVGS)\n\t\t = IDSS*2*[1-VGS/VP]*(-1/VP)\n\t\t = (-2*IDSS/VP)*[1-VGS/VP]");
################------------PLOT------------#############
t = arange(0.0001,3 , 0.0005)
t2 = arange(0.0001,8.0/3.0 , 0.0005)
a=arange(0.001,8,0.0005)
x=(8.0*a/3.0)/a
plot(t2,8*t2/t2,'b')
plot(x,a,'b')
plot(t,(3*t),'--')
text(1.2,8.2,'gm')
text(8.0/3.1,8.2,'Vgs = 0')
text(8.0/4,4.1,'tan(theta) =1/3')
xlabel('gm(in mS)')
ylabel('IDSS(in mA)')
title('gm versus IDSS')
#########---------------------------------------##########
print("\nClearly the plot of gm vs IDSS for VD=-6V, IDSS=8mA is a straight line of slope=-2/VP=-(2/-6)=1/3")
#Channel width W
import math
#variable declaration
L=1.25 #in um
mu_n=0.065 #in m^2/V-s
Cox=6.9*10**-4 #in F/m^2
VT=0.65 #in Volt
ID_sat=4 #in mA
VGS=5 #in Volt
#calculations
#Formula : ID_sat=W*mu_n*Cox*(VGS-VT)^2/(2*L)
W=ID_sat*10**-3*2*L*10**-6/(mu_n*Cox*(VGS-VT)**2)
#Result
print("Channel Width in micro meter :%.1f"%(W*10**6))