FazBrowse Wikipedia Viewer | Main Page |
Search Wikipedia:
|
Viewing: https://en.wikipedia.org/wiki/Convolutional_code

Convolutional code

Contents
Turbo codes: replacing convolutional codes
External links
Further reading
    Publications

In telecommunication, a convolutional code is a type of error-correcting code that generates parity symbols via the sliding application of a boolean polynomial function to a data stream. The sliding application represents the 'convolution' of the encoder over the data, which gives rise to the term 'convolutional coding'. The sliding nature of the convolutional codes facilitates trellis decoding using a time-invariant trellis. Time invariant trellis decoding allows convolutional codes to be maximum-likelihood soft-decision decoded with reasonable complexity.

The ability to perform economical maximum likelihood soft decision decoding is one of the major benefits of convolutional codes. This is in contrast to classic block codes, which are generally represented by a time-variant trellis and therefore are typically hard-decision decoded. Convolutional codes are often characterized by the base code rate and the depth (or memory) of the encoder k is the raw input data rate and n because channel coding inserts redundancy in the input bits. The memory is often called the "constraint length" v in the polynomial or the maximum possible number of states of the encoder (typically: 7/8 simply by not transmitting a portion of code symbols. The performance of a punctured convolutional code generally scales well with the amount of parity transmitted. The ability to perform economical soft decision decoding on convolutional codes, as well as the block length and code rate flexibility of convolutional codes, makes them very popular for digital communications.

0+1 = 1, m⁄n) encoder with constraint length (k) of 3. Generator polynomials are 1</sub> = (1,1,1),"}},"i":0}}]}'>G1 = (1,1,1), 2</sub> = (0,1,1)"}},"i":0}}]}'>G2 = (0,1,1), and 3</sub> = (1,0,1)"}},"i":0}}]}'>G3 = (1,0,1). Therefore, output bits are calculated (modulo 2) as follows:

n1 = m1 + m0 + m−1
n2 = m0 + m−1
n3 = m1 + m−1.

Convolutional codes can be systematic and non-systematic:

  • systematic repeats the structure of the message before encoding
  • non-systematic changes the initial structure

Non-systematic convolutional codes are more popular due to better noise immunity. It relates to the free distance of the convolutional code.

    x is an input sequence, j</sup>"}},"i":0}}]}'>y is a sequence from output j and H2(z)=z−1+z−2,
  • H2(z)=1.

Define f(z)=P(z)/Q(z),

Hi(1/z), and the constraint length is defined as h1=171o=[1111001]b, K of 15 and a rate of 1/6; this code performs about 2 dB better than the simpler Convolutional codes with 1/2 and 3/4 code rates (and constraint length 7, Soft decision, 4-QAM / QPSK / OQPSK).

Convolutional code with any code rate can be designed based on polynomial selection; however, in practice, a puncturing procedure is often used to achieve the required code rate. Puncturing is a technique used to make a m/n rate code from a "basic" low-rate (e.g., 1/n) code. It is achieved by deleting some bits in the encoder output. Bits are deleted according to a puncturing matrix. The following puncturing matrices are the most frequently used:

Code rate Puncturing matrix Free distance (for NASA standard K=7 convolutional code)
1/2
(No perf.)
1
1
10
2/3
1 0
1 1
6
3/4
1 0 1
1 1 0
5
5/6
1 0 1 0 1
1 1 0 1 0
4
7/8
1 0 0 0 1 0 1
1 1 1 1 0 1 0
3

For example, if we want to make a code with rate 2/3 using the appropriate matrix from the above table, we should take a basic encoder output and transmit every first bit from the first branch and every bit from the second one. The specific order of transmission is defined by the respective communication standard.

Punctured convolutional codes are widely used in the satellite communications, for example, in Intelsat systems and Digital Video Broadcasting.

Punctured convolutional codes are also called "perforated".

Turbo codes: replacing convolutional codes

edit
"Convert convolutional code polynomials to trellis description – MATLAB poly2trellis".
  • ↑ Turbo code
  • ↑ Benedetto, Sergio, and Guido Montorsi. "Role of recursive convolutional codes in turbo codes." Electronics Letters 31.11 (1995): 858-859.
  • External links

    edit

    Further reading

    edit

    Publications

    edit

    View original on Wikipedia | Back | FazBrowse Home