Hubbry Logo
Turbo codeTurbo codeMain
Open search
Turbo code
Community hub
Turbo code
logo
7 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
Contribute something
Turbo code
Turbo code
from Wikipedia

In information theory, turbo codes are a class of high-performance forward error correction (FEC) codes developed around 1990–91, but first published in 1993. 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. Turbo codes are used in 3G/4G mobile communications (e.g., in UMTS and LTE) and in (deep space) satellite communications as well as other applications where designers seek to achieve reliable information transfer over bandwidth- or latency-constrained communication links in the presence of data-corrupting noise. Turbo codes compete with low-density parity-check (LDPC) codes, which provide similar performance. Until the patent for turbo codes expired,[1] the patent-free status of LDPC codes was an important factor in LDPC's continued relevance.[2]

The name "turbo code" arose from the feedback loop used during normal turbo code decoding, which was analogized to the exhaust feedback used for engine turbocharging. Hagenauer has argued the term turbo code is a misnomer since there is no feedback involved in the encoding process.[3]

History

[edit]

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. The patent filing resulted in several patents including US Patent 5,446,747, which expired 29 August 2013.

The first public paper on turbo codes was "Near Shannon Limit Error-correcting Coding and Decoding: 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. The merger caused the paper to list three authors: Berrou, Glavieux, and Thitimajshima (from Télécom Bretagne, former ENST Bretagne, France). 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.[improper synthesis]

Turbo codes were so revolutionary at the time of their introduction that many experts in the field of coding did not believe the reported results. 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.[5]

The first class of turbo code was the parallel concatenated convolutional code (PCCC). Since the introduction of the original parallel turbo codes in 1993, many other classes of turbo code have been discovered, including serial concatenated convolutional codes and repeat-accumulate codes. 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. Turbo equalization also flowed from the concept of turbo coding.

In addition to turbo codes, Berrou also invented recursive systematic convolutional (RSC) codes, which are used in the example implementation of turbo codes described in the patent. Turbo codes that use RSC codes seem to perform better than turbo codes that do not use RSC codes.

Prior to turbo codes, the best constructions were serial concatenated codes based on an outer Reed–Solomon error correction code combined with an inner Viterbi-decoded short constraint length convolutional code, also known as RSV 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.[6]

An example encoder

[edit]

There are many different instances of turbo codes, using different component encoders, input/output ratios, interleavers, and puncturing patterns. This example encoder implementation describes a classic turbo encoder, and demonstrates the general design of parallel turbo codes.

This encoder implementation 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 code. Thus, two redundant but different sub-blocks of parity bits are sent with the 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 out by a device called an interleaver.

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

In the figure, M is a memory register. The delay line and interleaver force input bits dk to appear in different sequences. At first iteration, the input sequence dk appears at both outputs of the encoder, xk and y1k or y2k due to the encoder's systematic nature. If the encoders C1 and C2 are used in n1 and n2 iterations, their rates are respectively equal to

The decoder

[edit]

The decoder is built in a similar way to the above encoder. Two elementary decoders are interconnected to each other, but in series, not in parallel. The decoder operates on lower speed (i.e., ), thus, it is intended for the encoder, and is for correspondingly. yields a soft decision which causes delay. The same delay is caused by the delay line in the encoder. The 's operation causes delay.

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

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

where and are independent noise components having the same variance . is a k-th bit from encoder output.

Redundant information is demultiplexed and sent through DI to (when ) and to (when ).

yields a soft decision; i.e.:

and delivers it to . is called the logarithm of the likelihood ratio (LLR). is the a posteriori probability (APP) of the data bit which shows the probability of interpreting a received bit as . Taking the LLR into account, yields a hard decision; i.e., a decoded bit.

It is known that the Viterbi algorithm is unable to calculate APP, thus it cannot be used in . Instead of that, a modified BCJR algorithm is used. For , the Viterbi algorithm is an appropriate one.

However, the depicted structure is not an optimal one, because uses only a proper fraction of the available redundant information. In order to improve the structure, a feedback loop is used (see the dotted line on the figure).

Soft decision approach

[edit]

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"

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 n2-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.

Solving hypotheses to find bits

[edit]

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.

Performance

[edit]

Turbo codes perform well due to the attractive combination of the code's random appearance on the channel together with the physically realisable decoding structure. Turbo codes are affected by an error floor.

Practical applications using turbo codes

[edit]

Telecommunications:

Bayesian formulation

[edit]

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

See also

[edit]

References

[edit]

