Turbo code

Turbo code

In electrical engineering and digital communications, turbo codes (originally in French "Turbocodes") are a class of high-performance error correction codes developed in 1993 which are finding use in deep space satellite communications and other applications where designers seek to achieve maximal information transfer over a limited-bandwidth communication link in the presence of data-corrupting noise.

Advantages

Of all practical error correction methods known to date, turbo codes and low-density parity-check codes (LDPCs) come closest to approaching the Shannon limit, the theoretical limit of maximum information transfer rate over a noisy channel.

Turbo codes make it possible to increase data rate without increasing the power of a transmission, or they can be used to decrease the amount of power used to transmit at a certain data rate. Their main drawbacks are the relatively high decoding complexity and relatively high latency, which make them unsuitable for some applications.For satellite use, this is not of great concern, since the transmission distance itself introduces latency due to the finite speed of light.

Prior to Turbo codes, because practical implementations of LDPCs had not been developed, the most widespread technique that approached the Shannon limit combined Reed-Solomon error correction block codes with Viterbi-decoded short constraint length convolutional codes, also known as RSV codes.



Disadvantages

The Complexity of these algorithms and the fact that these algorithms have encumbering software patents were considered as detractors of implementing these algorithms in a system. Today, many modern systems use turbo codes.

History

The method was introduced by Berrou, Glavieux, and Thitimajshima (from ENST Bretagne, France) in their 1993 paper: "Near Shannon Limit Error-correcting Coding and Decoding: Turbo-codes" published in the Proceedings of IEEE International Communications Conference [ [http://www-elec.enst-bretagne.fr/equipe/berrou/Near%20Shannon%20Limit%20Error.pdf Near Shannon Limit error-correcting coding and decoding: Turbo-codes] ] . 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. [ [http://www-elec.enst-bretagne.fr/equipe/berrou/com_mag_berrou.pdf Ten-year-old Turbo Codes are Entering Service, Claude Berrou, ENST Bretagne] ]

The encoder

The encoder sends three sub-blocks of bits. The first sub-block is the "m"-bit block of payload data. The second sub-block is "n/2" parity bits for the payload data, computed using a recursive systematic convolutional code (RSC code). The third sub-block is "n/2" parity bits for a known permutation of the payload data, again computed using an RSC convolutional code. That is, two redundant but different sub-blocks of parity bits for the sent payload. The complete block has "m+n" bits of data with a code rate of "m/(m+n)". The permutation of the payload data is carried outby a device called interleaver.

Hardware-wise, turbo-code encoder consists of two identical RSC coders, С1 and C2, as depicted on the figure, which are connected to each other using a concatenation scheme, called "parallel concatenation":

On the figure, "M" is a memory register. Delay line and interleaver force input bits dk to appear in different sequences.At first iteration, the input sequence "d"k appears at both outputs of the encoder, "x"k and" y"1k or "y"2k due to the encoder's systematic character. If the encoders "C"1 and "C"2 are used respectively in "n"1 and "n"2 iterations, their rates are respectively equal to

~R_1=frac{n_1+n_2}{2n_1+n_2},~R_2=frac{n_1+n_2}{2n_2+n_1}.

The decoder

The decoder is built in the similar way as the above encoder - two elementary decoders are interconnected to each other, but in serial way, not parallel. The "DEC"1 decoder operates on lower speed (i.e. "R"1), thus, it is intended for the "C"1 encoder, and "DEC"2 is for "C"2 correspondingly. "DEC"1 yields a soft decision which causes "L"1 delay. The same delay is caused by the delay line in the encoder. The "DEC"2's operation causes "L"2 delay.

An interleaver installed between two decoders is used here to scatter error bursts coming from "DEC"1 output. "DI" block is a demultiplexing and insertion module. It works as a switch, redirecting input bits to "DEC"1 at one moment and to "DEC"2 at another. In OFF state, it feeds both" y"1k and "y"2k inputs with padding bits (zeros).

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

~x_k=(2d_k-1)+a_k,
~y_k=2(Y_k-1)+b_k

where "a"k and "b"k are independent noise components having the same variance σ2. "Y"k is a "k"-th bit from "y"k encoder output.

Redundant information is demultiplexed and sent through "DI" to "DEC"1 (when "y"k="y"1k) and to "DEC"2 (when "y"k="y"2k).

"DEC"1 yields a soft decision, i.e.:

Lambda(d_k)=logfrac{p(d_k=1)}{p(d_k=0)}

and delivers it to "DEC"2. Λ("d"k) is called the "logarithm of likelihood ratio" (LLR). "p"(dk="i"), i=0,1 is "a posteriori probability" (APP) of the "d"k data bit which shows the probability of interpreting a received "d"k bit as "i". Taking "LLR" into account, "DEC"2 yields a hard decision, i.e. a decoded bit.

It's well known that a Viterbi algorithm is unable to calculate APP, thus it cannot be used in "DEC"1. Instead of that, modified BCJR algorithm is used. For "DEC"2, Viterbi algorithm is an appropriate one.

However, the depicted structure is not optimal, because "DEC"1 uses only a fraction of available redundant information. In order to improve the structure, a feedback loop is often used (dotted line on the figure).

oft decision approach

The decoder front-end produces an integer for each bit in the data stream. This integer is a measure of how likely it is that the bit is a 0 or 1 and is also called "soft bit". The integer could be drawn from the range [-127, 127] , where:

* -127 means "certainly 0"
* -100 means "very likely 0"
* 0 means "it could be either 0 or 1"
* 100 means "very likely 1"
* 127 means "certainly 1"
* etc

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 example, for each bit, the front end of a traditional wireless-receiver has to decide if an internal analog voltage is above or below a given threshold voltage level. For a turbo-code decoder, the front end would provide an integer measure of how far the internal voltage is from the given threshold.

To decode the "m+n"-bit block of data, the decoder front-end creates a block of likelihood measures, with one likelihood measure for each bit in the data stream. There are two parallel decoders, one for each of the "n/2"-bit parity sub-blocks. Both decoders use the sub-block of "m" likelihoods for the payload data. The decoder working on the second parity sub-block knows the permutation that the coder used for this sub-block.

olving hypotheses to find bits

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. Each decoder incorporates the derived likelihood estimates from the other decoder to generate a new hypothesis for the bits in the payload. Then they compare these new 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. Two puzzle solvers (decoders) are trying to solve it: one possessing only the "down" clues (parity bits), and the other possessing only the "across" clues. 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.

Practical applications using Turbo Codes

Telecommunications:
* Turbo codes are used extensively in 3G mobile telephony standards.
* MediaFLO, terrestrial mobile television system from Qualcomm
* New NASA missions such as Mars Reconnaissance Orbiter now use Turbo Codes, as an alternative to RS-Viterbi codes.
* Turbo coding such as Block Turbo Coding and Convolutional Turbo Coding are used in IEEE 802.16, a wireless metropolitan network standard.

Bayesian formulation

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

ee also

* Convolutional code
* Viterbi algorithm
* Soft decision
* Interleaver

References

External links

* [http://www.csee.wvu.edu/~mvalenti/documents/valenti01.pdf "The UMTS Turbo Code and an Efficient Decoder Implementation Suitable for Software-Defined Radios"] ("International Journal of Wireless Information Networks")
* ( [http://www.newscientist.com/article.ns?id=mg18725071.400 preview] , [http://geilenkotten.homeunix.org/TC_NS_09072005.pdf copy] )
* [http://www.sciencenews.org/articles/20051105/bob8.asp "Pushing the Limit"] , a "Science News" feature about the development and genesis of turbo codes
* [http://www.iterativesolutions.com/Matlab.htm Coded Modulation Library] , an open source library for simulating turbo codes in matlab
* [http://www.ifp.uiuc.edu/~singer/journalpapers/tuchler_2002a.pdf "Turbo Equalization: Principles and New Results"] , an "IEEE Transactions on Communications" article about using convolutional codes jointly with channel equalization.


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Look at other dictionaries:

  • Turbo code — est le nom d un type de code correcteur imaginé dans les années 1990, qui permet de s approcher de la limite de Shannon (en) davantage que ses prédécesseurs. Les turbo codes sont actuellement incontournables lorsque l on touche au codage de… …   Wikipédia en Français

  • Turbo-Code — Turbo Codes sind eine Gruppe von fehlerkorrigierenden Block oder Faltungs Codes, welche in der digitalen Signalverarbeitung zur gesicherten Datenübertragung, beispielsweise auf Satelliten Übertragungsstrecken, verwendet werden. Sie wurden 1993… …   Deutsch Wikipedia

  • Turbo-Convolutional-Code — Turbo Codes sind eine Gruppe von fehlerkorrigierenden Block oder Faltungs Codes, welche in der digitalen Signalverarbeitung zur gesicherten Datenübertragung, beispielsweise auf Satelliten Übertragungsstrecken, verwendet werden. Sie wurden 1993… …   Deutsch Wikipedia

  • Code Correcteur — Un code correcteur est une technique de codage basée sur la redondance. Elle est destinée à corriger les erreurs de transmission d une information (plus souvent appelée message) sur une voie de communication peu fiable. La théorie des codes… …   Wikipédia en Français

  • Turbo código — Los turbo códigos son una nueva clase de códigos de corrección de errores (FEC), que se introdujeron, junto con un algoritmo de decodificación. La importancia de los turbo códigos es que permiten una comunicación fiable y su eficiencia energética …   Wikipedia Español

  • Turbo — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom.  Pour l’article homophone, voir Turbot. Sur les autres projets Wikimedia : « Turbo », sur …   Wikipédia en Français

  • Code correcteur — Un code correcteur est une technique de codage basée sur la redondance. Elle est destinée à corriger les erreurs de transmission d une information (plus souvent appelée message) sur une voie de communication peu fiable. La théorie des codes… …   Wikipédia en Français

  • Turbo Pascal — ist eine integrierte Entwicklungsumgebung der Firma Borland für die Programmiersprache Pascal. Inhaltsverzeichnis 1 Geschichte 1.1 Turbo Pascal 1.0 1.2 Folgeversionen …   Deutsch Wikipedia

  • Code Impénétrable — Le code impénétrable d un programme informatique est un code dont la compréhension est très difficile pour un humain tout en restant parfaitement compilable par un ordinateur. Appelé aussi assombrissement ou obfuscation, cette technique de… …   Wikipédia en Français

  • Code impenetrable — Code impénétrable Le code impénétrable d un programme informatique est un code dont la compréhension est très difficile pour un humain tout en restant parfaitement compilable par un ordinateur. Appelé aussi assombrissement ou obfuscation, cette… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”