OFDM Receiver
The OFDM Receiver: Undo Everything the Channel Did
The receiver reverses the transmitter operations and corrects for the channel: remove CP, apply FFT, estimate the channel, equalize each subcarrier, and demap symbols back to bits.
Definition: OFDM Receiver Chain
OFDM Receiver Chain
The receiver performs:
- CP removal: discard the first samples
- FFT:
- Channel estimation: estimate from pilot subcarriers
- Equalization:
- Demapping: convert equalized symbols back to bits
def ofdm_receiver(rx_block, N_fft, N_cp, H_est):
y = rx_block[N_cp:] # CP removal
Y = np.fft.fft(y) / np.sqrt(N_fft) # FFT
X_hat = Y / H_est # ZF equalization
return X_hat
Definition: Pilot-Based Channel Estimation
Pilot-Based Channel Estimation
At pilot subcarrier positions , the channel is estimated as:
where is the known pilot symbol. The channel at data subcarrier positions is obtained by interpolation (linear, spline, or DFT-based).
def estimate_channel(Y, pilot_idx, pilot_symbols, N_fft):
H_pilot = Y[pilot_idx] / pilot_symbols
# Linear interpolation to all subcarriers
H_est = np.interp(np.arange(N_fft), pilot_idx, np.abs(H_pilot)) \
* np.exp(1j * np.interp(np.arange(N_fft), pilot_idx, np.angle(H_pilot)))
return H_est
Averaging pilots across multiple OFDM symbols (in time) improves estimation accuracy, especially in low-SNR conditions.
Definition: One-Tap Equalization: ZF and MMSE
One-Tap Equalization: ZF and MMSE
Zero-Forcing (ZF) equalization divides by the channel:
MMSE equalization balances noise enhancement:
MMSE is better at low SNR where ZF amplifies noise on weak subcarriers.
def zf_equalize(Y, H):
return Y / H
def mmse_equalize(Y, H, snr):
return H.conj() * Y / (np.abs(H)**2 + 1/snr)
Theorem: Per-Subcarrier SNR After Equalization
After ZF equalization, the SNR on subcarrier is:
Deep fades () cause very low SNR on those subcarriers. With MMSE equalization, the effective SNR is:
Each subcarrier sees a flat-fading channel. ZF perfectly inverts the channel but amplifies noise; MMSE accepts some residual interference to avoid noise amplification.
Theorem: Pilot-Based Channel Estimation Error
For LS (least-squares) pilot estimation with pilots and unit-power pilot symbols, the MSE per pilot is:
MMSE estimation exploits channel statistics (delay profile) and achieves lower MSE, approaching the CRLB.
More pilots and higher pilot power improve estimation. But more pilots means less room for data, creating an overhead trade-off.
Example: Complete OFDM Transceiver in NumPy
Build a complete OFDM system: transmitter, multipath channel, and receiver with pilot-based channel estimation.
System parameters
N_fft = 64
N_cp = 16
M = 16 # 16-QAM
pilot_idx = np.arange(0, N_fft, 8) # every 8th subcarrier
null_idx = [0, 32] # DC and Nyquist
Transmit, channel, receive
# Channel: 3-tap
h = np.array([1, 0.5+0.3j, 0.2-0.1j])
h /= np.sqrt(np.sum(np.abs(h)**2))
H = np.fft.fft(h, N_fft)
# TX -> Channel -> RX
x_cp = add_cp(np.fft.ifft(X)*np.sqrt(N_fft), N_cp)
y = np.convolve(x_cp, h)[:len(x_cp)]
y += sigma * (np.random.randn(len(y)) + 1j*np.random.randn(len(y)))
Y = np.fft.fft(remove_cp(y, N_cp)) / np.sqrt(N_fft)
X_hat = Y / H # ZF equalization
OFDM Receiver Visualization
Visualize the complete OFDM receiver: channel estimation, equalization, and the effect on the received constellation.
Parameters
Quick Check
When does MMSE equalization significantly outperform ZF in OFDM?
At high SNR
At low SNR with deep fading subcarriers
When there is no multipath
When the FFT size is large
Correct: ZF amplifies noise on deeply faded subcarriers; MMSE avoids this.
Common Mistake: CP Shorter Than Channel Delay
Mistake:
Setting where is the channel length, causing ISI that breaks the circular convolution property.
Correction:
Always ensure . In practice, use where is the maximum excess delay.
Key Takeaway
The OFDM receiver is elegant: CP removal + FFT + one-tap equalization. Channel estimation from pilots is the key challenge, and MMSE equalization outperforms ZF at low SNR by avoiding noise amplification on faded subcarriers.
Zero-Forcing Equalization
A linear equalization method that inverts the channel: . Simple but amplifies noise on deeply faded subcarriers.
MMSE Equalization
Minimum mean-square error equalization that balances channel inversion with noise suppression: .