Further reading

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
A turbo code is a class of high-performance forward error-correction (FEC) codes that employs parallel concatenation of two or more recursive systematic convolutional encoders, separated by a pseudorandom interleaver, to generate parity bits and achieve bit error rates (BER) remarkably close to the theoretical Shannon limit for reliable communication over noisy channels. Invented in 1993 by Claude Berrou, Alain Glavieux, and Punya Thitimajshima at the École Nationale Supérieure des Télécommunications de Bretagne (now part of IMT Atlantique) in , turbo codes were first presented at the International Conference on Communications (ICC) in , where they demonstrated the potential for error-free transmission within 0.5 dB of the Shannon capacity limit at a code rate of 1/2. This breakthrough stemmed from the insight to use iterative decoding, where soft-output decoders—typically based on the maximum a posteriori (MAP) algorithm—exchange extrinsic information over multiple iterations (often 4 to 18) to refine reliability estimates and correct errors with low complexity. Turbo codes revolutionized digital communications by enabling efficient, near-capacity data transmission in bandwidth-constrained and error-prone environments, such as wireless networks and deep-space links. They were standardized in the 3G Universal Mobile Telecommunications System (UMTS) for uplink and downlink channels, contributing to higher data rates and reliability in mobile telephony. Subsequent adaptations appeared in 4G LTE for data channels, certain digital video broadcasting standards such as DVB-RCS, and satellite communications, including NASA's Mars Reconnaissance Orbiter and the European Space Agency's SMART-1 mission. Although largely supplanted by low-density parity-check (LDPC) codes in 5G NR due to superior performance at very low BERs, turbo codes remain influential in hybrid schemes and legacy systems, underscoring their role in bridging the gap between theoretical limits and practical error correction.

History and Development

Invention and Early Milestones

Turbo codes were invented in 1993 by Claude Berrou, Alain Glavieux, and Punya Thitimajshima while working at the École Nationale Supérieure des Télécommunications de Bretagne (ENST Bretagne), now known as IMT Atlantique, in . Their breakthrough involved parallel concatenation of convolutional codes with iterative decoding, marking a significant advancement in error-correcting codes capable of approaching theoretical limits. This development stemmed from research into high-performance coding schemes for reliable data transmission over noisy channels. The invention was first publicly disclosed in a seminal conference paper presented at the 1993 IEEE International Conference on Communications (ICC '93) in , , titled "Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes." In this paper, the authors demonstrated through simulations that turbo codes could achieve a (BER) of 10^{-5} at an E_b/N_0 of approximately 0.7 dB for a rate-1/2 code, placing performance within 0.5 dB of the pragmatic Shannon limit for binary input channels. These results highlighted the codes' potential to operate near the theoretical capacity bound, outperforming conventional convolutional codes by several decibels. Early milestones in turbo code adoption followed swiftly, reflecting their rapid recognition in standards. By 1999, turbo codes were selected for in the Universal Mobile Telecommunications System (), the mobile standard developed by the (), enabling efficient data services at rates up to 2 Mbps. These adoptions solidified turbo codes as a cornerstone of modern wireless and broadcast systems.

Key Contributors and Publications

The development of turbo codes is primarily attributed to Claude Berrou, a French and researcher at the École Nationale Supérieure des Télécommunications de Bretagne (ENST Bretagne, now part of IMT Atlantique), who conceived the core idea of parallel concatenated convolutional codes in 1991 while exploring iterative decoding techniques for error correction. The fundamental was filed on April 23, 1991, listing Berrou as the sole inventor. Berrou served as the lead inventor, focusing on the integration of recursive systematic convolutional encoders with interleaving to achieve near-Shannon-limit performance, and he is listed as the sole inventor on the foundational patents. His collaborator Alain Glavieux, also at ENST Bretagne and Berrou's long-term research partner until Glavieux's passing in 2003, contributed to the theoretical refinement of the decoding algorithm, particularly the iterative exchange of extrinsic information between component decoders. Punya Thitimajshima, a Thai doctoral under Berrou's supervision at ENST Bretagne from 1989 to 1993, played a key role in analyzing recursive systematic convolutional codes, which became essential to the turbo code structure; his thesis work directly informed the encoder design and earned him co-authorship on seminal publications. The foundational publication introducing turbo codes was the 1993 paper "Near Shannon limit error-correcting coding and decoding: Turbo-codes" by Berrou, Glavieux, and Thitimajshima, presented at the IEEE International Conference on Communications (ICC '93) in , , where it demonstrated bit error rates approaching 10^{-5} at 0.7 dB E_b/N_0 for a coding rate of 1/2, within 0.5 dB of the Shannon limit. This work was expanded in the 1996 journal article "Near Optimum Error Correcting Coding and Decoding: Turbo-codes" by Berrou and Glavieux, published in IEEE Transactions on Communications, which provided detailed derivations of the maximum (MAP) decoding components and confirmed the codes' efficiency through simulations. Patent filings followed, with France Télécom (now Orange) securing ownership of the ; notable examples include US 5,446,747 (filed 1993, granted 1995) for the parallel concatenation method and related encoding/decoding processes, enabling commercial licensing for standards. ENST Bretagne, located in , served as the primary institution for turbo code development, where Berrou led a team funded partly by Télécom to address error correction challenges in and mobile communications during the early . The institution's department fostered interdisciplinary work on convolutional coding and iterative processing, culminating in the turbo code breakthrough; today, as IMT Atlantique, it continues on advanced error-correcting codes, building on this legacy. Turbo codes exerted profound influence on , with the 1993 ICC paper garnering over 5,000 citations and inspiring extensions like the "turbo principle" of iterative across modules. A notable extension came from Joachim Hagenauer at the , who in 1996 introduced turbo equalization by applying the iterative decoding paradigm to joint channel equalization and decoding, as detailed in his work on MAP equalization for channels, which improved performance in dispersive environments and amassed hundreds of citations.

Fundamentals

Basic Principles

