How do we calculate BER vs. SNR for real systems?
In real systems such as BPSK over an AWGN channel, bits are transmitted as signals (e.g., +√P or −√P). Due to noise, the received signal becomes:
y = √P · x + n
where n ∼ CN(0, β) is complex Gaussian noise, and x ∈ {−1, +1}.
At the receiver, we perform detection (e.g., using sign detection). The probability of a bit error is given by the Gaussian Q-function:
BER = Q(√(2P / β)) = Q(√(2 · SNR))
where SNR = P / β. This gives the theoretical BER vs. SNR curve.
BER vs. SNR from Gaussian Q factor
Linear Equalization (e.g., Zero Forcing)
When you're using an equalizer like Zero Forcing (ZF), you get:
- Effective noise enhancement depending on the channel matrix H.
- The diagonal elements of W = (HHH)−1 (in ZF) tell you how the noise variance is scaled after equalization.
So the BER for the i-th stream becomes:
BERi = Q( √(2 · Ίs / (β · Wii)) )
Where:
- Ίs = symbol power
- Wii = noise amplification factor from the equalizer
Channel Knowledge in Zero-Forcing (ZF) Equalization
In Zero-Forcing (ZF) equalization, the receiver must know the channel matrix H in order to compute (HHH)−1HH, which is the ZF equalizer matrix.
Channel Estimation is typically performed at the receiver using:
- Pilot symbols
- Training sequences
Once the receiver estimates H, it can compute the ZF equalizer.