import math
# Given
# let K=kT/e
K = 0.0259 # in V
Nd = 10**17 # in cm**-3
Na = 10**16 # in cm**-3
ni_Si = 1.45*10**10 # in cm**-3
ni_Ge = 2.40*10**13 # in cm**-3
ni_GaAs = 1.79*10**6 # in cm**-3
# Calculations and Results
# Vo=(k*T/e)*math.log(Nd*Na/ni**2)
Vo_Si = K*math.log(Nd*Na/ni_Si**2)
print("Built in potential for Si in Volts is {0:.4f}".format(Vo_Si))
Vo_Ge = K*math.log(Nd*Na/ni_Ge**2)
print("Built in potential for Ge in Volts is {0:.4f}".format(Vo_Ge))
Vo_GaAs = K*math.log(Nd*Na/ni_GaAs**2)
print("Built in potential for GaAs in Volts is {0:.4f}".format(Vo_GaAs))
import math
# Given
# let K=kT/e
K = 0.0259 # in V
Na = 10**18 # in cm**-3
Nd = 10**16 # in cm**-3
e = 1.6*10**-19 # in coulombs
Eo = 8.85*10**-12 # in m-3 kg-1 s4 A2
Er = 11.9
E = Eo*Er
ni = 1.45*10**10 # in cm**-3
# Calculations and Results
# Vo=(k*T/e)*math.log(Nd*Na/ni**2)
Vo = K*math.log(Nd*Na/ni**2)
print("{0:.4f}".format(Vo))
Nd *= 10**6 # in m**-3
Wo = math.sqrt(2*E*Vo/(e*Nd))
print("Depletion width in micro meters is {0:.4f}".format(Wo*10**6))
import math
# Given
# part(a)
# let K=k*T/e
K = 0.0259 # in V
Te = 5*10**-9 # in s
Th = 417*10**-9 # in s
ue = 120.0 # in cm2/V/s
uh = 440.0 # in cm2/V/s
Na = 5*10**18 # in cm**-3
Nd = 10**16 # in cm**-3
T1 = 300.0 # in kelvin
T2 = 373.0 # in kelvin
Tg = 10**-6 # in seconds
Vr = 5.0 # in volts
ni_300 = 1.45*10**10 # in cm**-3 at 300K
ni_373 = 1.2*10**12 # in cm**-3 at 373K
A = 0.01 # in cm2
e = 1.6*10**-19 # in coulombs
epsilon_o = 8.85*10**-12 # in F/m
epsilon_r = 11.9
V = 0.6 # in v
# Calculations and Results
# De=k*T*ue/e
De = K*ue
Dh = K*uh
Le = math.sqrt(De*Te)
Lh = math.sqrt(Dh*Th)
print("Diffusion length of electrons in cm is {0:.4g}".format(Le))
print("Diffusion length of holes in cm is {0:.4g}".format(Lh))
# part(b)
# Vo=(k*T/e)*math.log(Nd*Na/ni**2)
Vo = K*math.log(Nd*Na/ni_300**2)
print("Built-in potential in volts is {0:.4f}".format(Vo))
# part(C)
Iso_300 = A*e*ni_300**2*Dh/(Lh*Nd)
# I=Iso*exp(eV/kT)
I = Iso_300*math.exp(V/K)
print("Current when there is a forward bias of 0.6 V at 300K in Amperes is {0:.4g}".format(I))
# part(d)
Iso_373 = Iso_300*(ni_373/ni_300)**2
I = Iso_373*math.exp((V/K)*(T1/T2))
print("Current when there is a forward bias of 0.6 V at 373K in Amperes is {0:.4f}".format(I))
# part(e)
Nd *= 10**6 # in m**-3
epsilon = epsilon_o*epsilon_r
W = math.sqrt(2*epsilon*(Vo+Vr)/(e*Nd))
W *= 10**2 # in cm
ni = 1.45*10**10 # in cm**-3
I_gen = e*A*W*ni/Tg
print("Thermal generation current in Amperes is {0:.4g}".format(I_gen))
import math
# Given
A = 10**-6 # in m2
Vo = 0.856 # in V
I = 5*10**-3 # in Amperes
Iso = 0.176*10**-12 # in Amperes
e = 1.6*10**-19 # in coulombs
Eo = 8.85*10**-12 # in m-3 kg-1 s4 A2
Er = 11.9
Th = 417*10**-9 # in seconds
Nd = 10**22 # in m**-3
# let K=kT/e
K = 0.0259 # in V
# Calculations and Results
# Vo=(k*T/e)*math.log(I/Iso)
V = K*math.log(I/Iso)
I = 5.0 # in mA
rd = 25.0/I
print("Incremental diode resistance in ohms is {0:.4f}".format(rd))
E = Eo*Er
C_dep = A*math.sqrt((e*E*Nd)/(2*(Vo-V)))
print("Depletion capacitance of the diode in Farads {0:.4g}".format(C_dep))
C_diff = Th*I/25
print("Incremental diffusion coefficient in Farads is {0:.4g}".format(C_diff))
# Given
e = 1.6*10**-19 # in coulombs
Nd = 10**16 # in cm**-3
Ebr = 4*10**5 # in V/cm
epsilono = 8.85*10**-12*10**-2 # in F/cm
epsilonr = 11.9
# Calculations and Results
epsilon = epsilono*epsilonr
Vbr = epsilon*Ebr**2/(2*e*Nd)
print("Reverse break down voltage of the Si diode in Volts is {0:.4f}".format(Vbr))
# part(b)
Nd = 10**17 # in cm**-3
Ebr = 6*10**5 # in V/cm
Vbr = epsilon*Ebr**2/(2*e*Nd)
print("Reverse break down voltage in Volts when phosphorous doping is increased "
"to 10**17 cm**-3 is {0:.4f}".format(Vbr))
import math
# Given
# part(a)
Th = 250*10**-9 # in seconds
A = 0.02*10**-2 # in cm2
Av = 10.0 # voltage gain
ni = 1.45*10**10 # in cm**-3
Nd = 2*10**16 # in cm**-3
W_B = 2*10**-4 # in cm
uh = 410.0 # in cm2/V/s
I_E = 2.5*10**-3 # in Amperes
# let K=kT/e
K = 0.0259 # in V
# Calculations and Results
# Dh=(kT/e)*uh
Dh = K*uh
Tt = W_B**2/(2*Dh)
e = 1.6*10**-19 # in coulombs
alpha = 1-(Tt/Th)
print("CB current transfer ratio is {0:.4f}".format(alpha))
# funcprot(0)
beta = alpha/(1-alpha)
print("current gain is {0:.4f}".format(beta))
# part(c)
I_EO = e*A*Dh*ni**2/(Nd*W_B)
# V_EB=(k*T/e)*math.log(I_E/I_EO)
V_EB = K*math.log(I_E/I_EO)
print("V_EB in volts is {0:.4f}".format(V_EB))
# re=(k*T/e)/IE=25/IE(mA)
I_E = 2.5 # in mA
re = 25/I_E
print("small signal input resistance in ohms is {0:.4f}".format(re))
# part(d)
R_C = Av*re
print("R_C in ohms is {0:.4f}".format(R_C))
# part(e)
I_E = 2.5*10**-3 # in Amperes
I_B = I_E*(1-alpha)
print("base current in micro amperes is {0:.4f}".format(I_B*10**6))
# part(f)
f = 1.0/Tt
print("upper frequency range limit in MHz is {0:.4f}".format(f*10**-6))
# Given
# part(c)
Nd = 2*10**16 # in cm**-3
Na = 10**19 # in cm**-3
W_B = 2*10**-4 # in cm
W_E = 2*10**-4 # in cm
ue = 110.0 # in cm2/V/s
uh = 410.0 # in cm2/V/s
Th = 250*10**-9 # in seconds
# let K=kT/e
K = 0.0259 # in V
# Calculations and Results
# Dh=(kT/e)*uh
Dh = K*uh
Tt = W_B**2/(2*Dh)
gamma = 1.0/(1+((Nd*W_B*ue)/(Na*W_E*uh)))
print("Injection frequency is {0:.4f}".format(gamma))
alpha = gamma*(1-(Tt/Th))
print("Modified alpha is {0:.4f}".format(alpha))
beta = alpha/(1-alpha)
print("modified current gain is {0:.4f}".format(beta))
# Given
# rms output voltage
Ic = 2.5 # in mA
Rc = 1000.0 # in ohms
beta = 100.0
vs = 1.0 # in mV
Rs = 50.0 # in ohms
# Calculations and Results
r_be = beta*25/Ic # Ic in mA
gm = Ic/25.0 # Ic in mA
# Av=v_ce/v_be=gm*Rc
Av = gm*Rc
v_be = vs*r_be/(r_be+Rs) # in mV
v_ce = Av*v_be
print("rms output voltage in mV is {0:.4f}".format(v_ce))
v_be *= 10**-3 # in volts
Ap = beta*Av
P_in = v_be**2/r_be
print("Input power in watts is {0:.4f}".format(P_in*10**9))
P_out = P_in*Ap
print("output power in watts is {0:.4f}".format(P_out*10**6))
import math
# Given
V_GS = -1.5 # in Volts
V_GS_off = -5.0 # in Volts
I_DSS = 10*10**-3 # in A
R_D = 2000.0 # in ohms
# Calculations and Results
I_DS = I_DSS*(1-(V_GS/V_GS_off))**2 # in A
gm = -2*math.sqrt(I_DSS*I_DS)/V_GS_off
Av = -gm*R_D
print("voltage amplification for small signal is {0:.4f}".format(Av))
# Given
Z = 50*10**-6 # in m
L = 10*10**-6 # in m
t_ox = 450*10**-10 # in m
V_GS = 8.0 # in V
V_th = 4.0 # in V
V_DS = 20.0 # in V
lambda_val = 0.01
ue = 750*10**-4 # in m2/V/s
epsilon_r = 3.9
epsilon_o = 8.85*10**-12 # F/m2
# Calculations and Results
epsilon = epsilon_r*epsilon_o
K = (Z*ue*epsilon)/(2*L*t_ox)
I_DS = K*(V_GS-V_th)**2*(1+lambda_val*V_DS)
print("drain current in mA is {0:.4g}".format(I_DS*10**3))
import math
# Given
e = 1.6*10**-19 # in coulombs
I = 10**-3 # in A
Th = 10**-6 # in s
# Calculations and Results
B = 1/Th # in Hz
i_sn = math.sqrt(2*e*I*B)
print("shot noise current in amperes is {0:.4g}".format(i_sn))