# 8: Semiconductors¶

## Example number 8.1, Page number 8.11¶

In [3]:
#importing modules
import math
from __future__ import division

#Variable declaration
ni = 2.37*10**19;      #intrinsic carrier density(per m^3)
mew_e = 0.38;      #electron mobility(m^2/Vs)
mew_h = 0.18;      #hole mobility(m^2/Vs)
e = 1.6*10**-19;

#Calculation
sigma_i = ni*e*(mew_e+mew_h);      #conductivity(ohm-1 m-1)
rho = 1/sigma_i;      #resistivity(ohm m)
rho = math.ceil(rho*10**3)/10**3;   #rounding off to 3 decimals

#Result
print "resistivity is",rho,"ohm m"

resistivity is 0.471 ohm m


## Example number 8.2, Page number 8.12¶

In [11]:
#importing modules
import math
from __future__ import division
import numpy as np

#Variable declaration
Eg = 1.12;       #band gap(eV)
k = 1.38*10**-23;
T = 300;     #temperature(K)
e = 1.6*10**-19;
m0 = 1;     #for simplicity assume value of m0 to be unity

#Calculation
mh = 0.28*m0;
me = 0.12*m0;
EF = (Eg/2)+(3*k*T*np.log(mh/me)/(4*e));      #position of Fermi level(eV)
EF = math.ceil(EF*10**4)/10**4;   #rounding off to 4 decimals

#Result
print "position of Fermi level is",EF,"eV from the top of valence band"

position of Fermi level is 0.5765 eV from the top of valence band


## Example number 8.3, Page number 8.12¶

In [10]:
#importing modules
import math
from __future__ import division

#Variable declaration
T = 300;      #temperature(K)
e = 1.6*10**-19;
m = 9.109*10**-31;     #mass of electron(kg)
k = 1.38*10**-23;      #boltzmann's constant
h = 6.626*10**-34;      #planck's constant
Eg = 0.7;      #band gap(eV)

#Calculation
Eg = Eg*e;     #band gap(J)
A = (2*math.pi*m*k*T/h**2)**(3/2);
B = math.exp(-Eg/(2*k*T));
ni = 2*A*B;     #concentration of intrinsic charge carriers per m^3

#Result
print "concentration of intrinsic charge carriers is",round(ni/1e+19,3),"*10^19 per m^3"

concentration of intrinsic charge carriers is 3.348 *10^19 per m^3


## Example number 8.4, Page number 8.13¶

In [13]:
#importing modules
import math
from __future__ import division

#Variable declaration
ni = 2.4*10**19;      #intrinsic carrier density(per m^3)
mew_e = 0.39;      #electron mobility(m^2/Vs)
mew_h = 0.19;      #hole mobility(m^2/Vs)
e = 1.6*10**-19;

#Calculation
sigma_i = ni*e*(mew_e+mew_h);      #conductivity(ohm-1 m-1)
rho = 1/sigma_i;      #resistivity(ohm m)
rho = math.ceil(rho*10**3)/10**3;   #rounding off to 3 decimals

#Result
print "resistivity is",rho,"ohm m"

resistivity is 0.449 ohm m


## Example number 8.5, Page number 8.13¶

In [18]:
#importing modules
import math
from __future__ import division

#Variable declaration
ni = 2.5*10**19;      #intrinsic carrier density(per m^3)
mew_e = 0.39;      #electron mobility(m^2/Vs)
mew_h = 0.19;      #hole mobility(m^2/Vs)
e = 1.6*10**-19;
w = 1;     #width(mm)
t = 1;     #thickness(mm)
l = 1;     #length(cm)

#Calculation
sigma_i = ni*e*(mew_e+mew_h);      #conductivity(ohm-1 m-1)
w = w*10**-3;       #width(m)
t = t*10**-3;     #thickness(m)
A = w*t;      #area(m^2)
l = l*10**-2;     #length(m)
R = l/(sigma_i*A);      #resistivity(ohm m)
R = R/10**3;
R = math.ceil(R*10**3)/10**3;   #rounding off to 3 decimals

#Result
print "resistance of intrinsic Ge rod is",R,"*10^3 ohm"

resistance of intrinsic Ge rod is 4.311 *10^3 ohm


## Example number 8.6, Page number 8.14¶

In [24]:
#importing modules
import math
from __future__ import division

#Variable declaration
m = 9.109*10**-31;    #mass of electron(kg)
k = 1.38*10**-23;     #boltzmann constant
h = 6.626*10**-34;      #planck's constant
T = 300;     #temperature(K)
kT = 0.026;
e = 1.6*10**-19;
Eg = 1.1;    #energy gap(eV)
mew_e = 0.48;      #electron mobility(m^2/Vs)
mew_h = 0.013;     #hole mobility(m^2/Vs)

