ELE-350 · Lesson 9 of 12 · 22 min
Detection and bit error rate
A digital receiver ends every symbol period with a decision: which of the possible symbols was sent? Noise makes some of those decisions wrong, and the fraction that are wrong, the bit error rate, is the single most important measure of a digital link. This lesson derives how to make the decision optimally, shows that the best receiver filter is matched to the transmitted pulse, and computes the bit error rate of the main modulation schemes as a function of E_b/N₀, the ratio of energy per bit to noise density. It ends by converting bit error rates into packet error rates, the figure that matters to the TLR-1's requirement of fewer than one lost message in a million.
Amara now has candidate numbers: GFSK at 50 kb/s, a 256-bit packet and a receiver noise figure of 7 dB at the pole stations. What she still lacks is the required signal level, which depends on how often the demodulator errs at a given E_b/N₀. Daniel asks for a clear statement that the team can test on the bench: at what received power will one packet in a thousand fail, and how do retries get from there to one in a million?
Binary decisions in noise
Consider binary antipodal signalling, BPSK at baseband: in each bit period the receiver obtains a single number r = ±√E_b + n, where n is Gaussian noise with variance σ². The receiver must decide which sign was sent. If ones and zeros are equally likely, the decision that minimizes the probability of error is the maximum-likelihood rule: choose the symbol whose value is closer to r. For antipodal signals the threshold is zero. An error occurs when noise pushes r across the threshold, which happens with probability Q(√E_b/σ), the Gaussian tail of lesson 7.
The general rule in the second form holds for any pair of points separated by distance d in signal space: the error probability depends only on the distance between the points and the noise standard deviation. That is why lesson 8 rated modulations by d_min²/E_b. The remaining question is how large σ is for a given noise density N₀, which depends on how the receiver turns the waveform into the single number r.
The matched filter
Suppose the receiver passes the incoming waveform through a filter h(t) and samples the output at the end of the symbol. Which filter maximizes the signal-to-noise ratio of that sample? The answer, found with the Cauchy-Schwarz inequality, is the matched filter: an impulse response that is the time-reversed copy of the transmitted pulse. Its output SNR is 2E/N₀, where E is the pulse energy, and it depends only on the energy, not on the pulse shape. No filter can do better.
An equivalent receiver multiplies the incoming signal by a copy of the expected pulse and integrates over the symbol, called a correlator, which gives the same sample. For BPSK on a carrier, the correlator multiplies by the carrier and integrates, which is exactly the coherent demodulator of lesson 2 followed by an integrate-and-dump filter. The root-raised-cosine receive filter of lesson 6 is the matched filter for root-raised-cosine pulses, which is why splitting the raised cosine between the two ends is optimal.
With a matched filter or correlator, the noise in the decision variable has variance σ² = N₀/2 when the signal points are expressed in signal-space units of √joule. Substituting into the distance rule gives the error probabilities below. All of them depend on E_b/N₀, which is why that ratio, rather than SNR, is the standard measure for comparing digital schemes.
Error rates of the main schemes
BPSK's antipodal points give the best result. QPSK, as two independent BPSK channels, has the same bit error rate. Coherent orthogonal FSK has points √2 times closer for the same E_b, so it needs twice the E_b/N₀, 3 dB more. Non-coherent detection, which compares the energy at each tone without knowing the phase, loses a little more, about 1 dB at low error rates: its error rate follows from the Rayleigh envelope of lesson 7. Differential PSK sits between coherent BPSK and non-coherent FSK. For M-ary schemes, a nearest-neighbour approximation counts the average number of closest points and multiplies by the pairwise error probability.
The curves share a striking shape. At high E_b/N₀ they fall extremely steeply: for BPSK, going from 10⁻⁵ to 10⁻⁶ costs only about 0.9 dB. A link that is a few decibels short of its target does not degrade gracefully; it falls off a cliff. That is why link budgets in lessons 11 and 12 add a margin, and why a small loss in the front end, like the SAW filter's 2 dB, matters more than it seems.
E_b/N₀ and SNR
A receiver's SNR is measured in its noise bandwidth B; E_b/N₀ is measured per bit. The two are related by the ratio of bit rate to bandwidth. For binary signalling with raised-cosine filtering, B ≈ (1 + α)R_b, so SNR is slightly below E_b/N₀; for a multilevel scheme carrying several bits per symbol in the same bandwidth, SNR is higher. Specifying the requirement as E_b/N₀ keeps the arithmetic honest when the data rate changes.
From bit errors to packet errors
The TLR-1 sends packets, and a packet is lost if any bit in it is wrong, unless coding corrects it. With independent bit errors at rate p, the probability that an N-bit packet arrives intact is (1 − p)^N, so the packet error rate is about Np when Np is small. A 256-bit packet with p = 10⁻⁵ fails about once in 400 attempts. Reaching a packet error rate of 10⁻³ needs p below about 4 × 10⁻⁶.
Retries help enormously if failures are independent. The cabinet acknowledges every button press; if no acknowledgement arrives within a few milliseconds, the pole station sends again. With a per-attempt PER of 10⁻³ and up to three attempts, a message is lost only if all three fail: 10⁻⁹, far better than the requirement. The catch is the word independent. A burst of interference or a deep fade can last longer than the retry interval, so the attempts are correlated. Lesson 11 shows how fading changes the picture and why the retries are spread out in time and frequency.
Worked problem
Required received power for the pole stations
The TLR-1 uses non-coherent binary GFSK, approximated by orthogonal non-coherent FSK, at R_b = 50 kb/s with NF = 7 dB. Find the E_b/N₀ needed for a 256-bit PER of 10⁻³, and the received power that gives it. Allow 1.5 dB for the implementation losses of a real demodulator.
Show solution
- \[p = 1 - (1 - 10^{-3})^{1/256} \approx 3.91\times10^{-6}\]
- \[\tfrac{1}{2}e^{-E_b/2N_0} = p \;\Rightarrow\; \frac{E_b}{N_0} = 2\ln\frac{1}{2p} = 2\ln(1.28\times10^{5}) = 23.5 \;(13.7\ \text{dB})\]
- \[\frac{E_b}{N_0}\Big|_{req} = 13.7 + 1.5 = 15.2\ \text{dB}\]
- \[P_r = 15.2 + 10\log_{10}(50\,000) - 174 + 7 = 15.2 + 47.0 - 174 + 7 = -104.8\ \text{dBm}\]
Answer: The pole receiver needs about −105 dBm for one failed packet in a thousand. With coherent BPSK the requirement would be about 3.7 dB lower. Amara writes −105 dBm into the link budget as the sensitivity figure to verify on the bench.
import math, random
Q = lambda x: 0.5 * math.erfc(x / math.sqrt(2))
def ber(scheme, ebn0_db):
g = 10 ** (ebn0_db / 10)
return {'BPSK': Q(math.sqrt(2*g)), 'DPSK': 0.5*math.exp(-g),
'coh FSK': Q(math.sqrt(g)), 'noncoh FSK': 0.5*math.exp(-g/2)}[scheme]
def required(scheme, target):
lo, hi = 0.0, 30.0
for _ in range(60):
mid = (lo + hi) / 2
if ber(scheme, mid) > target: lo = mid
else: hi = mid
return hi
for s in ('BPSK', 'DPSK', 'coh FSK', 'noncoh FSK'):
print(f"{s:10s}: Eb/N0 for 1e-5 = {required(s, 1e-5):5.2f} dB, for 1e-6 = {required(s, 1e-6):5.2f} dB")
# Monte Carlo check of BPSK at 6 dB with a correlator receiver
random.seed(9)
g = 10 ** (6 / 10); sigma = math.sqrt(1 / (2 * g)); n = 400000
errors = sum(1 for _ in range(n) if 1 + random.gauss(0, sigma) < 0)
print(f"BPSK at 6 dB: simulated {errors/n:.2e}, theory {ber('BPSK', 6):.2e}")
# packet error rate and the TLR-1 requirement
N = 256
p = 1 - (1 - 1e-3) ** (1 / N)
ebn0 = required('noncoh FSK', p)
print(f"bit error rate for PER 1e-3 with {N}-bit packets: {p:.2e}; noncoherent FSK needs {ebn0:.1f} dB")
print(f"received power with 1.5 dB implementation loss: {ebn0 + 1.5 + 10*math.log10(50e3) - 174 + 7:.1f} dBm")
for tries in (1, 2, 3):
print(f"{tries} attempt(s), independent failures: message loss = {1e-3**tries:.0e}")BPSK : Eb/N0 for 1e-5 = 9.59 dB, for 1e-6 = 10.53 dB DPSK : Eb/N0 for 1e-5 = 10.34 dB, for 1e-6 = 11.18 dB coh FSK : Eb/N0 for 1e-5 = 12.60 dB, for 1e-6 = 13.54 dB noncoh FSK: Eb/N0 for 1e-5 = 13.35 dB, for 1e-6 = 14.19 dB BPSK at 6 dB: simulated 2.53e-03, theory 2.39e-03 bit error rate for PER 1e-3 with 256-bit packets: 3.91e-06; noncoherent FSK needs 13.7 dB received power with 1.5 dB implementation loss: -104.8 dBm 1 attempt(s), independent failures: message loss = 1e-03 2 attempt(s), independent failures: message loss = 1e-06 3 attempt(s), independent failures: message loss = 1e-09
The program confirms the hand calculation and shows the spread between schemes: at 10⁻⁶, BPSK needs about 10.5 dB, DPSK about 11.2 dB, coherent FSK about 13.5 dB and non-coherent FSK about 14.2 dB. The simulated BPSK error rate agrees with Q(√(2E_b/N₀)) within the statistical scatter of a few hundred thousand bits, which is a useful habit: whenever a formula drives a design, check it once by simulation.
Synchronization
All of the coherent results assume that the receiver knows the carrier phase and the symbol timing exactly. In practice, carrier recovery loops such as the Costas loop of lesson 2, or a decision-directed loop, estimate the phase, and timing loops estimate the sampling instant. Errors in either act like a loss of E_b/N₀: a phase error φ multiplies the BPSK signal component by cos φ, and a timing error lets ISI creep in, as the eye diagrams of lesson 6 showed. For short packets, estimates must be formed quickly from the preamble, which is one reason packet radios favour non-coherent FSK or differential schemes even though they need 1 to 4 dB more power. The 1.5 dB implementation loss in the example covers these effects together with filter and quantization imperfections; datasheets quote measured sensitivity, which includes them.
| Scheme | Detection | E_b/N₀ for 10⁻⁶ | Needs carrier phase? | Comment |
|---|---|---|---|---|
| BPSK, QPSK | Coherent | about 10.5 dB | Yes | Best binary performance |
| DPSK | Differential | about 11.2 dB | No, compares with last symbol | Simple, small penalty |
| Coherent 2-FSK | Coherent | about 13.5 dB | Yes | Rarely worth the complexity |
| Non-coherent 2-FSK | Envelope or frequency | about 14.2 dB | No | Simple, quick acquisition |
| 16-QAM | Coherent | about 14.5 dB | Yes | Four bits per symbol |
Common mistakes
MistakeComparing schemes by SNR when their bit rates or bandwidths differ.
InsteadCompare by E_b/N₀, and convert with SNR = (E_b/N₀)(R_b/B).
MistakeUsing a receiver filter wider than the signal 'to be safe'.
InsteadA filter wider than the matched filter collects extra noise and lowers the decision SNR.
MistakeMultiplying per-attempt failure rates as if retries were always independent.
InsteadFades and interference bursts correlate failures; spread retries in time or frequency.
MistakeDesigning to the theoretical E_b/N₀ with no allowance for implementation.
InsteadAdd an implementation loss of 1 to 3 dB, or use measured datasheet sensitivity.
Summary and key terms
- The maximum-likelihood decision chooses the nearest constellation point; for two points P_e = Q(d/2σ).
- The matched filter, h(t) = s(T − t), maximizes output SNR at 2E/N₀; a correlator is equivalent.
- BPSK and QPSK: P_b = Q(√(2E_b/N₀)); coherent FSK needs 3 dB more and non-coherent FSK about 1 dB more again.
- Error rates fall steeply with E_b/N₀, so links fail abruptly when they lose a few dB.
- SNR = (E_b/N₀)(R_b/B); required power = E_b/N₀ + 10 log R_b − 174 + NF in dBm.
- PER ≈ Np for N-bit packets; retries reduce message loss if failures are independent.
- Bit error rate
- The fraction of received bits that are wrong.
- Maximum-likelihood detection
- Choosing the symbol that makes the received value most probable; the nearest point in Gaussian noise.
- Matched filter
- The filter whose impulse response is the time-reversed transmitted pulse, maximizing output SNR.
- Correlator
- A receiver that multiplies by the expected pulse and integrates over the symbol.
- E_b/N₀
- Energy per bit divided by noise power spectral density, the standard measure for digital links.
- Packet error rate
- The fraction of packets containing at least one uncorrected error.
- Implementation loss
- The extra E_b/N₀ a real receiver needs beyond theory.
Practice problems
Work each problem on paper first, then reveal the answer to check.
Find the BPSK bit error rate at E_b/N₀ = 8 dB.
Show answer
g = 6.31; Q(√12.6) = Q(3.55) ≈ 1.9 × 10⁻⁴.
Find the non-coherent FSK bit error rate at E_b/N₀ = 12 dB.
Show answer
½e^(−15.85/2) ≈ 1.8 × 10⁻⁴.
A link runs 100 kb/s with NF = 4 dB and needs E_b/N₀ = 11 dB. Find the required received power.
Show answer
11 + 50 − 174 + 4 = −109 dBm.
A 1000-bit packet sees p = 10⁻⁵. Estimate the PER.
Show answer
About 10⁻², one packet in a hundred.
What is the output SNR of a matched filter for a pulse of energy 2 × 10⁻¹⁷ J with N₀ = 4 × 10⁻²¹ W/Hz?
Show answer
2E/N₀ = 10⁴, 40 dB.
Why does a 2 dB loss of E_b/N₀ near 10⁻⁶ hurt more than the number suggests?
Show answer
The curves are steep; 2 dB raises the BPSK error rate from 10⁻⁶ to roughly 8 × 10⁻⁵, about eighty times.
Lesson quiz · 5 questions
Score 60% or more to complete this lesson.
Create a free account to save your progress, take quizzes and earn a certificate.