A radio sends each symbol as a smooth pulse, and the pulses overlap in time. Watch twelve of them pile up below: at each symbol time their sum still lands on that symbol’s value.
Pulses that keep out of each other's way
Twelve 4-ASK symbols (seed 275), raised cosine with α = 0.35, 8 samples per symbol.
One pulse, for the first symbol (1): 1 at its own time, 0 at every other symbol time.
Describe this picture
Twelve 4-ASK symbols (seed 275), each sent as a raised cosine with α = 0.35, 8 samples per symbol. One panel, height from −4.5 to 4.5 against time in symbols from −4 to 16. Each symbol’s pulse is a thin dashed curve and their sum a solid curve; filled circles on the sum mark where each symbol should be read. The readouts are how many pulses are added and the largest miss at symbol times. There is no control. The 14 s clip opens on the first pulse alone, for the first symbol, 1: it is 1 at its own time and 0 at every other symbol time. From 2.5 s a pulse is added every 0.6 s and the sum is redrawn each time. At 10 s all twelve are in: they overlap, yet at each symbol time the sum is that symbol’s value. At 11 s the circles appear, and the readouts show 12 pulses and a largest miss below 10⁻¹⁵, rounding only: no intersymbol interference.
Pulses that keep out of each other’s way
In I/Q and complex baseband (27.3), “A carrier offset spins the constellation” sent two bits at a time as one of four points in the I/Q plane. Each point sent is a symbol, and I write the one sent at symbol time as . The set of points to choose from is the constellation.
This page asks two questions. What shape should each symbol take in time? And how can a radio send many symbols at once through a channel full of echoes?
First, the points themselves. There are three common ways to place them:
- ASK, amplitude-shift keying, puts the points on a line, so only the size changes. 4-ASK uses −3, −1, 1 and 3.
- PSK, phase-shift keying, puts them on a circle, so only the angle changes. 27.3’s QPSK is 4-PSK, and 8-PSK has eight points 45° apart.
- QAM, quadrature amplitude modulation, puts them on a grid of I and Q values, so both change. 16-QAM is a grid of 4 by 4.
Four points carry two bits per symbol, and sixteen carry four. The price: at the same average power, sixteen points sit closer together than four, so less noise is enough to confuse two of them.
From symbols to a signal
Now time. The plainest way to send 4-ASK is to hold each symbol’s value for samples, a staircase. But a staircase jumps, and sharp jumps need high frequencies, so it spreads across the band and disturbs the radios next to it.
So each symbol is sent as a smooth pulse instead. Putting each pulse in its place is the upsampling of Upsampling and interpolation (22.2), “Insert zeros: the spectrum squeezes and images appear”. Put zeros after each symbol, so sits at , and filter by . The convolution puts a copy of , scaled by , at every symbol time:
Here is the number of samples per symbol, 22.2’s upsampling factor. The letter was the prototype low-pass of Filter banks (23.1), and the idea is the same: one low-pass shape that every symbol shifts. This way of building a signal is called pulse shaping.
Which pulse? In “Remove the images, and multiply by L” of 22.2 the ideal interpolation taps were , which is 0 at every old sample instant. That is exactly the property I want here: at each symbol time, every other symbol’s pulse is 0.
Otherwise a symbol’s value would leak into the reading of its neighbours. That leak is called intersymbol interference, ISI for short.
The sinc has one weakness: its tails die slowly. The raised cosine multiplies it by a factor that makes them die faster:
The number , from 0 to 1, is the roll-off. On this page means only that, not the delay it meant in Linear-phase systems (17.3). With the factor is 1, and the pulse is the sinc again.
I use and , and keep from −32 to 32: 65 taps, four symbols to each side. The pulse is 1 at and 0.619 halfway to the next symbol time, at . It dips lowest, to −0.171, at .
At , , and the sinc is the sinc of a whole number, which is 0, so is 0 there. The denominator would be 0 at , but that is not a whole number, so no sample falls on it.
For the instrument, I drew twelve 4-ASK symbols with seed 275. Each uniform draw , between 0 and 1, picks the symbol −3, −1, 1 or 3 when , the whole part of , is 0, 1, 2 or 3. They came out 1, −3, 3, 3, 3, 3, 1, 1, 3, 3, −1, −3. The picture at the top of the page adds their pulses one by one.
Notice the end frame. Between symbol times the sum is free to move: it overshoots to 3.97, above the largest symbol, 3. At the symbol times it lands on each symbol, and the circles sit on it.
Why the sum lands on every symbol
Read the sum at symbol time , at . Pulse contributes . Every other pulse, , contributes , and is 0 at every nonzero multiple of :
So this pulse train has no intersymbol interference at the symbol times. A pulse that is 0 at every other symbol time is a Nyquist pulse, after Harry Nyquist, who stated this condition for telegraph signals in 1928.
The instrument’s misses, about , are the computer’s rounding: the samples of at the other symbol times come out at most rather than exactly 0. In my sums the largest miss is .
Between the symbol times there is no such promise. Near , between two symbols of value 3, the neighbours’ pulses all push the same way, and the sum reaches 3.97. That is harmless, because the receiver reads only at the symbol times.
What the roll-off buys
The sinc pulse of 22.2, , is the ideal low-pass with cutoff rad/sample, which is cycles per sample. That is the narrowest band any Nyquist pulse can have.
The raised cosine pays for its faster tails with a wider band. I state its spectrum without proof. It is flat up to cycles per sample. Then it falls along half a period of a cosine, raised so that it ends at 0, at . That shape gives the pulse its name.
So the band is
With and that is 0.0844, against the sinc’s 0.0625: the roll-off is the extra width as a fraction, 35 % here.
What does the extra width buy? Look at the tails, three symbols or more from the centre. The raised cosine’s largest there is 0.016, at ; the sinc’s is 0.091, at .
That matters, because a real pulse must be cut somewhere. Cut to 65 taps, the raised cosine’s spectrum above 0.0844 cycles per sample stays at least 44.1 dB below its value at 0. The sinc, cut the same way, reaches up to 27.7 dB below.
One number per subcarrier
Now the second question: how to send many symbols at once through a channel with echoes.
The symbols here are 16-QAM. Each symbol carries four bits: the first two choose I and the last two choose Q, each from −3, −1, 1, 3.
The order is 00 → −3, 01 → −1, 11 → 1, 10 → 3. Neighbouring levels differ in one bit only, so mistaking a point for its neighbour costs one bit, not two. This order is called a Gray code.
Then everything is divided by . The four levels have squares 9, 1, 1 and 9, which average 5, and I and Q together make 10. So the sixteen points have average power 1.
Echoes
A radio signal reaches you along several paths: straight, and bounced off buildings. Each bounce arrives later and weaker. That is the echo of “Same rule, different h” in Discrete convolution (5.2), several of them at once, so the channel is an impulse response . My channel is
Its last echo comes 5 samples after the first. This span is the channel’s delay spread.
A fast single stream of symbols would smear each symbol over the next five. OFDM, orthogonal frequency-division multiplexing, does something else. It sends many slow symbols side by side, each on its own frequency.
One block, many subcarriers
Take symbols and turn them into 64 samples:
This is times the inverse DFT of The DFT (13.2). Each symbol rides on its own arrow, which turns of a turn per sample. Each arrow is a subcarrier, and the 64 samples are one OFDM block.
By “Energy in time and in bins” of 13.2, the keeps the power: the samples have the same average power as the symbols. “Orthogonal” refers to “Rows that cancel” of The DFT as a matrix (13.5): over one block, two different arrows cancel, so the receiver’s DFT separates them again.
The cyclic prefix
Send the block through as it is, and two things go wrong. The channel’s echoes of each block’s last five samples spill into the start of the next. And within a block, the convolution is linear, not circular, so the DFT’s neat rule does not apply.
The fix is the cyclic prefix. Copy the block’s last samples and send them in front of it. I use , so each block becomes 72 samples: , then .
The receiver drops the first 8 samples of each block and keeps 64. At kept sample , the channel adds up the inputs for = 0 to 5. When is negative, that input is a prefix sample, a copy of . The prefix is longer than the delay spread, so the channel never reaches back into the previous block.
So the kept samples are
where is the noise. That is the circular convolution of Properties of the DFT (13.3), “Circular convolution”. In “The tail wraps round” of Circular vs linear convolution (13.4), the tail of a convolution wrapped onto its start by accident. Here the prefix makes it happen on purpose.
Now take the receiver’s DFT, divided by . By 13.3, a circular convolution becomes a product, bin by bin:
Here is the DFT of , the channel’s gain on subcarrier , and is the noise, transformed the same way. The channel has become one complex number per subcarrier. Dividing by it, the one-tap equaliser, gives
The symbols come back, plus noise. On this page the receiver knows . Real receivers estimate it from known symbols sent for that purpose, called pilot symbols.
The link in numbers
The instrument sends 20 blocks of 64 subcarriers, 1280 symbols in all. Their 5120 bits come from 5120 uniform draws with seed 2751, a bit being 1 when the draw is at least 0.5; 2592 of them are 1. The symbols’ average power measures 0.983.
Each received sample gets complex noise, , from two Gaussian draws with seed 2750. Its power is set to , 25 dB below 1, the power the symbols were scaled to. This draw measures −24.8 dB.
To measure how far the points land from where they should be, I use 27.3’s error vector. The error vector magnitude, , is the RMS of the differences between the points and the symbols sent, divided by the RMS of the symbols sent, in percent. To read a symbol, the receiver picks the nearest of the 16 ideal points. When that is not the point sent, it is a symbol error.
One number per subcarrier
20 OFDM blocks of 64 subcarriers, 16-QAM (bits from seed 2751), a 6-tap channel, 8-sample cyclic prefix, noise at 25 dB SNR (seed 2750; measured noise power −24.8 dB re 1, an SNR of 24.7 dB).
The sent symbols: 16-QAM on 64 subcarriers. The channel's gain differs per subcarrier, from 0.413 to 1.792.
Describe this picture
20 OFDM blocks of 64 subcarriers, 16-QAM (bits from seed 2751), a 6-tap channel, an 8-sample cyclic prefix and noise at 25 dB SNR (seed 2750; measured noise power −24.8 dB re 1, an SNR of 24.7 dB). Two panels. The first, a square constellation from −2.5 to 2.5 in I and Q, draws the current stage’s 1280 points as small dots, with the 16 ideal points as open rings. The second, the channel gain, draws one bar of , from 0 to 2, per subcarrier from 0 to 63. The readouts are the stage, the error vector in percent with one decimal and the symbol errors out of 1280. The 14 s clip opens on the sent symbols, 16-QAM on 64 subcarriers, with a channel gain that differs per subcarrier, from 0.413 to 1.792. From 3 s each point moves to its received value , scaled and turned by its own : the error vector is 70.2 %. From 8.5 s each point is divided by its subcarrier’s gain: the 16 clusters return, with an error vector of 7.5 % and 0 symbol errors in 1280. When the clip ends, two full-width buttons in a group named “Cyclic prefix”, “prefix on” and “prefix off”, switch the prefix; the setting is kept in the link, as ofdm.cp. Without the prefix the error vector is 18.6 %, with 68 symbol errors: the tail of each block spills into the next.
Watch the dots: the channel scatters them, and one division per subcarrier gathers them back into 16 clusters. When the clip ends, switch the prefix off and watch them scatter again.
Notice the middle frame against the end frame. After the channel the points are scattered, with an error vector of 70.2 %. One division per subcarrier brings it to 7.5 %, and every symbol is read correctly.
Reading the numbers
Why 70 %? Before the division, the error on subcarrier is . And is the DFT of the channel without its first tap: 0, 0.6, 0, −0.3, 0, 0.2.
By “Energy in time and in bins” of 13.2, the average of over the 64 subcarriers is that channel’s energy: . Its square root is 0.7, so the channel alone puts the points about 70 % off; the noise adds a little more.
Why 7.5 % and not less? The noise alone would give 5.7 %. But the division also divides the noise by , and on weak subcarriers that makes it larger. On the weakest, , the error vector is 14.5 %; on the strongest, , it is 3.2 %.
Switch the prefix off, and the error vector jumps to 18.6 %, with 68 symbol errors. The blocks now bleed into each other, and the convolution no longer wraps, so no single number per subcarrier undoes it. Of the 68 errors, 55 fall on the 16 weakest subcarriers.
The prefix is not free. It costs 8 of every 72 samples, 11.1 %, of the time on air. It also has a minimum length: it must be at least as long as the channel’s delay spread, here 5 samples.
The maths behind it · circulant matrices
With the prefix, the channel acts on each block as the circulant matrix of . “Arrows in, the same arrows out” of 13.5 showed that the DFT diagonalises every circulant matrix, with the on the diagonal. OFDM sends the symbols along those eigenvectors, so the channel only scales each one. That is why one division per subcarrier undoes it.
The maths behind it · Gaussian noise clouds
Around each ideal point the noise makes a cloud, the two-dimensional Gaussian cloud of 27.3. A symbol error happens when a point lands closer to a neighbouring ideal point. Dividing by a small enlarges the cloud. With the prefix, the weakest subcarrier’s equalised noise has a standard deviation of 0.096 in I and in Q. The halfway line to a neighbour lies 0.316 away, 3.3 standard deviations.
Worked example
1. The raised cosine at a symbol time. With and , . Here , and the denominator is , not 0. So .
2. Bits to 16-QAM. The first eight bits of the instrument are 0001 1010. The first four give I from 00, −3, and Q from 01, −1, so . That is .
The next four give 10 and 10, so , or .
3. Two channel gains by hand. At every arrow is 1, so . At the arrow is , so . A symbol on subcarrier 32 arrives at half its size, and the equaliser doubles it back, with its noise.
4. The prefix. The channel has 6 taps, so its delay spread is 5 samples. A prefix of 8 covers it, at a cost of % of the samples.
Where you’ll meet this
Wi-Fi uses OFDM, from 802.11a and g through n, ac and ax. In 802.11a, blocks of 64 subcarriers carry data and pilot symbols on 52 of them, with a prefix of 16 samples, 0.8 µs at 20 MHz. That prefix costs 16 of every 80 samples, 20 %.
LTE and 5G NR use OFDM in their downlinks, with subcarriers 15 kHz apart in LTE. Digital audio and TV broadcasting use it too (DAB, DVB-T), and DSL lines use a form of it called discrete multitone.
Single-carrier links with raised-cosine pulses carry satellite and cable signals. Satellite TV by DVB-S uses a roll-off of 0.35, the one on this page.
In those links the raised cosine is usually split in two: a “root raised cosine” at the transmitter and the same at the receiver, which together make the raised cosine. The receiver’s half is then the matched filter of Matched filters and detection (26.1), “Slide the template, find the pulse”.
A single-carrier link cannot use one tap per subcarrier, so its receiver needs a longer equalising filter. Channels and equalisation (33.2) builds one. Radar signal processing (33.1) also sends pulses, and listens for their echoes.
I left a lot out. A real receiver estimates from pilot symbols and finds the start of each block. Real links add error-correcting codes and must handle OFDM’s high peaks against its average power. Single-carrier links are judged with the eye diagram. For more, see Proakis and Salehi, Digital Communications (5th ed., 2008), chapters 9 and 11, and Goldsmith, Wireless Communications (2005), chapter 12.
Reference card
| Quantity | Formula | Notes |
|---|---|---|
| Pulse train | upsample by , filter by | |
| Raised cosine | 1 at , 0 at the other multiples of : no ISI | |
| Bandwidth | cycles per sample | , : 0.0844 |
| 16-QAM | I and Q from −3, −1, 1, 3, over | Gray order 00, 01, 11, 10; average power 1 |
| OFDM block | times the inverse DFT of | last samples copied in front |
| With a prefix | needs at least the delay spread | |
| One-tap equaliser | weak subcarriers get more noise | |
| Prefix cost | 8 of 72: 11.1 % |