#Calculation
C = 2*(2*math.pi*m*k/h**2)**(3/2);
ni = C*(T**(3/2))*math.exp(-Eg/(2*kT));      #intrinsic carrier density per m^3
sigma_i = ni*e*(mew_e+mew_h);      #conductivity(ohm-1 m-1)
sigma_i = sigma_i*10**3;
sigma_i = math.ceil(sigma_i*10**3)/10**3;   #rounding off to 3 decimals

#Result
print "conductivity is",sigma_i,"*10**-3 ohm-1 m-1"
print "answer given in the book differs due to rounding off errors"

conductivity is 1.286 *10**-3 ohm-1 m-1
answer given in the book differs due to rounding off errors


## Example number 8.7, Page number 8.15¶

In [27]:
#importing modules
import math
from __future__ import division

#Variable declaration
m = 9.109*10**-31;    #mass of electron(kg)
k = 1.38*10**-23;     #boltzmann constant
h = 6.626*10**-34;      #planck's constant
T = 300;     #temperature(K)
e = 1.6*10**-19;
Eg = 0.7;    #energy gap(eV)
mew_e = 0.4;      #electron mobility(m^2/Vs)
mew_h = 0.2;      #hole mobility(m^2/Vs)

#Calculation
ni = 2*(2*math.pi*m*k*T/h**2)**(3/2)*math.exp(-Eg*e/(2*k*T));     #intrinsic carrier density per m^3
sigma = ni*e*(mew_e+mew_h);      #conductivity(ohm-1 m-1)
sigma = math.ceil(sigma*10**2)/10**2;   #rounding off to 2 decimals

#Result
print "intrinsic carrier density is",round(ni/1e+19,2),"*10^19 per m^3"
print "conductivity is",sigma,"ohm-1 m-1"
print "answer given in the book is wrong"

intrinsic carrier density is 3.35 *10^19 per m^3
conductivity is 3.22 ohm-1 m-1
answer given in the book is wrong


## Example number 8.8, Page number 8.16¶

In [2]:
#importing modules
import math
from __future__ import division
import numpy as np

#Variable declaration
rho = 2.12;      #resistivity(ohm m)
e = 1.6*10**-19;
m = 9.109*10**-31;    #mass of electron(kg)
k = 1.38*10**-23;     #boltzmann constant
h = 6.626*10**-34;      #planck's constant
mew_e = 0.36;      #electron mobility(m^2/Vs)
mew_h = 0.17;      #hole mobility(m^2/Vs)
T = 300;     #temperature(K)

#Calculation
sigma = 1/rho;    #conductivity(ohm-1 m-1)
ni = sigma/(e*(mew_e+mew_h));       #intrinsic carrier density per m^3
C = 2*(2*math.pi*m*k/h**2)**(3/2);
#let exp(Eg/(2*k*T)) be a
a = (C*T**(3/2))/ni;
#Eg/(2*k*T) = log(a) and Eg = 2*k*T*log(a)
Eg = 2*k*T*np.log(a)/e;      #forbidden energy gap(eV)
Eg = math.ceil(Eg*10**3)/10**3;   #rounding off to 3 decimals

#Result
print "forbidden energy gap is",Eg,"eV"
print "answer given in the book differs due to rounding off errors"

forbidden energy gap is 0.793 eV
answer given in the book differs due to rounding off errors


## Example number 8.9, Page number 8.17¶

In [4]:
#importing modules
import math
from __future__ import division
import numpy as np

#Variable declaration
rho_2 = 4.5;      #resistivity at 20C
rho_1 = 2;        #resistivity at 32C
T1 = 20;      #temperature(C)
T2 = 32;    #temperature(C)
k = 8.616*10**-5;

#Calculation
T1 = T1+273;     #temperature(K)
T2 = T2+273;    #temperature(K)
dy = np.log10(rho_2)-np.log10(rho_1);
dx = (1/T1)-(1/T2);
Eg = 2*k*dy/dx;       #energy band gap(eV)
Eg = math.ceil(Eg*10**3)/10**3;   #rounding off to 3 decimals

#Result
print "energy band gap is",Eg,"eV"
print "answer given in the book differs due to rounding off errors"

energy band gap is 0.452 eV
answer given in the book differs due to rounding off errors


## Example number 8.10, Page number 8.17¶