Turbo codes represent a class of iterative error-correcting codes known as parallel concatenated convolutional codes (PCCCs), which achieve bit error rates close to the Shannon limit—typically within 0.5 dB for moderate code rates—through a combination of code concatenation and soft iterative decoding. Introduced as a breakthrough in , these codes leverage redundancy generated by multiple encoders to approach theoretical limits in (AWGN) channels. The fundamental idea behind turbo codes is the parallel of two or more constituent convolutional encoders, separated by a pseudo-random interleaver, to produce independent parity sequences that collectively improve . This structure exploits the diversity of errors across permuted data streams, enabling the iterative exchange of soft information during decoding to refine estimates of the transmitted bits. The use of recursive systematic convolutional (RSC) encoders as constituents is key, as their feedback loops enhance at low signal-to-noise ratios by amplifying the effect of input errors. To understand turbo codes, familiarity with convolutional codes is essential; these are linear time-invariant codes characterized by a trellis structure that models state transitions over time and defined by generator polynomials, which specify the connections in a shift-register-based encoder using modulo-2 addition. For example, a rate-1/2 convolutional code might use polynomials such as g1(D)=1+D2g_1(D) = 1 + D^2 and g2(D)=1+D+D2g_2(D) = 1 + D + D^2, where DD represents a delay element, producing output bits as linear combinations of input and memory elements. Interleaving serves as a permutation mechanism that rearranges the input sequence to decorrelate burst errors or correlated noise, ensuring that the parity outputs from different encoders address distinct error patterns and thereby increasing the effective minimum distance of the code. In terms of overall architecture, turbo encoders produce a systematic output comprising the original information bits alongside parity bits generated independently by each constituent encoder, allowing the decoder to directly access the while using the parities for reliability verification during iterations. This punctured or rate-matched output format balances coding gain with transmission efficiency, typically yielding code rates around 1/3 for dual-encoder configurations.

Constituent Codes and Interleaving

Turbo codes utilize two identical recursive systematic convolutional (RSC) codes as their constituent encoders, which generate both systematic and parity outputs while incorporating feedback for enhanced error-correcting performance. Each RSC encoder operates with a constraint length of K=4K = 4 ( ν=3\nu = 3), defined by a feedback g1(D)=1+D2+D3g_1(D) = 1 + D^2 + D^3 ( 15) and a g0(D)=1+D+D3g_0(D) = 1 + D + D^3 ( 13). These polynomials ensure a primitive feedback structure that promotes long error events and improves the code's distance properties during iterative decoding. The interleaver serves as a critical component between the two constituent encoders, permuting the input bits to the second RSC encoder to decorrelate the parity outputs and maximize the between erroneous bit patterns. This randomization prevents low-weight codewords from aligning in both encoders, thereby boosting the overall minimum distance of the turbo code. Typical interleaver designs include S-random interleavers, which enforce a minimum separation SS (often set to 55 to 1010 times the constraint length) between the original and permuted positions of any bit to avoid short cycles, and simpler block interleavers that rearrange bits in row-column fashion for efficient hardware . The interleaver length NN matches the information block size to ensure full coverage without truncation. To achieve desired code rates higher than the native 1/3, puncturing selectively removes certain parity bits from the concatenated output while preserving all systematic bits. For instance, transitioning from rate 1/3 to 1/2 involves transmitting every systematic bit along with alternating parity bits from the first and second encoders, effectively halving the parity overhead without significantly degrading performance at moderate signal-to-noise ratios. This technique maintains near-optimum bit error rates by balancing rate and reliability. For encoding finite-length blocks, termination is applied to each constituent encoder by appending ν\nu tail bits, computed as the systematic bits that drive the back to the all-zero state. This trellis termination ensures known starting and ending states for the decoder, reducing edge effects and enhancing decoding reliability, though it incurs a small rate loss of approximately 2ν/N2\nu / N.

Encoding Process

Parallel Concatenated Structure

The parallel concatenated structure forms the core of the original turbo code, utilizing two identical recursive systematic convolutional (RSC) encoders arranged in parallel to the input bits. The input bit sequence, denoted as {u_k}, is directly fed into the first RSC encoder, which generates a systematic output X equal to the input itself and a corresponding parity output Y_1. Simultaneously, a permuted (interleaved) version of the input sequence is provided to the second RSC encoder, which produces an additional parity output Y_2. The overall coded output consists of the three streams—X, Y_1, and Y_2—resulting in a fundamental code rate of 1/3, where each input bit generates three output bits. In a typical representation, the serial input bit enters the and branches to the first encoder without modification, while a pseudo-random interleaver reorders the bits before directing them to the second encoder, ensuring between the parity . The outputs from both encoders are then multiplexed into a single coded for transmission, with the interleaver size typically matching the input block length to maintain efficiency. This parallel configuration allows the encoders to operate concurrently, simplifying hardware implementation by sharing a common clock . To achieve higher code rates beyond 1/3, such as 1/2 commonly used in practical systems, puncturing is applied by systematically deleting specific bits from the Y_1 and Y_2 streams according to predefined patterns, reducing without altering the encoder structure. The unpunctured rate-1/3 form preserves maximum error-correcting capability for low-rate applications. A key advantage of this parallel setup lies in its facilitation of extrinsic between the constituent decoders during subsequent processing, enabling iterative refinement that approaches the Shannon limit for error correction.

Example Encoder Implementation

