Convolution encoding
   HOME

TheInfoList



OR:

In
telecommunication Telecommunication is the transmission of information by various types of technologies over wire, radio, optical, or other electromagnetic systems. It has its origin in the desire of humans for communication over a distance greater than that fe ...
, 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,K/math>. The base code rate is typically given as n/k, where is the raw input data rate and is the data rate of output channel encoded stream. is less than because channel coding inserts redundancy in the input bits. The memory is often called the "constraint length" , where the output is a function of the current input as well as the previous K-1 inputs. The depth may also be given as the number of memory elements in the polynomial or the maximum possible number of states of the encoder (typically : 2^v). Convolutional codes are often described as continuous. However, it may also be said that convolutional codes have arbitrary block length, rather than being continuous, since most real-world convolutional encoding is performed on blocks of data. Convolutionally encoded block codes typically employ termination. The arbitrary block length of convolutional codes can also be contrasted to classic
block code In coding theory, block codes are a large and important family of error-correcting codes that encode data in blocks. There is a vast number of examples for block codes, many of which have a wide range of practical applications. The abstract defini ...
s, which generally have fixed block lengths that are determined by algebraic properties. The code rate of a convolutional code is commonly modified via symbol puncturing. For example, a convolutional code with a 'mother' code rate n/k=1/2 may be punctured to a higher rate of, for example, 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.


History

Convolutional codes were introduced in 1955 by
Peter Elias Peter Elias (November 23, 1923 – December 7, 2001) was a pioneer in the field of information theory. Born in New Brunswick, New Jersey, he was a member of the Massachusetts Institute of Technology faculty from 1953 to 1991. In 1955, Elias introdu ...
. It was thought that convolutional codes could be decoded with arbitrary quality at the expense of computation and delay. In 1967,
Andrew Viterbi Andrew James Viterbi (born Andrea Giacomo Viterbi, March 9, 1935) is an American electrical engineer and businessman who co-founded Qualcomm Inc. and invented the Viterbi algorithm. He is the Presidential Chair Professor of Electrical Engineeri ...
determined that convolutional codes could be maximum-likelihood decoded with reasonable complexity using time invariant trellis based decoders — the
Viterbi algorithm The Viterbi algorithm is a dynamic programming algorithm for obtaining the maximum a posteriori probability estimate of the most likely sequence of hidden states—called the Viterbi path—that results in a sequence of observed events, especiall ...
. Other trellis-based decoder algorithms were later developed, including the
BCJR The BCJR algorithm is an algorithm for maximum a posteriori decoding of error correcting codes defined on trellises (principally convolutional codes). The algorithm is named after its inventors: Bahl, Cocke, Jelinek and Raviv.L.Bahl, J.Cocke, F.J ...
decoding algorithm. Recursive systematic convolutional codes were invented by Claude Berrou around 1991. These codes proved especially useful for iterative processing including the processing of concatenated codes such as turbo codes. Using the "convolutional" terminology, a classic convolutional code might be considered a
Finite impulse response In signal processing, a finite impulse response (FIR) filter is a filter whose impulse response (or response to any finite length input) is of ''finite'' duration, because it settles to zero in finite time. This is in contrast to infinite impulse ...
(FIR) filter, while a recursive convolutional code might be considered an
Infinite impulse response Infinite impulse response (IIR) is a property applying to many linear time-invariant systems that are distinguished by having an impulse response h(t) which does not become exactly zero past a certain point, but continues indefinitely. This is in ...
(IIR) filter.


Where convolutional codes are used