In [37]:
#importing modules
import math
from __future__ import division
import numpy as np

#Variable declaration
Eg = 1;      #band gap(eV)
e = 1.602*10**-19;
me = 1;     #for simplicity assume me to be unity
E_Ef = 10/100;     #fermi level shift(eV)
k = 1.38*10**-23;     #boltzmann constant

#Calculation
Eg = Eg*e;     #band gap(J)
mh = 4*me;     #effective mass of holes is 4 times of electrons
E_Ef = E_Ef*e;     #fermi level shift(J)
#E_Ef = 3*k*T*np.log(mh/me)/4
T = 4*E_Ef/(3*k*np.log(mh/me));      #temperature(K)

#Result
print "temperature is",int(T),"K"

temperature is 1116 K


## Example number 8.11, Page number 8.18¶

In [7]:
#importing modules
import math
from __future__ import division

#Variable declaration
Na = 5*10**23;      #atoms of boron
Nd = 3*10**23;      #arsenic atoms
ni = 2*10**16;        #intrinsic charge carriers per m^3

#Calculation
p = 2*(Na-Nd)/2;      #hole concentration per m^3
n = ni**2/p;           #electron concentration per m^3
n = n/10**9;

#Result
print "electron concentration is",int(n),"*10**9 per m^3"

electron concentration is 2 *10**9 per m^3


## Example number 8.12, Page number 8.19¶

In [47]:
#importing modules
import math
from __future__ import division

#Variable declaration
ni = 1.5*10**16;      #intrinsic charge carriers per m^3
e = 1.6*10**-19;
mew_e = 0.13;      #electron mobility(m^2/Vs)
mew_h = 0.05;      #hole mobility(m^2/Vs)
AW = 28.1;      #atomic weight of Si(kg)
d = 2.33*10**3;     #density of Si(kg/m^3)

#Calculation
sigma = ni*e*(mew_e+mew_h);      #conductivity(ohm-1 m-1)
sigma = sigma*10**3;
Nd = d*N/AW;        #impurity atoms per m^3
Nd = Nd/10**8;      #extent of 10^8 Si atoms
p = ni**2/Nd;       #hole concentration per m^3
sigma_ex = Nd*e*mew_e;       #conductivity(ohm-1 m-1)
sigma_ex = math.ceil(sigma_ex*10**3)/10**3;   #rounding off to 3 decimals
Na = Nd;
n = ni**2/Na;      #electron concentration per m^3
sigma_EX = Na*e*mew_h;       #conductivity(ohm-1 m-1)
sigma_EX = math.ceil(sigma_EX*10**3)/10**3;   #rounding off to 3 decimals

#Result
print "conductivity is",sigma,"*10^-3 ohm-1 m-1"
print "conductivity if donor type impurity is added is",sigma_ex,"ohm-1 m-1"
print "conductivity if acceptor type impurity is added is",sigma_EX,"ohm-1 m-1"

conductivity is 0.432 *10^-3 ohm-1 m-1
conductivity if donor type impurity is added is 10.383 ohm-1 m-1
conductivity if acceptor type impurity is added is 3.994 ohm-1 m-1


## Example number 8.13, Page number 8.21¶

In [13]:
#importing modules
import math
from __future__ import division
import numpy as np

#Variable declaration
ni = 1.5*10**16;      #intrinsic charge carriers per m^3
e = 1.6*10**-19;
mew_e = 0.135;      #electron mobility(m^2/Vs)
mew_h = 0.048;      #hole mobility(m^2/Vs)
Nd = 10**23;      #phosphorus atoms per m^3
k = 1.38*10**-23;     #boltzmann constant
T = 300;     #temperature(K)

#Calculation
sigma = ni*e*(mew_e+mew_h);      #conductivity(ohm-1 m-1)
sigma = sigma*10**3;
p = (ni**2)/Nd;      #hole concentration per m^3
p = p/10**9;
sigma_ex = Nd*e*mew_e;      #conductivity(ohm-1 m-1)
#EF = (Eg/2)+(3*k*T*log(mew_e/mew_h)/4)
X = 3*k*T*np.log(mew_e/mew_h)/(4*e);
X = math.ceil(X*10**3)/10**3;   #rounding off to 3 decimals
#EF = (Eg/2)+X

#Result
print "conductivity is",sigma,"*10^-3 ohm-1 m-1"
print "hole concentration is",p,"*10**9 per m^3"
print "answer for hole concentration given in the book is wrong"
print "EF = Eg/2 + ",X
print "Fermi level will be positioned at ",X,"eV above intrinsic level"

