Forward error correction
In telecommunications Forward error correction (FEC) is a special code for error detection and correction. The sender adds parts of the data again. This is called redundancy. The receiver is then able to detect certain errors that came from the sending the data. In certain cases, the receiver can correct the error, without the need for a retransmission.
How it works
FEC adds redundancy to the transmitted information with a known algorithm. Each redundant bit is a function of many original information bits. The original information may or may not appear in the encoded output; codes that include the unmodified input in the output are systematic, while those that do not are nonsystematic.
An extremely simple example would be an analog to digital converter that samples three bits of signal strength data for every bit of transmitted data. If the three samples are mostly all zero, the transmitted bit was probably a zero, and if three samples are mostly all one, the transmitted bit was probably a one. The simplest example of error correction is for the receiver to assume the correct output is given by the most frequently occurring value in each group of three.
Triplet received | Interpreted as |
---|---|
000 | 0 |
001 | 0 |
010 | 0 |
100 | 0 |
111 | 1 |
110 | 1 |
101 | 1 |
011 | 1 |
This allows an error in any one of the three samples to be corrected by "democratic voting", but is a very inefficient FEC. But in practice would not work very well, but it does illustrate the principle. In practice, FEC codes typically examine the last several dozen, or even the last several hundred, previously received bits to determine how to decode the current small handful of bits (typically in groups of 2 to 8 bits).
Such triple modular redundancy, the simplest form of forward error correction, is widely used.