Convolutional code: Difference between revisions

Content deleted Content added
Zwobot (talk | contribs)
m robot Modifying: de
Teridon (talk | contribs)
Added encoder section and figure
Line 3:
===Where Convolutional Codes are used===
Convolutional codes are often used to improve the performance of [[radio]] and [[satellite]] links.
 
===Convolutional Encoding===
To convolutionally encode data, start with <i>k</i> memory registers, each holding 1 input bit. Unless otherwise specified, all memory registers start with a value of 0. The encoder has <i>n</i> modulo-2 adders, and <i>n</i> [[generator polynomial]]s -- one for each adder (see figure below). An input bit <i>m<sub>1</sub></i> is fed into the leftmost register. Using the generator polynomials and the existing values in the remaining registers, the encoder outputs <i>n</i> bits. Now bit shift all register values to the right (<i>m<sub>1</sub></i> moves to <i>m<sub>0</sub></i>, <i>m<sub>0</sub></i> moves to <i>m<sub>-1</sub></i>) 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 (<i>m/n</i>) encoder with constraint length (<i>k</i>) of 3. Generator polynomials are G<sub>1</sub> = (1,1,1), G<sub>2</sub> = (0,1,1), and G<sub>3</sub> = (1,0,1). Therefore, output bits are calculated as follows:
 
<i>n<sub>1</sub></i> = mod2 (<i>m<sub>1</sub></i> + <i>m<sub>0</sub></i> + <i>m<sub>-1</sub></i>)<br>
<i>n<sub>2</sub></i> = mod2 (<i>m<sub>0</sub></i> + <i>m<sub>-1</sub></i>)<br>
<i>n<sub>3</sub></i> = mod2 (<i>m<sub>1</sub></i> + <i>m<sub>-1</sub></i>)<br>
 
[[Image:Convolutional_encoder.png|frame|none|rate 1/3 convolutional encoder with constraint length 3]]
 
===Decoding Convolutional Codes===