In telecommunication, a convolutional code is a type of error-correcting code in which (a) each m -bit information symbol (each m -bit string) to be encoded is transformed into an n -bit symbol, where m / n is the code rate ( n m ) and (b) the transformation is a function of the last k information symbols, where k is the constraint length of the code.

Where convolutional codes are used

Convolutional codes are used extensively in numerous applications in order to achieve reliable data transfer, including digital video, radio, mobile communication, and satellite communication. These codes are often implemented in concatenation with a hard-decision code, particularly Reed Solomon. Prior to turbo codes, such constructions were the most efficient, coming closest to the Shannon limit.

Convolutional encoding

To convolutionally encode data, start with k memory registers, each holding 1 input bit. Unless otherwise specified, all memory registers start with a value of 0. The encoder has n modulo-2 adders (a modulo 2 adder can be implemented with a single Boolean XOR gate, where the logic is: 0+0 = 0, 0+1 = 1, 1+0 = 1, 1+1 = 0), and n generator polynomials — one for each adder (see figure below). An input bit m 1 is fed into the leftmost register. Using the generator polynomials and the existing values in the remaining registers, the encoder outputs n bits. Now bit shift all register values to the right ( m 1 moves to m 0 , m 0 moves to m -1 ) and wait for the next input bit. If there are no remaining input bits, the encoder continues output until all registers have returned to the zero state.

The figure below is a rate 1/3 ( m / n ) encoder with constraint length ( k ) of 3. Generator polynomials are G 1 = (1,1,1), G 2 = (0,1,1), and G 3 = (1,0,1). Therefore, output bits are calculated (modulo 2) as follows:

Recursive and non-recursive codes

The encoder on the picture above is a non-recursive encoder. Here's an example of a recursive one:

One can see that the input being encoded is included in the output sequence too (look at the output 2). Such codes are referred to as systematic ; otherwise the code is called non-systematic .

Recursive codes are almost always systematic and, conversely, non-recursive codes are non-systematic. It isn't a strict requirement, but a common practice.

Impulse response, transfer function, and constraint length

A convolutional encoder is called so because it performs a convolution of the input stream with encoder's impulse responses :

where x\, is an input sequence, y^j\, is a sequence from output j\, and h^j\, is an impulse response for output j\, .

A convolutional encoder is a discrete linear time-invariant system. Every output of an encoder can be described by its own transfer function, which is closely related to a generator polynomial. An impulse response is connected with a transfer function through Z-transform.

Transfer functions for the first (non-recursive) encoder are:

  • H_1(z)=1+z^{-1}+z^{-2},\,
  • H_2(z)=z^{-1}+z^{-2},\,
  • H_3(z)=1+z^{-2}.\,

Transfer functions for the second (recursive) encoder are:

  • H_1(z)=\frac{1+z^{-1}+z^{-3}}{1-z^{-2}-z^{-3}},\,
  • H_2(z)=1.\,

Define  m \, by

where, for any rational function f(z) = P(z)/Q(z) \, ,

Then  m \, is the maximum of the polynomial degrees of the  H_i(1/z) \, , and the constraint length is defined as  K = m + 1 \, . For instance, in the first example the constraint length is 3, and in the second the constraint length is 4.

Trellis diagram

A convolutional encoder is a finite state machine. An encoder with n binary cells will have 2 n states.