To illustrate the encoding process of a turbo code, consider a simple setup with a block of k=8k=8 bits, using two identical recursive systematic convolutional (RSC) encoders each with constraint K=3K=3 and generator polynomials g1=78=(1+D+D2)g_1 = 7_8 = (1 + D + D^2) for the feedback path and g2=58=(1+D2)g_2 = 5_8 = (1 + D^2) for the parity output. An S-random interleaver is employed between the encoders to permute the input sequence and enhance error-spreading properties. For this example, termination tail bits are omitted to focus on the core process, yielding a rate-1/3 codeword of 24 bits without puncturing. The input information sequence is u=[1,0,1,1,0,0,1,0]\mathbf{u} = [1, 0, 1, 1, 0, 0, 1, 0]. This is fed directly into the first RSC encoder, which produces the systematic output X=u\mathbf{X} = \mathbf{u} and the parity output Y1\mathbf{Y}_1. The state of the encoder is represented by the two memory elements (initially [0, 0]), and computations are performed modulo 2. The step-by-step encoding for the first RSC is as follows:
  • Input bit 1 (u1=1u_1 = 1): Feedback input b1=100=1b_1 = 1 \oplus 0 \oplus 0 = 1, parity y1,1=10=1y_{1,1} = 1 \oplus 0 = 1, new state [1, 0].
  • Input bit 2 (u2=0u_2 = 0): b2=010=1b_2 = 0 \oplus 1 \oplus 0 = 1, y1,2=10=1y_{1,2} = 1 \oplus 0 = 1, new state [1, 1].
  • Input bit 3 (u3=1u_3 = 1): b3=111=1b_3 = 1 \oplus 1 \oplus 1 = 1, y1,3=11=0y_{1,3} = 1 \oplus 1 = 0, new state [1, 1].
  • Input bit 4 (u4=1u_4 = 1): b4=111=1b_4 = 1 \oplus 1 \oplus 1 = 1, y1,4=11=0y_{1,4} = 1 \oplus 1 = 0, new state [1, 1].
  • Input bit 5 (u5=0u_5 = 0): b5=011=0b_5 = 0 \oplus 1 \oplus 1 = 0, y1,5=01=1y_{1,5} = 0 \oplus 1 = 1, new state [0, 1].
  • Input bit 6 (u6=0u_6 = 0): b6=001=1b_6 = 0 \oplus 0 \oplus 1 = 1, y1,6=11=0y_{1,6} = 1 \oplus 1 = 0, new state [1, 0].
  • Input bit 7 (u7=1u_7 = 1): b7=110=0b_7 = 1 \oplus 1 \oplus 0 = 0, y1,7=00=0y_{1,7} = 0 \oplus 0 = 0, new state [0, 1].
  • Input bit 8 (u8=0u_8 = 0): b8=001=1b_8 = 0 \oplus 0 \oplus 1 = 1, y1,8=11=0y_{1,8} = 1 \oplus 1 = 0, new state [1, 0].
