In order for a receiver to recover a baseband signal, it needs a carrier signal equivalent to that used by the transmitter for upconverting the original baseband signal. Unless pilot tones are used, a receiver doesn't have the original carrier available and has to extract it from the signal itself, with a technique such as a phase locked loop.
However, the phase of the carrier signal to be recovered is often ambiguous to the receiver: Unless there is some asymmetry in the transmission (rotationally asymmetric constellation, non-uniform distribution of symbols), the recovered carrier may end up at one of several phase offsets.
A typical 4-way symmetric constellation like QPSK causes a phase offset of nπ/2 radians where n may be 0, 1, 2 or 3. This phase offset then rotates the received symbols around the origin in one of four different ways:
What techniques are available for decoding the symbols regardless of this rotation? I can think of seven, but all have drawbacks:
Transmit a pilot tone (the original carrier, or a signal derived from it), eliminating the phase ambiguity. Wastes bandwidth and power.
Use an asymmetric constellation which aids the carrier recovery algorithm, eliminating the phase ambiguity. More complex to decode, less bandwidth/power efficient.
Use a symbol mapping where the symbols reside on a rotationally symmetric path around the origin, and encode the data as the distance along that path between successive symbols. Otherwise seems like an elegant solution, but any single incorrectly received symbol causes two errors.
Every once in a while, transmit some unique sequence ("mid-amble") which allows the receiver to easily de-rotate the constellation. Slower aquisition, decreases bitrate.
If the bit error rate is high, rotate the constellation after X symbols. Slower aquisition.
Decode the same constellation in all possible ways at the same time, and pick the output with the lowest bit error rate. Wasteful of processing resources.
Use a symbol alphabet designed in such a way that it works with every possible phase offset. Large overhead, which reduces the bitrate.
While some of these approaches are less practical than others, none are completely satisfactory. How is this issue typically handled? Can the channel coding be designed to be rotation-agnostic without sacrificing bitrate?