IntRoduction to solid state physics
Practice Course
Sheng Yun Wu
Practice Course
Sheng Yun Wu
Week 11: Semiconductor II
This example calculates the electrical conductivity of a P-type semiconductor using the equation:
σ=peμp
In a P-type semiconductor, the electrical conductivity is dominated by holes. This example calculates the conductivity based on the hole concentration, hole mobility, and the charge of the carriers.
def p_type_conductivity(p, e, mu_p):
return p * e * mu_p
# Example: Hole concentration p = 1e16 cm⁻³, hole mobility μ_p = 500 cm²/V·s, electron charge e = 1.6e-19 C
p = 1e16 * 1e6 # cm⁻³ to m⁻³
mu_p = 500 * 1e-4 # cm²/V·s to m²/V·s
e = 1.6e-19 # C
sigma = p_type_conductivity(p, e, mu_p)
print(f"P-Type Semiconductor Conductivity: {sigma:.2e} S/m")
This example calculates the rate of carrier recombination in a semiconductor using:
Carrier recombination is a key process in semiconductors where electrons and holes combine, reducing the carrier concentrations. This example calculates the recombination rate based on electron and hole concentrations, intrinsic carrier concentration, and carrier lifetimes.
def recombination_rate(n, p, n_i, tau_n, tau_p):
return (n * p - n_i**2) / (tau_n * (n + n_i) + tau_p * (p + n_i))
# Example: Electron concentration n = 1e16 cm⁻³, hole concentration p = 1e16 cm⁻³, intrinsic carrier concentration n_i = 1.5e10 cm⁻³, electron lifetime τ_n = 1e-6 s, hole lifetime τ_p = 1e-6 s
n = 1e16 * 1e6 # cm⁻³ to m⁻³
p = 1e16 * 1e6 # cm⁻³ to m⁻³
n_i = 1.5e10 * 1e6 # cm⁻³ to m⁻³
tau_n = 1e-6 # s
tau_p = 1e-6 # s
R = recombination_rate(n, p, n_i, tau_n, tau_p)
print(f"Recombination Rate: {R:.2e} m⁻³·s⁻¹")
This example calculates the current density across a P-N junction using the diode equation:
The current density in a P-N junction follows the diode equation, where the current depends on the applied voltage, saturation current, and thermal energy. This example calculates the current density based on these parameters.
def current_density(J_0, V, q, T):
return J_0 * (np.exp(q * V / (k_B * T)) - 1)
# Example: Saturation current density J_0 = 1e-12 A/cm², applied voltage V = 0.7 V, temperature T = 300 K
J_0 = 1e-12 # A/cm²
V = 0.7 # V
T = 300 # Kelvin
q = 1.6e-19 # C
J = current_density(J_0, V, q, T)
print(f"Current Density: {J:.2e} A/cm²")
This example calculates the drift current in a semiconductor using:
Drift current is caused by charge carriers moving in response to an applied electric field. This example calculates the drift current based on the carrier concentration, mobility, and the electric field.
def drift_current(n, q, mu_n, E):
return q * n * mu_n * E
# Example: Electron concentration n = 1e16 cm⁻³, electron mobility μ_n = 1500 cm²/V·s, electric field E = 100 V/cm
n = 1e16 * 1e6 # cm⁻³ to m⁻³
mu_n = 1500 * 1e-4 # cm²/V·s to m²/V·s
E = 100 # V/cm
q = 1.6e-19 # C
J_drift = drift_current(n, q, mu_n, E)
print(f"Drift Current: {J_drift:.2e} A/m²")
This example calculates the diffusion current due to carrier concentration gradients using Fick's Law:
Diffusion current arises from the movement of charge carriers from regions of high concentration to low concentration. This example calculates the diffusion current based on the diffusion coefficient and the concentration gradient.
def diffusion_current(D_n, dn_dx, q):
return -q * D_n * dn_dx
# Example: Diffusion coefficient D_n = 25 cm²/s, concentration gradient dn/dx = 1e21 cm⁻³/cm
D_n = 25 * 1e-4 # cm²/s to m²/s
dn_dx = 1e21 * 1e2 # cm⁻³/cm to m⁻³/m
q = 1.6e-19 # C
J_diffusion = diffusion_current(D_n, dn_dx, q)
print(f"Diffusion Current: {J_diffusion:.2e} A/m²")
This example calculates the rate at which electron-hole pairs are generated in a semiconductor due to optical absorption.
When light is absorbed by a semiconductor, electron-hole pairs are generated. This example calculates the generation rate based on the optical power, wavelength, and area exposed to light.
h = 6.626e-34 # Planck's constant (J·s)
c = 3e8 # Speed of light (m/s)
def generation_rate(P_optical, wavelength, A):
energy_photon = h * c / wavelength
return P_optical / (energy_photon * A)
# Example: Optical power P_optical = 10 mW, wavelength λ = 600 nm, area A = 1 cm²
P_optical = 10e-3 # W
wavelength = 600e-9 # m
A = 1e-4 # m²
G = generation_rate(P_optical, wavelength, A)
print(f"Generation Rate: {G:.2e} electron-hole pairs/m²·s")
This example calculates the depletion width in a P-N junction using:
The depletion width in a P-N junction defines the region where mobile carriers are depleted, and it depends on the built-in potential, applied voltage, and doping concentrations. This example calculates the depletion width based on these parameters.
epsilon_0 = 8.854e-12 # Permittivity of free space (F/m)
def depletion_width(epsilon_r, V_bi, V, N_D, N_A):
return np.sqrt((2 * epsilon_0 * epsilon_r * (V_bi - V)) / (q * ((1 / N_D) + (1 / N_A))))
# Example: Relative permittivity ε_r = 12, built-in potential V_bi = 0.7 V, applied voltage V = 0 V, donor concentration N_D = 1e16 cm⁻³, acceptor concentration N_A = 1e16 cm⁻³
epsilon_r = 12
V_bi = 0.7 # V
V = 0 # V
N_D = 1e16 * 1e6 # cm⁻³ to m⁻³
N_A = 1e16 * 1e6 # cm⁻³ to m⁻³
W = depletion_width(epsilon_r, V_bi, V, N_D, N_A)
print(f"Depletion Width: {W:.2e} m")
This example calculates the capacitance of a P-N junction, which behaves like a parallel plate capacitor, using:
The depletion region of a P-N junction acts like a capacitor. This example calculates the capacitance based on the relative permittivity, junction area, and depletion width.
def capacitance_pn_junction(epsilon_r, A, W):
return (epsilon_0 * epsilon_r * A) / W
# Example: Relative permittivity ε_r = 12, area A = 1 cm², depletion width W = 1e-6 m
epsilon_r = 12
A = 1e-4 # cm² to m²
W = 1e-6 # m
C = capacitance_pn_junction(epsilon_r, A, W)
print(f"P-N Junction Capacitance: {C:.2e} F")
This example generates a plot of the current-voltage (I-V) characteristics of a P-N junction using the diode equation.
The current-voltage characteristics of a P-N junction describe how the current varies with the applied voltage. This example plots the I-V curve using the diode equation, illustrating the behavior of the junction under forward bias.
def iv_characteristics(J_0, q, T, V_range):
I_values = J_0 * (np.exp(q * V_range / (k_B * T)) - 1)
plt.plot(V_range, I_values)
plt.xlabel("Voltage (V)")
plt.ylabel("Current Density (A/cm²)")
plt.title("I-V Characteristics of a P-N Junction")
plt.show()
# Example: Saturation current density J_0 = 1e-12 A/cm², temperature T = 300 K, voltage range from 0 to 1 V
J_0 = 1e-12 # A/cm²
V_range = np.linspace(0, 1, 100) # V
T = 300 # Kelvin
iv_characteristics(J_0, q, T, V_range)
This example calculates the breakdown voltage in a Zener diode using:
Zener breakdown occurs in heavily doped P-N junctions when the electric field in the depletion region becomes strong enough to cause tunneling. This example calculates the breakdown voltage based on the doping concentration and temperature.
def zener_breakdown_voltage(T, N_D, n_i):
return (k_B * T / q) * np.log(N_D / n_i)
# Example: Temperature T = 300 K, donor concentration N_D = 1e20 cm⁻³, intrinsic carrier concentration n_i = 1.5e10 cm⁻³
T = 300 # Kelvin
N_D = 1e20 # cm⁻³
n_i = 1.5e10 # cm⁻³
V_z = zener_breakdown_voltage(T, N_D, n_i)
print(f"Zener Breakdown Voltage: {V_z:.2f} V")
These 10 Python examples cover key topics from Week 11: Semiconductors II, including electrical conductivity, carrier recombination, drift and diffusion currents, P-N junction properties, depletion region, capacitance, and device characteristics. These examples help students understand the advanced behavior of semiconductors and semiconductor devices.