Thus, X=[1,0,1,1,0,0,1,0]\mathbf{X} = [1, 0, 1, 1, 0, 0, 1, 0] and Y1=[1,1,0,0,1,0,0,0]\mathbf{Y}_1 = [1, 1, 0, 0, 1, 0, 0, 0]. The sequence u\mathbf{u} is then permuted by the S-random interleaver to produce the interleaved input u=[0,1,0,0,1,1,0,1]\mathbf{u}' = [0, 1, 0, 0, 1, 1, 0, 1], which is fed into the second RSC encoder (reset to initial state [0, 0]). The step-by-step encoding for the second RSC yields the parity output Y2\mathbf{Y}_2:
  • Input bit 1 (u1=0u'_1 = 0): b1=000=0b_1 = 0 \oplus 0 \oplus 0 = 0, y2,1=00=0y_{2,1} = 0 \oplus 0 = 0, new state [0, 0].
  • Input bit 2 (u2=1u'_2 = 1): b2=100=1b_2 = 1 \oplus 0 \oplus 0 = 1, y2,2=10=1y_{2,2} = 1 \oplus 0 = 1, new state [1, 0].
  • Input bit 3 (u3=0u'_3 = 0): b3=010=1b_3 = 0 \oplus 1 \oplus 0 = 1, y2,3=10=1y_{2,3} = 1 \oplus 0 = 1, new state [1, 1].
  • Input bit 4 (u4=0u'_4 = 0): b4=011=0b_4 = 0 \oplus 1 \oplus 1 = 0, y2,4=01=1y_{2,4} = 0 \oplus 1 = 1, new state [0, 1].
  • Input bit 5 (u5=1u'_5 = 1): b5=101=0b_5 = 1 \oplus 0 \oplus 1 = 0, y2,5=01=1y_{2,5} = 0 \oplus 1 = 1, new state [0, 0].
  • Input bit 6 (u6=1u'_6 = 1): b6=100=1b_6 = 1 \oplus 0 \oplus 0 = 1, y2,6=10=1y_{2,6} = 1 \oplus 0 = 1, new state [1, 0].
  • Input bit 7 (u7=0u'_7 = 0): b7=010=1b_7 = 0 \oplus 1 \oplus 0 = 1, y2,7=10=1y_{2,7} = 1 \oplus 0 = 1, new state [1, 1].
  • Input bit 8 (u8=1u'_8 = 1): b8=111=1b_8 = 1 \oplus 1 \oplus 1 = 1, y2,8=11=0y_{2,8} = 1 \oplus 1 = 0, new state [1, 1].
Thus, Y2=[0,1,1,1,1,1,1,0]\mathbf{Y}_2 = [0, 1, 1, 1, 1, 1, 1, 0]. The final codeword is the c=(X,Y1,Y2)=[1,0,1,1,0,0,1,0,1,1,0,0,1,0,0,0,0,1,1,1,1,1,1,0]\mathbf{c} = (\mathbf{X}, \mathbf{Y}_1, \mathbf{Y}_2) = [1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0], a 24-bit ready for transmission. The following table visualizes the key sequences for clarity:
SequenceBits
Input u\mathbf{u}1 0 1 1 0 0 1 0
Systematic X\mathbf{X}1 0 1 1 0 0 1 0
Parity Y1\mathbf{Y}_1 (first encoder)1 1 0 0 1 0 0 0
Interleaved u\mathbf{u}'0 1 0 0 1 1 0 1
Parity Y2\mathbf{Y}_2 (second encoder)0 1 1 1 1 1 1 0
Codeword c\mathbf{c}1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0

Decoding Process

Iterative Decoding Algorithm

The iterative decoding algorithm for turbo codes relies on a parallel structure of two constituent convolutional encoders, enabling a feedback loop between two maximum () decoders that exchange extrinsic information to progressively refine bit estimates. This process, introduced as the "turbo principle," applies the BCJR algorithm to each decoder, allowing soft decisions to be iteratively improved without direct knowledge of the other code's contributions. The algorithm begins with initialization, where the channel provides log-likelihood ratios (LLRs) for the received systematic and parity symbols as the initial a priori for the first decoder, which processes the non-interleaved sequence from the first constituent code. The first decoder then computes the a posteriori probabilities (APPs) for each bit using the BCJR method and extracts the extrinsic by subtracting the channel and a priori LLRs; this extrinsic output is subsequently interleaved and fed to the second decoder as updated a priori . The second decoder, operating on the interleaved sequence from the second constituent code, performs analogous computations to produce its APPs and extrinsic , which is deinterleaved before being passed back to the first decoder. This exchange of extrinsic information continues for multiple iterations, typically 6 to 8, during which the decoders converge toward reliable bit decisions as mutual refinements reduce . Within each BCJR invocation, the APP for an information bit uku_k given the received sequence YY is calculated via the forward-backward : P(uk=jY)=(s,s):uk=jαk1(s)γk(s,s)βk(s)j{0,1}(s,s):uk=jαk1(s)γk(s,s)βk(s)P(u_k = j \mid Y) = \frac{ \sum_{(s',s): u_k = j} \alpha_{k-1}(s') \gamma_k(s', s) \beta_k(s) }{ \sum_{j' \in \{0,1\}} \sum_{(s',s): u_k = j'} \alpha_{k-1}(s') \gamma_k(s', s) \beta_k(s) } where αk\alpha_k and βk\beta_k denote the forward and backward state probabilities, respectively, γk\gamma_k is the branch transition metric incorporating channel observations and a priori probabilities, the sums are over state transitions (s,s)(s', s) emitting uk=ju_k = j, and the result is normalized; the result is normalized over all possible states. Decoding terminates upon reaching a predefined number of iterations or when a stopping criterion, such as a on the hard-decided bits, confirms the absence of errors, thereby avoiding unnecessary computations while maintaining performance.

Log-Likelihood Ratio Computation

In turbo decoding, the log-likelihood ratio (LLR) for an information bit uku_k is defined as L(uk)=log[P(uk=0Y)P(uk=1Y)]L(u_k) = \log \left[ \frac{P(u_k = 0 \mid \mathbf{Y})}{P(u_k = 1 \mid \mathbf{Y})} \right], where Y\mathbf{Y} represents the received , providing a soft measure of the that the bit is 0 versus 1. This LLR is central to the maximum (MAP) decoding employed in the BCJR algorithm, which underlies the component decoders in turbo codes. The channel LLR, denoted LcL_c, captures the reliability of the received symbol based on the channel model, independent of the code structure. For an additive white Gaussian noise (AWGN) channel with binary phase-shift keying (BPSK) modulation, where the transmitted symbol xk=12ukx_k = 1 - 2u_k and the received yk=xk+nky_k = x_k + n_k with noise variance σ2\sigma^2, the channel LLR simplifies to Lc=2ykσ2L_c = \frac{2 y_k}{\sigma^2}. This expression arises from the Gaussian probability densities, weighting the received value yky_k by the inverse noise variance to quantify channel confidence. In the iterative turbo decoding process, the a posteriori LLR LAPPL_{APP} from a component decoder is decomposed into channel, a priori, and extrinsic components: LAPP=Lc+La+LeL_{APP} = L_c + L_a + L_e, where LaL_a is the a priori LLR from the previous (initially zero), and LeL_e is the extrinsic LLR representing newly acquired about uku_k from that decoder. The extrinsic LLR is computed as Le=LAPPLcLaL_e = L_{APP} - L_c - L_a, ensuring that only code-derived insights are passed to the other component decoder, avoiding direct feedback of prior . This separation enables the exchange of extrinsic across iterations, driving the convergence of decoding decisions. The BCJR algorithm computes the required probabilities via forward and backward recursions on the code trellis. The forward probabilities αk(s)\alpha_k(s) at trellis state ss and time kk are calculated recursively as αk(s)=sαk1(s)γk(s,s)\alpha_k(s) = \sum_{s'} \alpha_{k-1}(s') \cdot \gamma_k(s', s), where γk(s,s)\gamma_k(s', s) is the branch transition metric incorporating channel and a priori information, and the sum is over prior states ss'. Similarly, the backward probabilities βk(s)\beta_k(s) are obtained via βk(s)=sγk+1(s,s)βk+1(s)\beta_k(s) = \sum_{s''} \gamma_{k+1}(s, s'') \cdot \beta_{k+1}(s''), summing over subsequent states ss'', with boundary conditions α0(s0)=1\alpha_0(s_0) = 1 for the initial state and βN(sN)=1\beta_N(s_N) = 1 for the final state at block length NN. These recursions allow the LLR to be expressed as L(uk)=log[(s,s)Tk0αk1(s)γk(s,s)βk(s)(s,s)Tk1αk1(s)γk(s,s)βk(s)]L(u_k) = \log \left[ \frac{ \sum_{(s',s) \in T_k^0} \alpha_{k-1}(s') \gamma_k(s', s) \beta_k(s) }{ \sum_{(s',s) \in T_k^1} \alpha_{k-1}(s') \gamma_k(s', s) \beta_k(s) } \right], where TkjT_k^j denotes the set of state transitions (s,s)(s', s) for which the emitted information bit is uk=ju_k = j, though practical implementations often use log-domain approximations to avoid underflow.

Advanced Decoding Techniques

Soft Decision Strategies

In turbo decoding, soft decision strategies replace binary hard decisions with probabilistic reliability measures, typically log-likelihood ratios (LLRs), which quantify the confidence in each received bit based on channel observations. This approach leverages the full analog information from the demodulator, enabling the decoder to weigh bits according to their reliability rather than treating all as equally certain. As a result, soft decision decoding achieves a coding gain of approximately 2 dB over hard decision methods in convolutional coding structures underlying turbo codes, with gains up to 3 dB observed in iterative contexts for additive white Gaussian noise (AWGN) channels. Quantization is essential for practical implementation, mapping continuous LLR values to discrete levels to reduce and memory requirements. Commonly, 8-bit quantization is employed, balancing performance and hardware efficiency with negligible degradation—less than 0.1 dB—compared to higher precision representations. For Gaussian channels like AWGN, uniform quantization is standard, linearly spacing levels to preserve the proportional reliability inherent in the channel's noise model, though non-uniform schemes can optimize for specific SNR ranges by allocating more levels to likely LLR distributions. The incorporation of soft inputs profoundly influences decoding convergence by producing higher-quality extrinsic , which is the incremental probabilistic update passed between constituent decoders excluding the direct channel . This refined exchange accelerates the iterative , allowing the decoder to approach maximum decisions more efficiently and mitigate persistent errors that manifest as error floors at low bit error rates. In implementation, the probability (APP) decoding , such as the BCJR variant, generates soft outputs in the form of LLRs for each bit, which are then de-interleaved and fed as inputs to the subsequent decoder , excluding the intrinsic channel component to avoid feedback loops. These soft values, often referencing LLR computations from channel metrics, ensure that each pass refines the overall estimate without redundant information.

Hypothesis Resolution Methods

After the iterative decoding process in turbo codes, the final bit decisions for the information sequence are typically made by applying a hard decision rule to the total log-likelihood ratio (LLR), denoted as LtotalL_{\text{total}}, computed at the output of the last iteration. Specifically, for each information bit uku_k, the decoder decides u^k=0\hat{u}_k = 0 if Ltotal(uk)>0L_{\text{total}}(u_k) > 0, and u^k=1\hat{u}_k = 1 otherwise, leveraging the of the LLR to determine the most probable bit value based on the accumulated probabilistic evidence from both component decoders. This approach exploits the soft-output nature of the a posteriori probability (APP) decoding used in turbo decoders, where the LLR magnitude also indicates decision reliability, with larger absolute values signifying higher confidence. To handle potential ambiguities in these final decisions, particularly in scenarios where LLR values are close to zero (indicating low reliability), threshold tuning can be applied by adjusting the away from zero to minimize undetected errors, though this risks introducing decision biases that must be carefully calibrated against the channel noise level. Additionally, (CRC) validation is commonly employed as an outer error-detection mechanism; after forming the hard decisions, the decoded information bits are passed through a CRC to verify integrity, discarding or re-decoding frames that fail the check, which effectively lowers the error floor without altering the core turbo structure. In turbo decoding, the preference for maximum a posteriori (MAP) decoding—also known as APP—over maximum likelihood (ML) arises because MAP provides bit-level soft outputs via LLRs that incorporate prior probabilities, enabling efficient extrinsic between component decoders, whereas ML focuses on sequence-level decisions and lacks the granularity for iterative refinement in parallel concatenated structures. This MAP emphasis is central to achieving near-Shannon-limit performance in turbo codes. Error floors in turbo codes, which manifest as a plateau in (BER) curves at low error probabilities, can be mitigated by increasing the interleaver size to enhance the minimum distance between codewords or by performing more decoding iterations to allow greater convergence of the probabilistic estimates, both of which reduce the likelihood of persistent low-weight error events without fundamentally changing the code design.

Performance Evaluation

Bit Error Rate Analysis

The bit error rate (BER) performance of turbo codes is typically evaluated through simulations over (AWGN) channels using methods, which generate random interleavers and noise realizations to estimate error probabilities at various signal-to-noise ratios (SNRs). For a rate 1/2 turbo code with parallel concatenation of two recursive systematic convolutional encoders, simulations show that a BER of 10510^{-5} is achieved at an Eb/N0E_b/N_0 of approximately 0.7 dB, approaching within 0.7 dB of the Shannon limit for infinite block lengths. These BER curves exhibit a characteristic "waterfall" region at moderate SNRs where the error rate drops rapidly with increasing Eb/N0E_b/N_0, followed by an "error floor" at high SNRs where further SNR gains yield diminishing BER improvements due to the code's distance properties. Key factors influencing BER include the interleaver length and the number of decoding iterations. Longer interleavers, typically exceeding N>104N > 10^4 information bits, reduce the error floor by minimizing the multiplicity of low-weight codewords in the distance spectrum, as shorter interleavers increase the likelihood of correlated errors between constituent encoders. Similarly, 6 to 12 decoding iterations optimize BER performance, with gains saturating beyond this range; for instance, in rate 1/2 codes with block lengths around 65,536 bits, BER improves significantly up to 8 iterations before plateauing. Theoretical bounds on BER are derived from distance spectrum analysis, which enumerates the weights and multiplicities of codewords to predict asymptotic . The free dfreed_{\text{free}} for standard turbo codes, such as those using 16-state recursive systematic convolutional components, is approximately 18, though the effective minimum is often lower due to parallel concatenation, leading to the observed error floor. Monte Carlo simulations comparing code rates confirm that rate 1/3 turbo codes outperform rate 1/2 counterparts by about 1-2 dB at BER = 10510^{-5} over AWGN channels, owing to increased , but at the cost of reduced .

Computational Complexity

The encoding of turbo codes employs two parallel recursive systematic convolutional encoders, each performing operations linear in the information block length kk, resulting in an overall encoding complexity of O(k)O(k) per block through straightforward convolutional shifts and modulo-2 additions. Decoding turbo codes, however, incurs significantly higher due to the iterative nature of the process, primarily governed by the algorithm applied to each constituent code. The computational cost scales as O(kI2K1)O(k \cdot I \cdot 2^{K-1}), where kk is the block length, II denotes the number of iterations (typically 8 for convergence), and KK is the constraint length (commonly 4, yielding 2K1=82^{K-1} = 8 states per trellis section). This equates to approximately 100 operations per bit across all iterations, encompassing forward and backward trellis traversals with additions, multiplications, and comparisons for log-likelihood computations. To mitigate this complexity while preserving performance, several optimizations are employed. Reduced-state variants of the BCJR algorithm limit the trellis states considered, trading minor accuracy for substantial reductions in computations, particularly in high-rate scenarios. Approximations like the soft-output (SOVA) further simplify decoding by avoiding full probabilistic summations, achieving roughly 70% of the complexity of exact MAP methods with comparable bit error rates for typical frame sizes. Additionally, the log-MAP variant enhances by operating in the logarithmic domain, eliminating underflow issues in probability calculations and enabling efficient approximations like max-log for real-time implementations. In hardware realizations, turbo decoders leverage parallel architectures in application-specific integrated circuits () to achieve high throughput, with processing elements dedicated to multiple trellis sections or iterations. For mobile devices, power efficiency is paramount; early implementations, for instance, consumed approximately 10 mW while decoding at rates up to 2 Mbps, balancing iterative demands with battery constraints through and voltage scaling.

Applications and Implementations

Telecommunications Standards

Turbo codes were first standardized in mobile telecommunications through the 3rd Generation Partnership Project () for Universal Mobile Telecommunications System (UMTS), also known as , beginning with Release 99 in 2000. In this standard, turbo codes with a rate of 1/3 are employed for error correction on both uplink and downlink dedicated transport channels, supporting input block sizes ranging from 40 to 5114 bits to accommodate varying data rates in (WCDMA) systems. The adoption of turbo codes continued and evolved in the Long-Term Evolution (LTE) standard for systems, as defined in Release 8 and later. Here, the turbo encoder supports larger code block sizes up to 6144 bits to handle higher throughput requirements, with enhancements including a quadratic permutation polynomial (QPP) interleaver and sub-block interleaving in the rate-matching process to optimize bit redistribution across multiple parallel streams for improved decoding efficiency. In satellite and space communications, turbo codes are integral to the Consultative Committee for Space Data Systems (CCSDS) recommendations, particularly in the TM Synchronization and Channel Coding Blue Book (CCSDS 131.0-B). These standards specify turbo codes for channels with nominal rates of 1/2, 1/3, 1/4, 1/6 (higher rates achievable via puncturing), using trellis termination to flush the encoders with tail bits, in deep-space and near-Earth missions.

Modern and Emerging Uses

In New Radio (NR) non-standalone (NSA) deployments, which represent early phases of rollout relying on LTE infrastructure for control signaling, turbo codes are utilized for the LTE anchor band's channel coding to ensure and reliable transmission. As evolved toward standalone (SA) architecture in subsequent releases, turbo codes were phased out in favor of low-density parity-check (LDPC) codes for data channels and polar codes for control channels, offering improved throughput and latency for enhanced (eMBB) services. Beyond , turbo codes have found application in non-telecom domains such as magnetic recording systems. In hard disk drives (HDDs), turbo equalization schemes combine turbo decoding with (ISI) mitigation, treating the recording channel's ISI as an inner code to achieve near-capacity performance under realistic grain-flipping models. For deep-space communications, NASA's Deep Space Network (DSN) implements turbo codes as specified in Consultative Committee for Space Data Systems (CCSDS) standards, supporting data rates up to several Mbps with block lengths like 8920 bits for missions requiring robust error correction over long distances. Emerging research explores turbo code hybrids with quantum error correction to enhance reliability in quantum networks, where classical turbo codes protect ancillary classical communications or are adapted into quantum turbo codes via serial concatenation of quantum convolutional codes. In preparation for 6G, AI techniques such as recurrent neural networks are applied to turbo decoding, improving error performance and adaptability for beyond-5G scenarios with dynamic channels. Low-latency variants of turbo decoders, incorporating parallel architectures and max-log-MAP approximations, are being developed for Internet of Things (IoT) applications like narrowband IoT (NB-IoT), consuming less than 50 mW in dynamic power. As of 2025, turbo codes are integrated into satellite IoT systems for in low-Earth orbit (LEO) constellations, supporting error rates below 10^{-6} in bursty channels typical of direct-to-device links. Power-efficient implementations, leveraging reduced-complexity scheduling and hardware optimizations, enable turbo decoding on devices for IoT gateways, minimizing energy use in resource-constrained environments while maintaining near-Shannon-limit performance.

Theoretical Foundations

Bayesian Interpretation

The Bayesian interpretation frames turbo code decoding as a probabilistic inference problem, where the goal is to compute the distribution over the information bits UU given the received noisy observations YY. Specifically, the decoding process seeks to estimate P(UY)P(YU)P(U)P(U \mid Y) \propto P(Y \mid U) P(U), with P(YU)P(Y \mid U) representing the channel likelihood and P(U)P(U) the prior distribution over the bits. This posterior inference is performed iteratively to refine estimates, leveraging the structure of the turbo encoder to approximate the optimal maximum (MAP) decoding. In this framework, the interleaver plays a crucial role in modeling the prior distribution. By permuting the information bits before encoding with the second component code, the interleaver ensures that the extrinsic information generated by the first decoder—representing newly acquired knowledge about the bits—serves as an effective a priori probability for the second decoder, promoting between the component codes and enhancing overall accuracy. The iterative message-passing nature of turbo decoders aligns with (BP) on a representation of the code structure. Here, the graph consists of variable nodes for the information and coded bits, factor nodes for the component code constraints and channel observations, and extrinsic nodes to facilitate without creating direct feedback loops. Each propagates messages along the graph edges, updating beliefs at variable nodes through marginalization over connected factors. This equivalence reveals that probability (APP) computations in turbo decoding correspond to marginal probabilities on the graph, while extrinsic messages are the incremental updates passed between decoders, excluding the effects of prior inputs to prevent and enable iterative refinement. The approach avoids full graph loops by design, approximating exact inference in a loopy structure. One key advantage of this Bayesian perspective is its ability to explain decoder convergence through evolution analysis, where the evolution of probability functions for extrinsic messages over iterations predicts the threshold behavior and performance in the large block length regime. This analysis, originally developed for low-density parity-check (LDPC) codes, directly links turbo codes to the broader class of graph-based codes, highlighting shared iterative decoding principles and performance near Shannon limits.

Information-Theoretic Limits

Turbo codes represent a significant advancement in -correcting coding by achieving bit rates (BER) remarkably close to the theoretical Shannon limit for the binary-input (BI-AWGN) channel. For a rate-1/2 , the Shannon limit corresponds to an Eb/N0 of approximately 0.2 dB. Early demonstrations of turbo codes showed they can operate within 0.5 dB of this limit at a BER of 10510^{-5}, enabling near-capacity performance with practical decoding complexity. The iterative decoding process in turbo codes bridges the gap to the limit through successive exchanges of extrinsic information between component decoders, progressively refining reliability estimates. Analysis via density evolution, which tracks the probability density of log-likelihood ratios across iterations, reveals the convergence behavior and identifies thresholds below which decoding fails to approach capacity. This technique demonstrates that, under ideal conditions with sufficiently long blocks and optimized interleavers, the exchanged converges to the channel's capacity, minimizing the remaining performance gap. Despite these gains, turbo codes exhibit inherent limitations that prevent exact attainment of the Shannon limit. An error floor emerges at low BER due to the presence of low-weight codewords, which become dominant as signal-to-noise ratios increase and cause irreducible decoding errors. Additionally, finite block lengths introduce discrepancies from asymptotic capacity, as and interleaver constraints limit the code's ability to fully exploit , resulting in a widened gap of 1–2 dB for blocks on the order of 10310^3 to 10410^4 symbols. Extensions of turbo codes to channels maintain near-capacity operation through turbo equalization, where iterative soft equalization compensates for channel distortions by integrating channel estimates with decoding feedback. Optimized turbo code designs in such schemes achieve performance within fractions of a dB of the ergodic capacity for , enhancing reliability in mobile environments.

References

Add your contribution
Related Hubs
Contribute something
User Avatar
No comments yet.