Concatenated error correction code
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.[1] Concatenated codes became widely used in space communications in the 1970s.
Origin
The field of channel coding is concerned with sending a stream of data at as high a rate as possible over a given communications channel, and then decoding the original data reliably at the receiver, using encoding and decoding algorithms that are feasible to implement in a given technology.
Shannon's channel coding theorem shows that over many common channels there exist channel coding schemes that are able to transmit data reliably at all rates less than a certain threshold , called the channel capacity of the given channel. In fact, the probability of decoding error can be made to decrease exponentially as the block length of the coding scheme goes to infinity. However, the complexity of a naive optimum decoding scheme that simply computes the likelihood of every possible transmitted codeword increases exponentially with , so such an optimum decoder rapidly becomes infeasible.
In his doctoral thesis, Dave Forney showed that concatenated codes could be used to achieve exponentially decreasing error probabilities at all data rates less than capacity, with decoding complexity that increases only polynomially with the code block length.
Description

Let Cin be a [n, k, d] code, that is, a block code of length n, dimension k, minimum Hamming distance d, and rate r = n/k, over an alphabet A:
Let Cout be a [N, K, D] code over an alphabet B with |B| = |A|k symbols:
The inner code Cin takes one of |A|k = |B| possible inputs, encodes into an n-tuple over A, transmits, and decodes into one of |B| possible outputs. We regard this as a (super) channel which can transmit one symbol from the alphabet B. We use this channel N times to transmit each of the N symbols in a codeword of Cout. The concatenation of Cout (as outer code) with Cin (as inner code), denoted Cout∘Cin, is thus a code of length Nn over the alphabet A:[1]
It maps each input message m = (m1, m2, ..., mK) to a codeword (Cin(m'1), Cin(m'2), ..., Cin(m'N)), where (m'1, m'2, ..., m'N) = Cout(m1, m2, ..., mK).
The key insight in this approach is that if Cin is decoded using a maximum-likelihood approach (thus showing an exponentially decreasing error probability with increasing length), and Cout is a code with length N = 2nr that can be decoded in polynomial time of N, then the concatenated code can be decoded in polynomial time of its combined length n2nr and shows an exponentially decreasing error probability, even if Cin has exponential decoding complexity.[1]
In a generalization of above concatenation, there are N possible inner codes Cin,i and the i-th symbol in a codeword of Cout is transmitted across the inner channel using the i-th inner code. The Justesen codes are examples of generalized concatenated codes, where the outer code is a Reed-Solomon code.
Properties
1. Given as an code and as an code, is an code.
where
is the block length, dimension and distance of the outer code.
is the block length, dimension and distance of the inner code.
PROOF: Consider . The parameters such as block length, dimension and alphabet have already been defined. Using the same parameters defined above, we have to prove that the distance is at least .
We start the proof by considering .
Then, .............................................................(i)
Now for each position which contributes to the distance defined above, we have
, .............................................................(ii)
We know that has distance . From (i) and (ii) we can infer that there are atleast positions which satisfies the above equation.
Thus it's proved that is an code.
2. If and are linear codes, then is also a linear code.
The proof is very simple and can be done by the following idea. Define a generator matrix for in terms of the generator matrices of and
Decoding Concatenated Codes
A natural decoding algorithm for concatenated codes is that the code first decodes the inner code and then decodes the outer code. Consider that there is a polynomial time unique decoding algorithm for the outer code. Now we have to find a polynomial time decoding algorithm for the inner codes. It is understood that polynomial running time here means that running time is polynomial in the final block length. The main idea is to pick a decoding algorithm that runs in time singly exponential in the inner block length as long as the inner block length is logarithmic in the outer code block length. However, we have assumed that the inner block length is logarithmic in the outer code and thus, we can use the Maximum Likelihood Decoder (or MLD) for the inner code.
Let the input to the decoder be the vector . The decoding algorithm is a two step process:
1. Compute as follows:
< <
2. Run the unique decoding algorithm for on .
We now verify that each step of the algorithm above can be implemented in polynomial time:
1. The time complexity of Step 1 is , which for our choice of (and constant rate) for the inner code, is time.
2. Step 2 needs polynomial time by our assumption that the unique decoding algorithm for takes time. This implies that the running time of the decoding algorithm is polynomial time overall.
Remarks
1. The decoding algorithm above can correct < many errors.
PROOF:
We prove the above theorem using the concept of which is defined as follows: Consider a bad event has occurred (at position < < ) if where was the original message and
<
We also know that if the number of bad events is less than , then the decoder in Step 2 will output .
Thus our goal is to find out when a bad event happens to complete the proof.
Also a bad event cannot happen at position if
<
Now if the number of bad events is at least , then the total number of errors is at least = , which is a contradiction. Thus, the number of bad events is strictly less than .
2. The algorithm also works if the inner codes are different, e.g. Justesen codes.
Also the Generalized Minimum Distance algorithm can correct up to errors.
Applications
Concatenated codes were starting to be regularly used for deep space communication with the Voyager program, which launched their first probe in 1977.[2] (A simple concatenation scheme however was already implemented for the 1971 Mariner Mars orbiter mission.[3]) 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.[3][2]
Typically, the inner code is not a block code but a soft-decision convolutional Viterbi-decoded code with a short constraint length.[4] For the outer code, a longer hard-decision block code, frequently Reed Solomon with 8-bit symbols, is selected.[1][3] 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.[1][3] An interleaving layer is usually added between the two codes to spread burst errors across a wider range.[3]
The combination of an inner Viterbi convolutional code with an outer Reed-Solomon code (known as an RSV code) was first used on Voyager 2,[3][5] and became a popular construction both within and outside of the space sector. It is still notably used today for satellite communication, such as the DVB-S digital television broadcast standard.[6]
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.[7]
A simple concatenation scheme is also used on the Compact Disc, where an interleaving layer between two Reed-Solomon codes of different sizes effectively spreads errors across different blocks.
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.[2] This construction had much higher performance than all previously conceived 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, such as within serially concatenated convolutional codes (SCCCs). An early form of iterated decoding was notably implemented with 2 to 5 iterations in the "Galileo code" of the Galileo spacecraft.[3]
See Also
References
- ^ a b c d e
G. D. Forney (1967). "Concatenated codes". Cambridge, Massachusetts: MIT Press.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ a b c 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.
- ^ a b c d e f g
Robert J. McEliece; Laif Swanson (20 Aug. 1993). "Reed-Solomon Codes and the Exploration of the Solar System". JPL.
{{cite journal}}
: Check date values in:|date=
(help); Cite journal requires|journal=
(help) - ^
J. P. Odenwalder (1970). "Optimal decoding of convolutional codes". U.C.L.A., Systems Science Dept. (dissertation).
{{cite journal}}
: Cite journal requires|journal=
(help); Italic or bold markup not allowed in:|publisher=
(help) - ^ R. Ludwig, J. Taylor, Voyager Telecommunications Manual, JPL DESCANSO (Design and Performance Summary Series), March 2002.
- ^ Digital Video Broadcasting (DVB); Framing structure, channel coding and modulation for 11/12 GHz satellite services, ETSI EN 300 421, V1.1.2, August 1997.
- ^ Digital Video Broadcasting (DVB); Second generation framing structure, channel coding and modulation systems for Broadcasting, Interactive Services, News Gathering and other broadband satellite applications (DVB-S2), ETSI EN 302 307, V1.2.1, April 2009.
Further reading
- Shu Lin, Daniel J. Costello, Jr. (1983). Error Control Coding: Fundamentals and Applications. Prentice Hall. pp. 278–280. ISBN 0-13-283796-X.
{{cite book}}
: CS1 maint: multiple names: authors list (link) - 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)