IntRoduction to solid state physics
Practice Course
Sheng Yun Wu
Practice Course
Sheng Yun Wu
Week 10: Semiconductor I
This example calculates the intrinsic carrier concentration in a semiconductor.
Intrinsic carrier concentration is the number of electrons or holes in an undoped semiconductor. This example uses the carrier densities of states NC and NV, band gap energy Eg, and temperature T to calculate the intrinsic carrier concentration, which helps in understanding the behavior of undoped semiconductors.
import numpy as np
k_B = 8.617333262145e-5 # Boltzmann constant in eV/K
def intrinsic_carrier_concentration(N_C, N_V, E_g, T):
return np.sqrt(N_C * N_V) * np.exp(-E_g / (2 * k_B * T))
# Example: N_C = N_V = 1e19 cm⁻³, band gap E_g = 1.1 eV, temperature T = 300 K
N_C = 1e19 * 1e6 # cm⁻³ to m⁻³
N_V = 1e19 * 1e6 # cm⁻³ to m⁻³
E_g = 1.1 # eV
T = 300 # Kelvin
n_i = intrinsic_carrier_concentration(N_C, N_V, E_g, T)
print(f"Intrinsic Carrier Concentration: {n_i:.2e} m⁻³")
This example calculates the Fermi level in an intrinsic semiconductor using the equation:
EF=(EC+EV)/2
In an intrinsic semiconductor, the Fermi level is near the middle of the band gap. This example calculates the Fermi level for an intrinsic semiconductor, providing insights into electron and hole distributions at thermal equilibrium.
def fermi_level_intrinsic(E_C, E_V):
return (E_C + E_V) / 2
# Example: Conduction band minimum E_C = 1.1 eV, valence band maximum E_V = 0.0 eV
E_C = 1.1 # eV
E_V = 0.0 # eV
E_F = fermi_level_intrinsic(E_C, E_V)
print(f"Fermi Level in Intrinsic Semiconductor: {E_F:.2f} eV")
This example calculates the electron and hole concentrations in a doped semiconductor using the mass action law:
nxp=ni^2
In doped semiconductors, the electron and hole concentrations can change depending on the doping levels. This example uses the mass action law to calculate the electron and hole concentrations based on the intrinsic carrier concentration, donor concentration, and acceptor concentration.
def carrier_concentrations(n_i, N_D, N_A):
n = n_i + N_D - N_A # Electron concentration
p = n_i**2 / n # Hole concentration
return n, p
# Example: Intrinsic carrier concentration n_i = 1.5e10 cm⁻³, donor concentration N_D = 1e16 cm⁻³, acceptor concentration N_A = 0
n_i = 1.5e10 # cm⁻³
N_D = 1e16 # cm⁻³
N_A = 0 # cm⁻³
n, p = carrier_concentrations(n_i, N_D, N_A)
print(f"Electron Concentration: {n:.2e} cm⁻³, Hole Concentration: {p:.2e} cm⁻³")
This example calculates the mobility of charge carriers using the equation:
μ=(σ/ne)
Carrier mobility describes how quickly charge carriers (electrons or holes) can move through a semiconductor in response to an electric field. This example calculates the mobility based on the material’s conductivity and carrier concentration.
def mobility(conductivity, carrier_concentration, e):
return conductivity / (carrier_concentration * e)
# Example: Conductivity σ = 100 S/m, carrier concentration n = 1e16 cm⁻³, electron charge e = 1.6e-19 C
conductivity = 100 # S/m
n = 1e16 * 1e6 # cm⁻³ to m⁻³
e = 1.6e-19 # C
mu = mobility(conductivity, n, e)
print(f"Carrier Mobility: {mu:.2e} m²/V·s")
This example calculates the required doping concentration to achieve a target conductivity in a semiconductor using the relation:
σ=neμ
In order to achieve a desired electrical conductivity in a doped semiconductor, the doping concentration must be carefully chosen. This example calculates the doping concentration needed to achieve a target conductivity, considering the charge of the carrier and mobility.
def doping_concentration(target_conductivity, e, mu):
return target_conductivity / (e * mu)
# Example: Target conductivity σ = 200 S/m, electron charge e = 1.6e-19 C, mobility μ = 0.1 m²/V·s
target_conductivity = 200 # S/m
e = 1.6e-19 # C
mu = 0.1 # m²/V·s
N_D = doping_concentration(target_conductivity, e, mu)
print(f"Doping Concentration: {N_D:.2e} m⁻³")
This example generates a plot of the energy band diagram for an N-type semiconductor.
An N-type semiconductor has a Fermi level closer to the conduction band due to donor doping. This example plots the energy band diagram for an N-type semiconductor, illustrating the positions of the conduction band, valence band, and Fermi level.
import matplotlib.pyplot as plt
def plot_n_type_band_structure(E_C, E_V, E_F):
plt.hlines(E_C, 0, 1, colors='b', label="Conduction Band")
plt.hlines(E_V, 0, 1, colors='g', label="Valence Band")
plt.hlines(E_F, 0, 1, colors='r', label="Fermi Level")
plt.fill_between([0, 1], E_V, E_C, color='grey', alpha=0.2)
plt.xlabel("Position")
plt.ylabel("Energy (eV)")
plt.title("Energy Band Diagram for N-Type Semiconductor")
plt.legend()
plt.show()
# Example: Conduction band minimum E_C = 1.1 eV, valence band maximum E_V = 0 eV, Fermi level E_F = 0.8 eV
E_C = 1.1 # eV
E_V = 0 # eV
E_F = 0.8 # eV
plot_n_type_band_structure(E_C, E_V, E_F)
This example calculates the built-in potential of a P-N junction using the equation:
The built-in potential is the potential difference that forms across a P-N junction due to the diffusion of charge carriers. This example calculates the built-in potential using the donor and acceptor concentrations, intrinsic carrier concentration, and temperature.
def built_in_potential(N_D, N_A, n_i, T):
return (k_B * T / e) * np.log(N_D * N_A / n_i**2)
# Example: Donor concentration N_D = 1e16 cm⁻³, acceptor concentration N_A = 1e16 cm⁻³, intrinsic carrier concentration n_i = 1.5e10 cm⁻³, temperature T = 300 K
N_D = 1e16 # cm⁻³
N_A = 1e16 # cm⁻³
n_i = 1.5e10 # cm⁻³
T = 300 # K
V_bi = built_in_potential(N_D, N_A, n_i, T)
print(f"Built-In Potential: {V_bi:.2f} V")
This example calculates the conductivity of an intrinsic semiconductor using the equation:
σ=nie(μn+μp)
Intrinsic semiconductors have equal concentrations of electrons and holes. This example calculates the conductivity of an intrinsic semiconductor based on the intrinsic carrier concentration, electron and hole mobilities, and the charge of the carriers.
def intrinsic_conductivity(n_i, mu_n, mu_p, e):
return n_i * e * (mu_n + mu_p)
# Example: Intrinsic carrier concentration n_i = 1.5e10 cm⁻³, electron mobility μ_n = 1500 cm²/V·s, hole mobility μ_p = 500 cm²/V·s, electron charge e = 1.6e-19 C
n_i = 1.5e10 * 1e6 # cm⁻³ to m⁻³
mu_n = 1500 * 1e-4 # cm²/V·s to m²/V·s
mu_p = 500 * 1e-4 # cm²/V·s to m²/V·s
e = 1.6e-19 # C
sigma = intrinsic_conductivity(n_i, mu_n, mu_p, e)
print(f"Intrinsic Semiconductor Conductivity: {sigma:.2e} S/m")
This example calculates the Fermi level in an N-type semiconductor using the equation:
In an N-type semiconductor, the Fermi level moves closer to the conduction band due to donor doping. This example calculates the Fermi level based on the conduction band minimum, effective density of states, donor concentration, and temperature.
def fermi_level_n_type(E_C, N_C, N_D, T):
return E_C - k_B * T * np.log(N_C / N_D)
# Example: Conduction band minimum E_C = 1.1 eV, effective density of states in conduction band N_C = 1e19 cm⁻³, donor concentration N_D = 1e16 cm⁻³, temperature T = 300 K
E_C = 1.1 # eV
N_C = 1e19 # cm⁻³
N_D = 1e16 # cm⁻³
T = 300 # Kelvin
E_F = fermi_level_n_type(E_C, N_C, N_D, T)
print(f"Fermi Level in N-Type Semiconductor: {E_F:.2f} eV")
This example calculates the ionization energy of a donor atom in an N-type semiconductor using the equation:
The ionization energy of a donor atom is the energy required to free an electron from the donor level into the conduction band. This example calculates the ionization energy based on the effective mass of the electron and the relative permittivity of the material.
epsilon_0 = 8.854e-12 # Permittivity of free space (F/m)
h_bar = 1.0545718e-34 # Reduced Planck's constant (J·s)
def ionization_energy(m_star, epsilon_r):
return (m_star * e**4) / (2 * (4 * np.pi * epsilon_0 * epsilon_r)**2 * h_bar**2)
# Example: Effective mass m* = 0.1 * m_e, relative permittivity ε_r = 12
m_star = 0.1 * 9.11e-31 # kg
epsilon_r = 12
E_D = ionization_energy(m_star, epsilon_r)
print(f"Ionization Energy of Donor Atom: {E_D:.2e} J")
These 10 Python examples cover key concepts from Week 10: Semiconductors I, including intrinsic and extrinsic semiconductors, carrier concentrations, doping, Fermi levels, mobility, and conductivity. These examples help students understand the fundamental behavior of electrons and holes in semiconductors, which is critical for analyzing semiconductor devices.