Turbo code

They were the first practical codes to closely approach the maximum channel capacity or Shannon limit, a theoretical maximum for the code rate at which reliable communication is still possible given a specific noise level.

Hagenauer has argued the term turbo code is a misnomer since there is no feedback involved in the encoding process.

[3] The fundamental patent application for turbo codes was filed on 23 April 1991.

The patent application lists Claude Berrou as the sole inventor of turbo codes.

[4] This paper was published 1993 in the Proceedings of IEEE International Communications Conference.

The 1993 paper was formed from three separate submissions that were combined due to space constraints.

However, it is clear from the original patent filing that Berrou is the sole inventor of turbo codes and that the other authors of the paper contributed material other than the core concepts.

When the performance was confirmed a small revolution in the world of coding took place that led to the investigation of many other types of iterative signal processing.

Iterative turbo decoding methods have also been applied to more conventional FEC systems, including Reed–Solomon corrected convolutional codes, although these systems are too complex for practical implementations of iterative decoders.

In a later paper, Berrou gave credit to the intuition of "G. Battail, J. Hagenauer and P. Hoeher, who, in the late 80s, highlighted the interest of probabilistic processing."

He adds "R. Gallager and M. Tanner had already imagined coding and decoding techniques whose general principles are closely related," although the necessary calculations were impractical at that time.

The third sub-block is n/2 parity bits for a known permutation of the payload data, again computed using an RSC code.

The permutation of the payload data is carried out by a device called an interleaver.

The delay line and interleaver force input bits dk to appear in different sequences.

An interleaver installed between the two decoders is used here to scatter error bursts coming from

Consider a memoryless AWGN channel, and assume that at k-th iteration, the decoder receives a pair of random variables: where

In order to improve the structure, a feedback loop is used (see the dotted line on the figure).

The decoder front-end produces an integer for each bit in the data stream.

The integer could be drawn from the range [−127, 127], where: This introduces a probabilistic aspect to the data-stream from the front end, but it conveys more information about each bit than just 0 or 1.

For a turbo code decoder, the front end would provide an integer measure of how far the internal voltage is from the given threshold.

The key innovation of turbo codes is how they use the likelihood data to reconcile differences between the two decoders.

Each of the two convolutional decoders generates a hypothesis (with derived likelihoods) for the pattern of m bits in the payload sub-block.

The hypothesis bit-patterns are compared, and if they differ, the decoders exchange the derived likelihoods they have for each bit in the hypotheses.

This iterative process continues until the two decoders come up with the same hypothesis for the m-bit pattern of the payload, typically in 15 to 18 cycles.

An analogy can be drawn between this process and that of solving cross-reference puzzles like crossword or sudoku.

Consider a partially completed, possibly garbled crossword puzzle.

To start, both solvers guess the answers (hypotheses) to their own clues, noting down how confident they are in each letter (payload bit).

Then, they compare notes, by exchanging answers and confidence ratings with each other, noticing where and how they differ.

Based on this new knowledge, they both come up with updated answers and confidence ratings, repeating the whole process until they converge to the same solution.

Telecommunications: From an artificial intelligence viewpoint, turbo codes can be considered as an instance of loopy belief propagation in Bayesian networks.