TURBO CODES
Turbo codes are a type of the FEC codes developed in 1993, by Berrou, Glavieux, and Thitimajshima.

• Turbo codes are one of the first practical codes to closely approach the Shannon capacity.
• Turbo code is a type of convolution code.
• Turbo codes are efficient in reliable data transfer over bandwidth or latency constrained links.

Due these reasons turbo codes are preferred for deep space communications, and we shall be using this for our mission.


TURBO CODER
A Turbo coder consists of one input being the data sequence, and three outputs being the systematic output, output I from encoder I, and output II from decoder II. A typical Turbo coder is shown below.
turbo coder

In the above diagram both the encoders are identical.

From the diagram above, we can deduce that our input is split into two paths. On one path the input arrives at the output in a systematic way. On the other path the input is passed through a interleaver. An interleaver is responsible in scrambling the inputs in a particular fashion, which is termed as a pueso-random fashion. The output from the interleaver is then passed through the two encoders. As the data is passed through the encoders, redundancy is introduced; even if the output form one decoder has a low weight, there is high possibility that the output from other decoder will have a higher weight. Hence, at the decoder side, the encoded data sequence with a heavier weight is selected for decoding.

Another advantage of the parallel decoders is that we can check for consistency between the two encoded data sequences. As a result we are increasing the efficiency and reducing errors.


INTERLEAVERS
There are various forms of an interleaver. The following are a few examples.

Consider the following to be the inputs to the turbo coder.
tc1

Row-Column Interleaver:
In a row-column interleaver data is written row-wise and read column-wise. This method is very simple but the drawback is that it provides very little randomness.
tc2

A Helical interleaver:
In a helical inteleaver the data is written row-wise and read diagonally.
tc3

A pseudo-random Interleaver:
A Pseudo-random interleaver is defined by a pseudo-random number generator or a look-up table. This is a very efficient method of interleaving. We use this interleaver for the coding purpose.

DECODER
tc5

The decoders are based on a soft-in-soft-out (SISO) technique. At the decoder side the systematic input, and the two encoded data sequences from the two encoders are fed as inputs. At first, the decoder tries to decode the various inputs in an order. Then the data is fed back through the feedback path. The decoder iteratively decodes the inputs given to it; after a few iterations we can make a pretty good estimate of data bit that was transmitted, and, as a result of this feedback mechanism, Turbo codes are efficient in reaching the Shannon capacity.