conductivity is 0.4392 *10^-3 ohm-1 m-1
hole concentration is 2.25 *10**9 per m^3
answer for hole concentration given in the book is wrong
EF = Eg/2 +  0.021
Fermi level will be positioned at  0.021 eV above intrinsic level


## Example number 8.14, Page number 8.36¶

In [59]:
#importing modules
import math
from __future__ import division

#Variable declaration
mew_e = 0.19;      #electron mobility(m^2/Vs)
k = 1.38*10**-23;     #boltzmann constant
T = 300;     #temperature(K)
e = 1.6*10**-19;

#Calculation
Dn = mew_e*k*T/e;     #diffusion coefficient(m^2/s)
Dn = Dn*10**4;
Dn = math.ceil(Dn*10**2)/10**2;   #rounding off to 2 decimals

#Result
print "diffusion coefficient of electrons is",Dn,"*10^-4 m^2/s"

diffusion coefficient of electrons is 49.17 *10^-4 m^2/s


## Example number 8.15, Page number 8.46¶

In [60]:
#importing modules
import math
from __future__ import division

#Variable declaration
RH = 3.66*10**-4;     #Hall coefficient(m^3/coulomb)
I = 10**-2;      #current(amp)
B = 0.5;      #magnetic field(Wb/m^2)
t = 1;        #thickness(mm)

#Calculation
t = t*10**-3;     #thickness(m)
VH = RH*I*B/t;      #Hall voltage(V)
VH = VH*10**3;      #Hall voltage(mV)

#Result
print "Hall voltage developed is",VH,"mV"

Hall voltage developed is 1.83 mV


## Example number 8.16, Page number 8.47¶

In [62]:
#importing modules
import math
from __future__ import division

#Variable declaration
Vy = 37;      #voltage(micro-V)
t = 1;     #thickness(mm)
Bz = 0.5;      #flux density(Wb/m^2)
Ix = 20;     #current(mA)

#Calculation
Vy = Vy*10**-6;     #voltage(V)
t = t*10**-3;     #thickness(m)
Ix = Ix*10**-3;     #current(A)
RH = Vy*t/(Ix*Bz);     #Hall coefficient(C-1 m^3)

#Result
print "Hall coefficient of semiconductor is",RH,"C-1 m^3"

Hall coefficient of semiconductor is 3.7e-06 C-1 m^3


## Example number 8.17, Page number 8.48¶

In [66]:
#importing modules
import math
from __future__ import division

#Variable declaration
RH = -7.35*10**-5;      #Hall coefficient(m^3/C)
e = 1.6*10**-19;
sigma = 200;      #conductivity(ohm-1 m-1)

#Calculation
n = -1/(RH*e);       #density(m^3)
mew = sigma/(n*e);     #mobility(m^2/Vs)
mew = mew*10**3;

#Result
print "density of charge carriers is",round(n/1e+22,3),"*10^22 m^3"
print "mobility of charge carriers is",mew,"*10^-3 m^2/Vs"

density of charge carriers is 8.503 *10^22 m^3
mobility of charge carriers is 14.7 *10^-3 m^2/Vs


## Example number 8.18, Page number 8.48¶

In [69]:
#importing modules
import math
from __future__ import division

#Variable declaration
I = 50;     #current(A)
B = 1.5;    #magnetic field(T)
e = 1.6*10**-19;
n = 8.4*10**28;      #free electron concentration(electron/m^3)
t = 0.5;     #thickness(cm)

#Calculation
t = t*10**-2;     #thickness(m)
VH = I*B/(n*e*t);     #hall voltage(V)
VH = VH*10**6;     #hall voltage(micro-V)
VH = math.ceil(VH*10**4)/10**4;   #rounding off to 4 decimals

#Result
print "magnitude of Hall voltage is",VH,"micro-V"

magnitude of Hall voltage is 1.1161 micro-V


## Example number 8.19, Page number 8.49¶

In [72]:
#importing modules
import math
from __future__ import division

#Variable declaration
RH = 3.66*10**-4;      #Hall coefficient(m^3/C)
e = 1.6*10**-19;
rho_n = 8.93*10**-3;     #resistivity(ohm m)

#Calculation
n = 1/(RH*e);
mew_e = RH/rho_n;
mew_e = math.ceil(mew_e*10**3)/10**3;   #rounding off to 3 decimals

#Result
print "value of n is",round(n/1e+22,3),"*10^22 per m^3"
print "value of mew_e is",mew_e,"m^2/Vs"

value of n is 1.708 *10^22 per m^3
value of mew_e is 0.041 m^2/Vs