How Forward Error-Correcting Codes Work

In a communication system that employs forward error-correction coding, a digital information source sends a data sequence comprising k bits of data to an encoder. The encoder inserts redundant (or parity) bits, thereby outputting a longer sequence of n code bits called a codeword. On the receiving end, codewords are used by a suitable decoder to extract the original data sequence.

coding schematic

Codes are designated with the notation (n, k) according to the number of n output code bits and k input data bits. The ratio k/n is called the rate, R, of the code and is a measure of the fraction of information contained in each code bit. For example, each code bit produced by a (6, 3) encoder contains 1/2 bit of information.

Another metric often used to characterize code bits is redundancy, expressed as (nk)/n. Codes introducing large redundancy (that is, large nk or small k/n) convey relatively little information per code bit. Codes that introduce less redundancy have higher code rates (up to a maximum of 1) and convey more information per code bit. Large redundancy is advantageous because it reduces the likelihood that all of the original data will be wiped out during a single transmission.

On the down side, the addition of parity bits will generally increase the transmission bandwidth or the message delay (or both). For real-time applications, such as voice communications, the code-bit rate must be increased by a factor of n/k = 1/R to avoid a reduction in data throughput. Hence, for a given modulation scheme, the transmission bandwidth increases by that same factor n/k. If, however, the communication application does not require the real-time transfer of information, then additional message delay (rather than increased bandwidth) is the usual trade-off.

Represented graphically, the general error-performance characteristics of most digital communication systems have a waterfall-shaped appearance. System performance improves (i.e., bit-error rate decreases) as the signal-to-noise ratio increases. The two curves shown below compare the performance of a typical system with and without forward error-correction coding. The coded system, operating with a received signal-to-noise ratio of 8 decibels, has a smaller bit-error rate by a factor of 100 compared with the uncoded system at the same signal-to-noise ratio.

bit error rate curve

Viewed another way, the graphs indicate that the coded system can achieve the same bit-error rate as the uncoded system at a lower signal-to-noise ratio. This reduction in required signal-to-noise ratio, called the coding gain, is a common metric used to measure the performance of different coding schemes.

The importance of coding gain is evident when the system is viewed from the designer's perspective. For example, to obtain the same level of improved bit-error rate without the use of coding, a designer would have to achieve a larger signal-to-noise ratio (12 decibels instead of 8). To do so would require the use of larger power supplies, bigger antennas, or higher-quality components that introduce less noise. If none of these modifications can be provided, then the designer will have to tolerate some type of performance degradation—such as reduced service ranges or lower operating margins—to obtain the same improvement.


Close this window