Convolutional code

related topics
{math, number, function}
{system, computer, user}
{rate, high, increase}
{area, part, region}
{math, energy, light}

In telecommunication, a convolutional code is a type of error-correcting code in which

  • 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 (nm) and
  • the transformation is a function of the last k information symbols, where k is the constraint length of the code.

Contents

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 m1 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 (m1 moves to m0, m0 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.

Full article ▸

related documents
List of computing topics
Macro (computer science)
Java Database Connectivity
Vi
Bzip2
Object database
Object-relational mapping
Prototype-based programming
Conway's Game of Life
Linear feedback shift register
Emacs Lisp
GNU Compiler Collection
Infinite loop
Comparison of Java and C++
VBScript
.NET Framework
Berkeley sockets
Bresenham's line algorithm
Interpreter (computing)
NaN
Linear
DocBook
Generating trigonometric tables
List of programming languages by category
Mersenne twister
Controllability
Discriminant
Isomorphism theorem
Monotonic function
Generalized Riemann hypothesis