Carrier Statistics: Fermi-Dirac, Density of States & Fermi Level
Counting carriers properly. Learn the density of states g(E) near band edges, the Fermi-Dirac distribution and its meaning, the Maxwell-Boltzmann approximation and when it is valid (E − E_F > 3kT), effective densities of states N_c and N_v from effective masses, the equations n = N_c·e^(−(E_c−E_F)/kT) and p = N_v·e^(−(E_F−E_v)/kT), intrinsic level E_i, Fermi-level position vs doping and temperature, and degenerate semiconductors — with Python evaluating the Fermi function, computing N_c, N_v, n_i and checking Boltzmann validity.
The number of carriers in a band is the product of how many states exist at each energy (density of states) and the probability that each is occupied (Fermi-Dirac function), summed over the band.
The result — simple exponential expressions linking carrier densities to the Fermi level — is used in every device derivation that follows: junction voltages, diode currents, MOSFET thresholds.
An analogy
Imagine a stadium (band) where the number of seats per row grows with height (density of states), and fans fill seats from the bottom with a 'fuzzy' cut-off level (Fermi level): well below it every seat is taken, well above it seats are almost empty, and at the level itself half are filled.
The Fermi-Dirac distribution
Electrons are fermions: each state holds at most one electron (per spin). At T = 0, all states below E_F are full and above are empty; at finite T the step smears over a few kT. E_F is the energy where occupation probability is ½ — it need not correspond to an allowed state (in semiconductors it lies in the gap).
Where is the Fermi level?
Rules of thumb:
- Intrinsic: E_F = E_i ≈ mid-gap (shifted slightly by the N_v/N_c ratio)
- N-type: E_F − E_i = kT ln(N_D/n_i) — each decade of doping moves it ~60 mV
- P-type: E_i − E_F = kT ln(N_A/n_i)
- Rising temperature moves E_F back toward E_i (n_i grows)
- Degenerate: E_F within ~3kT of (or inside) a band
Density of states and effective mass
The parabolic-band approximation gives g(E) ∝ √(E − E_c). Silicon's six conduction-band valleys and anisotropic masses combine into a density-of-states mass m_n* ≈ 1.08m₀ (different from the conductivity mass 0.26m₀ used for mobility). Holes combine heavy- and light-hole bands. Low-dimensional structures change g(E) to steps (2-D wells) or spikes (1-D wires).
Quasi-Fermi levels
Out of equilibrium (under bias or light), electrons and holes each settle into their own distributions described by quasi-Fermi levels E_Fn and E_Fp, with np = n_i² e^((E_Fn−E_Fp)/kT). Their separation equals the applied junction voltage in a diode and the open-circuit voltage in a solar cell; their gradient drives current.
Formulas
- Fermi-Dirac:
f(E) = 1/(1 + e^((E − E_F)/kT)) - Density of states (conduction):
g_c(E) = (8π√2/h³)·m*^(3/2)·√(E − E_c) - Effective DOS:
N_c = 2(2πm_n*kT/h²)^(3/2) (∝ T^1.5) - Carrier densities (Boltzmann):
n = N_c e^(−(E_c−E_F)/kT); p = N_v e^(−(E_F−E_v)/kT) - Relative to E_i:
n = n_i e^((E_F−E_i)/kT); p = n_i e^((E_i−E_F)/kT) - Intrinsic level:
E_i = (E_c + E_v)/2 + (kT/2)·ln(N_v/N_c)
Worked example: Occupation
Given: E − E_F = 3kT
Find: f(E).
- 1/(1 + e³)
Answer: 0.047
Worked example: Fermi level
Given: N_A 10¹⁶, n_i 10¹⁰, 300 K
Find: E_i − E_F.
- 0.02585 × ln 10⁶
Answer: 0.357 eV
Worked example: Electron density from E_F
Given: E_c − E_F = 0.2 eV, N_c 2.8e19
Find: n.
- 2.8e19 × e^(−0.2/0.02585)
Answer: ≈ 1.2 × 10¹⁶ cm⁻³
Carrier density = DOS × occupation
E ↑ g_c(E) ∝ √(E−E_c) × f(E) = n(E) (electrons, peak ~kT/2 above E_c)
E_c ───── ╱ tail of f(E)
E_F ─ ─ ─ (in the gap) f = 0.5 here
E_v ───── ╲ 1 − f(E) = p(E) (holes)
g_v(E) ∝ √(E_v−E)Only the exponential tail of the Fermi function reaches the bands, so integrating g(E)f(E) gives a simple exponential law with an 'effective' number of states N_c located at the band edge. The same holds for holes using 1 − f(E).
Fermi function, N_c, N_v and Boltzmann validity
import math
# Fermi-Dirac statistics, effective density of states and the Fermi level
k, T = 8.617e-5, 300.0
kT = k * T
for dE in (-0.1, -0.05, 0.0, 0.05, 0.1, 0.2):
fd = 1 / (1 + math.exp(dE / kT))
mb = math.exp(-dE / kT)
print(f"E - EF = {dE:+.2f} eV: f_FD = {fd:.4f}" + (f", Boltzmann approx {mb:.4f}" if dE >= 0.05 else ""))
h, m0, kB = 6.626e-34, 9.109e-31, 1.381e-23
Nc = 2 * (2 * math.pi * 1.08 * m0 * kB * T / h**2) ** 1.5 * 1e-6
Nv = 2 * (2 * math.pi * 0.81 * m0 * kB * T / h**2) ** 1.5 * 1e-6
print(f"Si: Nc = {Nc:.2e} cm^-3, Nv = {Nv:.2e} cm^-3")
Eg = 1.12
print(f"ni = sqrt(NcNv) exp(-Eg/2kT) = {math.sqrt(Nc*Nv)*math.exp(-Eg/(2*kT)):.2e} cm^-3")
for Nd in (1e15, 1e17, 1e19):
d = kT * math.log(Nc / Nd)
ok = "valid" if d > 3 * kT else "NOT valid (degenerate: use Fermi-Dirac)"
print(f"Nd = {Nd:.0e}: Ec - EF = {d:.3f} eV -> Boltzmann {ok}")
# E - EF = -0.10 eV: f_FD = 0.9795
# E - EF = -0.05 eV: f_FD = 0.8737
# E - EF = +0.00 eV: f_FD = 0.5000
# E - EF = +0.05 eV: f_FD = 0.1263, Boltzmann approx 0.1445
# E - EF = +0.10 eV: f_FD = 0.0205, Boltzmann approx 0.0209
# E - EF = +0.20 eV: f_FD = 0.0004, Boltzmann approx 0.0004
# Si: Nc = 2.82e+19 cm^-3, Nv = 1.83e+19 cm^-3
# ni = sqrt(NcNv) exp(-Eg/2kT) = 8.88e+09 cm^-3
# Nd = 1e+15: Ec - EF = 0.265 eV -> Boltzmann valid
# Nd = 1e+17: Ec - EF = 0.146 eV -> Boltzmann valid
# Nd = 1e+19: Ec - EF = 0.027 eV -> Boltzmann NOT valid (degenerate: use Fermi-Dirac)The Boltzmann approximation is accurate once E − E_F exceeds ~3kT (0.078 eV): at 0.1 eV the error is 2%, at 0.05 eV it is 14%. For N_D = 10¹⁹ the Fermi level is only 27 meV below E_c — the material is degenerate and Fermi-Dirac integrals must be used. N_c and N_v from effective masses give n_i ≈ 9 × 10⁹ cm⁻³.
Common mistakes
- Wrong: Using Boltzmann statistics in heavily doped regions. — Right: Check E − E_F > 3kT; else Fermi-Dirac.
- Wrong: Confusing DOS mass and conductivity mass. — Right: DOS mass for N_c; conductivity mass for mobility.
- Wrong: Moving E_F under bias in equilibrium diagrams. — Right: Use quasi-Fermi levels out of equilibrium.
Applications
- Junction voltages: V_bi from Fermi-level differences.
- Threshold voltage: Surface potential 2φ_F in MOSFETs.
- Solar cells: Quasi-Fermi-level splitting = V_oc.
- Degenerate contacts: Tunnelling ohmic contacts.
Key takeaways
- n = ∫g(E)f(E)dE → N_c e^(−(E_c−E_F)/kT).
- Boltzmann valid for E − E_F > 3kT.
- E_F moves 60 mV per decade of doping.
- Out of equilibrium use quasi-Fermi levels.
Going further
- Fermi-Dirac integrals: Joyce-Dixon approximation.
- 2-D density of states: Quantum wells and inversion layers.
- Quasi-Fermi levels: Non-equilibrium carrier statistics.