Concatenated error correction code

This is an old revision of this page, as edited by Eyreland (talk | contribs) at 15:47, 5 February 2010 (Applications). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In coding theory, concatenated codes form a class of error-correcting codes that are derived by combining an inner code and an outer code. They were conceived in 1966 by Dave Forney as a solution for the problem of finding a code that has both exponentially decreasing error probability with increasing block length and polynomial-time decoding complexity.

Description

Let C be a code with length N and rate R over an alphabet A with K=N*R symbols. Let I be another code with length n and rate r over an alphabet B with k=n*r symbols.

The inner code I takes one of k possible inputs, encodes onto an n-tuple from B, transmits, and decodes into one of k possible outputs. We regard this as a channel which can transmit one symbol from the alphabet A, also of size k. We use this channel N times to transmit each of the N symbols in a codeword of C. The concatenation of C (as outer code) with I as (inner code) is thus a code of length Nn over the alphabet B.

The key insight in this approach is that if I is decoded using a maximum-likelihood approach (thus showing an exponentially decreasing error probability with increasing length), and C is a code with length N=2^(n*r) that can be decoded in polynomial time of N, then the concatenated code can be decoded in polynomial time of its combined length n*2^(n*r) and shows an exponentially decreasing error probability, even if I has exponential decoding complexity.

In a generalisation of above concatenation, there are N possible inner codes Ii and the i-th symbol in a codeword of C is transmitted across the inner channel using the i-th inner code. The Justesen codes are examples of generalised concatenated codes, where the outer code is a Reed-Solomon code.

Applications

Concatenated codes were first implemented for deep space communication in the Voyager program after the craft had finished their encounters with the outer Gas Giants.[1] Since then, concatenated codes became the workhorse for efficient error correction coding, and stayed so at least until the invention of turbo codes and LDPC codes.

Typically, the inner code is not a block code but a soft-decision convolutional Viterbi-decoded code with a short constraint length. For the outer code, a longer hard-decision block code, frequently Reed Solomon with 8-bit symbols, is selected. The larger symbol size makes the outer code more robust to burst errors that may occur due to channel impairments, and because erroneous output of the convolutional code itself is bursty. Additionally, an interleaving layer may be used that spreads burst errors across a wider range.

The combination of an inner Viterbi convolutional code with an outer Reed-Solomon code (known as an RSV code) became the most popular construction use of code concatenation. The uptake and popularization of the RSV code and its use in the Voyager Program were somewhat simultainious. Concatenated codes are still in use today for deep-space and satellite communication, notably the DVB-S digital television broadcast standard.

In a more loose sense, any (serial) combination of two or more codes may be referred to as a concatenated code. For example, within the DVB-S2 standard, a highly efficient LDPC code is combined with an algebraic outer code in order to remove any resilient errors left over from the inner LDPC code due to its inherent error floor.

Turbo codes: A parallel concatenation approach

The description above is given for what is now called a serially concatenated code. Turbo codes, as described first in 1993, implemented a parallel concatenation of two convolutional codes, with an interleaver between the two codes and an iterative decoder that would pass information forth and back between the codes.[1] This construction had much higher performance than all previously conveived concatenated codes. However, a key aspect of turbo codes is their iterated decoding approach. Iterated decoding is now also applied to serial concatenations in order to achieve higher coding gains.

Notes

  1. ^ a b K. Andrews et al., The Development of Turbo and LDPC Codes for Deep-Space Applications, Proceedings of the IEEE, Vol. 95, No. 11, Nov. 2007.

References

  • F.J. MacWilliams (1977). The Theory of Error-Correcting Codes. North-Holland. pp. 307–316. ISBN 0-444-85193-3. {{cite book}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)