Costas Loop
How the Costas Loop Recovers a Suppressed Carrier
Phase-shift keying intentionally suppresses the carrier: a BPSK waveform is the carrier multiplied by ±1, so its spectrum is a pair of data sidebands with no discrete line at the carrier frequency. A plain phase-locked loop has nothing to lock onto, and the 180° data transitions would whipsaw a single mixer's output. The Costas loop sidesteps this by performing the synchronous detection and the phase comparison at the same time. The received IF is split and mixed against two replicas of the VCO, one in phase and one shifted 90°. After lowpass filtering, the I arm carries cos(θe) times the data and the Q arm carries sin(θe) times the data, where θe is the phase error between the incoming carrier and the VCO.
The trick is the third multiplier. Forming the product I × Q gives a term proportional to sin(θe)cos(θe) = ½ sin(2θe), and because the data sign d = ±1 appears squared (d² = 1) it cancels out entirely. The result is a clean, data-free S-curve error voltage that is zero at lock and slopes through the origin, exactly what the loop filter needs to steer the VCO. For QPSK the same idea is extended with a four-quadrant arctangent or a hard-limited cross-coupled detector that produces a sin(4θe) characteristic with four stable lock points 90° apart.
Governing Equations
I = ½ A · d(t) · cos(θe) Q = ½ A · d(t) · sin(θe)
Phase detector output (BPSK):
e(t) = I × Q = ⅛ A² · d²(t) · sin(2θe) ≈ k · sin(2θe)
Second-order loop natural frequency & bandwidth:
ωn = √(KdK0/τ1) BL = (ωn/2)(ζ + 1/(4ζ))
Where A = signal amplitude, d(t) = ±1 data, θe = phase error, k = detector gain, ζ = damping factor (≈0.707 typical), BL = single-sided loop noise bandwidth. Design target: BL ≈ 0.005 to 0.05 × Rs (symbol rate).
Carrier Recovery Method Comparison
| Method | Modulations | Phase Error Term | SNR @ Lock | Ambiguity | Notes |
|---|---|---|---|---|---|
| Costas loop | BPSK, QPSK | sin(2θe) / sin(4θe) | ~5 to 8 dB Eb/N0 | 180° / 90° | Self-noise rises at low SNR |
| Squaring loop | BPSK | From 2× multiplied tone | ~6 to 9 dB | 180° | Needs 2f0 PLL + divide-by-2 |
| Decision-directed | QPSK, QAM | Im(r · conj(d̂)) | ~7 to 10 dB | Per constellation | Degrades below decision threshold |
| Remodulator | BPSK, QPSK | Re-strip then PLL | ~6 dB | 180° / 90° | Lower self-noise than Costas |
| Pilot-tone PLL | Any (residual carrier) | Direct sin(θe) | ~0 to 3 dB | None | Wastes power on the pilot |
Frequently Asked Questions
Why does a Costas loop need both an I and a Q arm?
A suppressed-carrier BPSK signal has no discrete line at the carrier, so a plain PLL has nothing to lock to and the 180° data modulation would drag a single mixer around. Splitting into in-phase (I) and quadrature (Q) arms 90° apart lets the I arm demodulate data while the Q arm carries the phase error. The product I × Q removes the data because d² = 1, leaving a clean error term proportional to sin(2θe) that the loop locks on.
What is the phase ambiguity of a Costas loop and how is it resolved?
A BPSK Costas loop has stable lock points every 180°, and a QPSK loop has four points 90° apart, so the recovered bits may come out inverted or rotated. Differential encoding (DBPSK or DQPSK) carries information in the transition rather than absolute phase and is immune to the ambiguity. Alternatively a known unique word or preamble lets the demodulator detect the rotation and apply a fixed phase correction.
How do you set the loop bandwidth of a Costas loop?
It is a compromise: wide bandwidth acquires fast and tolerates frequency offset but admits more noise and raises jitter; narrow bandwidth cleans the carrier but acquires slowly and can drop lock under Doppler. A common rule sets the single-sided noise bandwidth BL between 0.5 and 5 percent of the symbol rate (roughly 5 to 50 kHz at 1 Msym/s), with damping near 0.707 and a sweep stage when the offset exceeds pull-in range.