Convolutional codes are used extensively to achieve reliable data transfer in numerous applications, such as digital video, radio, mobile communications (e.g., in GSM, GPRS, EDGE and 3G networks (until 3GPP Release 7)) and
satellite communications A communications satellite is an artificial satellite that relays and amplifies radio telecommunication signals via a transponder; it creates a communication channel between a source transmitter and a receiver at different locations on Earth. ...
. These codes are often implemented in
concatenation In formal language theory and computer programming, string concatenation is the operation of joining character strings end-to-end. For example, the concatenation of "snow" and "ball" is "snowball". In certain formalisations of concatenat ...
with a hard-decision code, particularly Reed–Solomon. Prior to turbo codes such constructions were the most efficient, coming closest to the
Shannon limit In information theory, the noisy-channel coding theorem (sometimes Shannon's theorem or Shannon's limit), establishes that for any given degree of noise contamination of a communication channel, it is possible to communicate discrete data (di ...
.


Convolutional encoding

To convolutionally encode data, start with ''k''
memory register A processor register is a quickly accessible location available to a computer's processor. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read-only or write-only. ...
s, each holding one 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 XOR gate (sometimes EOR, or EXOR and pronounced as Exclusive OR) is a digital logic gate that gives a true (1 or HIGH) output when the number of true inputs is odd. An XOR gate implements an exclusive or (\nleftrightarrow) from mathematical log ...
, where the logic is: , , , ), and ''n''
generator polynomial In coding theory, a polynomial code is a type of linear code whose set of valid code words consists of those polynomials (usually of some fixed length) that are polynomial long division, divisible by a given fixed polynomial (of shorter length, call ...
s — 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'' symbols. These symbols may be transmitted or punctured depending on the desired code rate. Now
bit shift In computer programming, a bitwise operation operates on a bit string, a bit array or a binary numeral (considered as a bit string) at the level of its individual bits. It is a fast and simple action, basic to the higher-level arithmetic oper ...
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 shifting until all registers have returned to the zero state (flush bit termination). The figure below is a rate () encoder with constraint length (''k'') of 3. Generator polynomials are , and . Therefore, output bits are calculated (modulo 2) as follows: :''n''1 = ''m''1 + ''m''0 + ''m''−1 :''n''2 = ''m''0 + ''m''−1 :''n''3 = ''m''1 + ''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. File:Non-systematic convolutional code.png, A short illustration of non-systematic convolutional code. File:Systematic convolutional code.png, A short illustration of systematic convolutional code.


Recursive and non-recursive codes

The encoder on the picture above is a ''non-recursive'' encoder. Here's an example of a recursive one and as such it admits a feedback structure: The example encoder is '' systematic'' because the input data is also used in the output symbols (Output 2). Codes with output symbols that do not include the input data are called ''non-systematic.'' Recursive codes are typically systematic and, conversely, non-recursive codes are typically non-systematic. It isn't a strict requirement, but a common practice. The example encoder in Img. 2. is an 8-state encoder because the 3 registers will create 8 possible encoder states (23). A corresponding decoder trellis will typically use 8 states as well. Recursive systematic convolutional (RSC) codes have become more popular due to their use in Turbo Codes. Recursive systematic codes are also referred to as pseudo-systematic codes. Other RSC codes and example applications include: Useful for
LDPC In information theory, a low-density parity-check (LDPC) code is a linear error correcting code, a method of transmitting a message over a noisy transmission channel. An LDPC code is constructed using a sparse Tanner graph (subclass of the bip ...
code implementation and as inner constituent code for
serial concatenated convolutional codes Serial concatenated convolutional codes (SCCC) are a class of forward error correction (FEC) codes highly suitable for turbo (iterative) decoding. Data to be transmitted over a noisy channel may first be encoded using an SCCC. Upon reception, the ...
(SCCC's). Useful for SCCC's and multidimensional turbo codes. Useful as constituent code in low error rate turbo codes for applications such as satellite links. Also suitable as SCCC outer code.


Impulse response, transfer function, and constraint length

A convolutional encoder is called so because it performs a ''
convolution In mathematics (in particular, functional analysis), convolution is a mathematical operation on two functions ( and ) that produces a third function (f*g) that expresses how the shape of one is modified by the other. The term ''convolution'' ...
'' of the input stream with the encoder's ''impulse responses'': :y_i^j=\sum_^ h^j_k x_ = (x * h^j) where is an input sequence, is a sequence from output , is an impulse response for output and denotes convolution. A convolutional encoder is a discrete linear time-invariant system. Every output of an encoder can be described by its own
transfer function In engineering, a transfer function (also known as system function or network function) of a system, sub-system, or component is a mathematical function that theoretically models the system's output for each possible input. They are widely used ...
, which is closely related to the generator polynomial. An impulse response is connected with a transfer function through
Z-transform In mathematics and signal processing, the Z-transform converts a discrete-time signal, which is a sequence of real or complex numbers, into a complex frequency-domain (z-domain or z-plane) representation. It can be considered as a discrete-tim ...
. Transfer functions for the first (non-recursive) encoder are: * H_1(z)=1+z^+z^,\, * H_2(z)=z^+z^,\, * H_3(z)=1+z^.\, Transfer functions for the second (recursive) encoder are: * H_1(z)=\frac,\, * H_2(z)=1.\, Define by : m = \max_i \operatorname (H_i(1/z)) \, where, for any rational function f(z) = P(z)/Q(z) \,, : \operatorname(f) = \max (\deg(P), \deg(Q)) \,. Then 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 A finite-state machine (FSM) or finite-state automaton (FSA, plural: ''automata''), finite automaton, or simply a state machine, is a mathematical model of computation. It is an abstract machine that can be in exactly one of a finite number o ...
. 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 for (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

The free distance (''d'') is the minimal
Hamming distance In information theory, the Hamming distance between two strings of equal length is the number of positions at which the corresponding symbols are different. In other words, it measures the minimum number of ''substitutions'' required to chan ...
between different encoded sequences. The ''correcting capability'' (''t'') of a convolutional code is the number of errors that can be corrected by the code. It can be calculated as :t=\left \lfloor \frac \right \rfloor. 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 apart. Free distance can be interpreted as the minimal length of an erroneous "burst" at the output of a convolutional decoder. The fact that errors appear 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
algorithm In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
s exist for decoding convolutional codes. For relatively small values of ''k'', the
Viterbi algorithm The Viterbi algorithm is a dynamic programming algorithm for obtaining the maximum a posteriori probability estimate of the most likely sequence of hidden states—called the Viterbi path—that results in a sequence of observed events, especiall ...
is universally used as it provides
maximum likelihood In statistics, maximum likelihood estimation (MLE) is a method of estimating the parameters of an assumed probability distribution, given some observed data. This is achieved by maximizing a likelihood function so that, under the assumed stat ...
performance and is highly parallelizable. Viterbi decoders are thus easy to implement in
VLSI Very large-scale integration (VLSI) is the process of creating an integrated circuit (IC) by combining millions or billions of MOS transistors onto a single chip. VLSI began in the 1970s when MOS integrated circuit (Metal Oxide Semiconductor) ...
hardware and in software on CPUs with
SIMD Single instruction, multiple data (SIMD) is a type of parallel processing in Flynn's taxonomy. SIMD can be internal (part of the hardware design) and it can be directly accessible through an instruction set architecture (ISA), but it shoul ...
instruction sets. Longer constraint length codes are more practically decoded with any of several sequential decoding algorithms, of which the
Fano Fano is a town and ''comune'' of the province of Pesaro and Urbino in the Marche region of Italy. It is a beach resort southeast of Pesaro, located where the '' Via Flaminia'' reaches the Adriatic Sea. It is the third city in the region by po ...
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 In Bayesian statistics, a maximum a posteriori probability (MAP) estimate is an estimate of an unknown quantity, that equals the mode of the posterior distribution. The MAP can be used to obtain a point estimate of an unobserved quantity on the ...
(MAP) soft decisions for each bit can be obtained by use of the
BCJR algorithm The BCJR algorithm is an algorithm for maximum a posteriori decoding of error correcting codes defined on trellises (principally convolutional codes). The algorithm is named after its inventors: Bahl, Cocke, Jelinek and Raviv.L.Bahl, J.Cocke, F.J ...
.


Popular convolutional codes

In fact, predefined convolutional codes structures obtained during scientific researches are used in the industry. This relates to the possibility to select catastrophic convolutional codes (causes larger number of errors). An especially popular Viterbi-decoded convolutional code, used at least since the
Voyager program The Voyager program is an American scientific program that employs two robotic interstellar probes, ''Voyager 1'' and ''Voyager 2''. They were launched in 1977 to take advantage of a favorable alignment of Jupiter and Saturn, to fly near t ...
has a constraint length of 7 and a rate ''r'' of 1/2.
Mars Pathfinder ''Mars Pathfinder'' (''MESUR Pathfinder'') is an American robotic spacecraft that landed a base station with a roving probe on Mars in 1997. It consisted of a lander, renamed the Carl Sagan Memorial Station, and a lightweight, wheeled robot ...
,
Mars Exploration Rover NASA's Mars Exploration Rover (MER) mission was a robotic space mission involving two Mars rovers, '' Spirit'' and '' Opportunity'', exploring the planet Mars. It began in 2003 with the launch of the two rovers to explore the Martian surface ...
and the
Cassini probe Cassini may refer to: People * Cassini (surname) * Oleg Cassini (1913-2006), American fashion designer :Cassini family: * Giovanni Domenico Cassini (1625–1712), Italian mathematician, astronomer, engineer, and astrologer * Jacques Cassini (16 ...
to Saturn use a of 15 and a rate of 1/6; this code performs about 2 dB better than the simpler K=7 code at a cost of 256× in decoding complexity (compared to Voyager mission codes). The convolutional code with a constraint length of 2 and a rate of 1/2 is used in
GSM The Global System for Mobile Communications (GSM) is a standard developed by the European Telecommunications Standards Institute (ETSI) to describe the protocols for second-generation ( 2G) digital cellular networks used by mobile devices such ...
as an error correction technique.


Punctured convolutional codes

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 of some bits in the encoder output. Bits are deleted according to a ''puncturing matrix''. The following puncturing matrices are the most frequently used: 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 A communications satellite is an artificial satellite that relays and amplifies radio telecommunication signals via a transponder; it creates a communication channel between a source transmitter and a receiver at different locations on Earth. ...
, for example, in INTELSAT systems and Digital Video Broadcasting. Punctured convolutional codes are also called "perforated".


Turbo codes: replacing convolutional codes

Simple Viterbi-decoded convolutional codes are now giving way to
turbo code In information theory, turbo codes (originally in French ''Turbocodes'') 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 closel ...
s, a new class of iterated short convolutional codes that closely approach the theoretical limits imposed by
Shannon's theorem In information theory, the noisy-channel coding theorem (sometimes Shannon's theorem or Shannon's limit), establishes that for any given degree of noise contamination of a communication channel, it is possible to communicate discrete data (dig ...
with much less decoding complexity than the Viterbi algorithm on the long convolutional codes that would be required for the same performance.
Concatenation In formal language theory and computer programming, string concatenation is the operation of joining character strings end-to-end. For example, the concatenation of "snow" and "ball" is "snowball". In certain formalisations of concatenat ...
with an outer algebraic code (e.g., Reed–Solomon) addresses the issue of
error floor The error floor is a phenomenon encountered in modern iterated sparse graph-based error correcting codes like LDPC codes In information theory, a low-density parity-check (LDPC) code is a linear error correcting code, a method of transmitting ...
s inherent to turbo code designs.


See also

*
Quantum convolutional code Quantum block codes are useful in quantum computing and in quantum communications. The encoding circuit for a large block code typically has a high complexity although those for modern codes do have lower complexity. Quantum convolutional coding ...


References

*


External links


The on-line textbook: Information Theory, Inference, and Learning Algorithms
by David J.C. MacKay, discusses convolutional codes in Chapter 48.
The Error Correcting Codes (ECC) PageFundamentals of Convolutional Decoders for Better Digital CommunicationsConvolutional codes (MIT)Information Theory and Coding (TU Ilmenau)
discusses convolutional codes on page 48.


Further reading

{{refbegin


Publications

* Francis, Michael. "Viterbi Decoder Block Decoding-Trellis Termination and Tail Biting." Xilinx XAPP551 v2. 0, DD (2005): 1-21. * Chen, Qingchun, Wai Ho Mow, and Pingzhi Fan. "Some new results on recursive convolutional codes and their applications." Information Theory Workshop, 2006. ITW'06 Chengdu. IEEE. IEEE, 2006. * Fiebig, U-C., and Patrick Robertson. "Soft-decision and erasure decoding in fast frequency-hopping systems with convolutional, turbo, and Reed-Solomon codes." IEEE Transactions on Communications 47.11 (1999): 1646-1654. * Bhaskar, Vidhyacharan, and Laurie L. Joiner. "Performance of punctured convolutional codes in asynchronous CDMA communications under perfect phase-tracking conditions." Computers & Electrical Engineering 30.8 (2004): 573-592. * Modestino, J., and Shou Mui. "Convolutional code performance in the Rician fading channel." IEEE Transactions on Communications 24.6 (1976): 592-606. * Chen, Yuh-Long, and Che-Ho Wei. "Performance evaluation of convolutional codes with MPSK on Rician fading channels." IEE Proceedings F-Communications, Radar and Signal Processing. Vol. 134. No. 2. IET, 1987. Error detection and correction