Imagine that the encoder (shown on Img.1, above) has '1' in the left memory cell ( m 0 ), and '0' in the right one ( m -1 ). ( m 1 is not really a memory cell because it represents a current value). We will designate such a state as "10". According to an input bit the encoder at the next turn can convert either to the "01" state or the "11" state. One can see that not all transitions are possible (e.g., a decoder can't convert from "10" state to "00" or even stay in "10" state).

All possible transitions can be shown as below:

An actual encoded sequence can be represented as a path on this graph. One valid path is shown in red as an example.

This diagram gives us an idea about decoding : if a received sequence doesn't fit this graph, then it was received with errors, and we must choose the nearest correct (fitting the graph) sequence. The real decoding algorithms exploit this idea.

Free distance and error distribution

A free distance ( d ) is a minimal Hamming distance between different encoded sequences. A correcting capability ( t ) of a convolutional code is a number of errors that can be corrected by the code. It can be calculated as

Since a convolutional code doesn't use blocks, processing instead a continuous bitstream, the value of t applies to a quantity of errors located relatively near to each other. That is, multiple groups of t errors can usually be fixed when they are relatively far.

Free distance can be interpreted as a minimal length of an erroneous "burst" at the output of a convolutional decoder. The fact that errors appears as "bursts" should be accounted for when designing a concatenated code with an inner convolutional code. The popular solution for this problem is to interleave data before convolutional encoding, so that the outer block (usually Reed-Solomon) code can correct most of the errors.

Decoding convolutional codes

Several algorithms exist for decoding convolutional codes. For relatively small values of k , the Viterbi algorithm is universally used as it provides maximum likelihood performance and is highly parallelizable. Viterbi decoders are thus easy to implement in VLSI hardware and in software on CPUs with SIMD instruction sets.

Longer constraint length codes are more practically decoded with any of several sequential decoding algorithms, of which the Fano algorithm is the best known. Unlike Viterbi decoding, sequential decoding is not maximum likelihood but its complexity increases only slightly with constraint length, allowing the use of strong, long-constraint-length codes. Such codes were used in the Pioneer program of the early 1970s to Jupiter and Saturn, but gave way to shorter, Viterbi-decoded codes, usually concatenated with large Reed-Solomon error correction codes that steepen the overall bit-error-rate curve and produce extremely low residual undetected error rates.

Both Viterbi and sequential decoding algorithms return hard-decisions: the bits that form the most likely codeword. An approximate confidence measure can be added to each bit by use of the Soft output Viterbi algorithm. Maximum a posteriori (MAP) soft-decisions for each bit can be obtained by use of the BCJR algorithm.

Popular convolutional codes

An especially popular Viterbi-decoded convolutional code, used at least since the Voyager program has a constraint length k of 7 and a rate r of 1/2.

  • Longer constraint lengths produce more powerful codes, but the complexi

    Radio codes Problem Solving at FixYa

    "radio codes" Problems ... i have a 2003 saturn ion and my radio is locked. i think it needs some ... FixYa does not evaluate or guarantee the ...

    ...

    Unlocking Theft Deterrent Radio - SaturnFans Forums

    I found a link to a forum thread (below) that described the process for GM vehicles, however Saturn and Geo use 4 digit radio codes instead of 6 digit codes like the rest of GM so ...

    ...

    Saturn L / S Series Car Stereo Repair Estimates and BOSE Car Stereo ...

    Saturn Car Stereo Repair: Tape functions incorrectly or not at all, $85-95. Many radio codes are available by email if you have an "HR" and "Min" button on the face of the ...

    ...

    Retrieve Radio Code

    Saturn Acura: Honda : Land Rover: Saab Audi ... Copyright 2009 radio-code.com

    ...

    MiNiVaN Radio

    RaDIo InSTRucTIonS GM/XM Radio Information 21 MiNiVaN Radio aM/FM STEREo wITh SIX-DISc cD chanGER diViSioN VEHicLE oPTioN codE Chevrolet Uplander ('05-'07) UC6 Saturn RELAY ('06 ...

    ...

    Radio Unlock

    Guaranteed to work or your money back! * For Saturn: We are only able to unlock 1999 or older models NO RDS Radios. Sorry, we can not retrieve your code. RDS stands for Radio Data ...

    ...

    WikiAnswers - 94 saturn radio wiring color code

    Saturn question: 94 saturn radio wiring color code? Try this website. http://carstereohelp.net/wireharness_Delco1.htm

    ...

    WikiAnswers - How do you unlock the radio in a 1996 Saturn SL2

    2000 saturn radio unlock? Radio unlock codes 96 saturn? 1996 saturn sc2 radio unlock codes? Need unlock code for 97 saturn sl2? Reprogramming a 1999 saturn sl2 radio?

    ...

    General Motors radio code

    You will find the "TheftLock" radio code feature on most Pontiac, Cadillac, GMC, Chevrolet, Saturn, Geo, Oldsmobile, Hummer and Buick vehicles.

    ...

    Alien Speech Found In NASA's Saturn Radio Signal - Video

    Alien Speech Found In NASA's Saturn Radio Signal ... Embed Code: ... amazing investigation into NASA'S own downloadable radio ...

    ...