



Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
engineering comnection and electronic
Typology: Study Guides, Projects, Research
1 / 7
This page cannot be seen from the preview
Don't miss anything!




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 ( n ≥ m ) and 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: n 1 = m 1 + m 0 + m-
n 2 = m 0 + m - n 3 = m 1 + m -1. Img.1. Rate 1/3 non-recursive, non-systematic convolutional encoder with constraint length 3 Recursive and non-recursive codes The encoder on the picture above is a non-recursive encoder. Here's an example of a recursive one: Img.2. Rate 1/2 8-state recursive systematic convolutional encoder. Used as constituent code in 3GPP 25.212 Turbo Code. 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.
Define by where, for any rational function , . Then is the maximum of the polynomial degrees of the , and the constraint length is defined as
. 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 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: Img.3. A trellis diagram for the encoder on Img.1. A path through the trellis is shown as a red line. The solid lines indicate
transitions where a "0" is input and the dashed lines where a "1" is input. 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 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 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 aconcatenated 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
extra performance is easily worth the increased decoder complexity. Mars Pathfinder, Mars Exploration Rover and the Cassini probe to Saturn use a k 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).