Content deleted Content added
Added external link |
Added info about free distance, correcting capability and perforated codes |
||
Line 14:
[[Image:Convolutional_encoder.png|frame|none|rate 1/3 convolutional encoder with constraint length 3]]
===Free distance and error distribution===
A ''free distance'' (<math>d</math>) is a minimal [[Hamming distance]] between encoded sequences. A ''correcting capability'' (<math>t</math>) of a convolutional code is a number of errors that can be corrected by the code. It can be calculated as
<center><math>t=\left \lfloor \frac{d-1}{2} \right \rfloor</math></center>
Since a convolutional code doesn't use blocks, processing instead a continuous bitstream, the value of <math>t</math> applies to a quantity of errors located relatively near to each other. That is, multiple groups of <math>t</math> errors can usually be fixed when they are relatively far.
Free distance can be interpreted as a minimal length of a 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 [[interleaver|interleave]] data before convolutional encoding, so that outer block (usually [[Reed-Solomon]]) code can correct most of the errors.
===Decoding Convolutional Codes===
Line 24 ⟶ 33:
* [[Mars Pathfinder]], [[Mars Exploration Rover]] and the [[Cassini probe]] to Saturn use a <i>k</i> of 15 and a rate of 1/6; this code performs about 2 dB better than the simpler <i>k</i>=7 code at a cost of 256x in decoding complexity (compared to Voyager mission codes).
===Perforated Convolutional Codes===
A ''perforation'' is a technique used to make a ''m/n'' rate code from a "basic" ''1/2'' code. It is reached by deletion of some bits in the decoder output. Bits are deleted according to ''perforation matrix''. The following perforation matrixes are the most frequently used:
{|border=1
| code rate
| perforation matrix
| free distance (for NASA standard K=7 convolutional code)
|-
| 2/3
| <table border=0><tr><td>1<td>0<tr><td>1<td>1</table>
| 6
|-
| 3/4
| <table border=0><tr><td>1<td>0<td>1<tr><td>1<td>1<td>0</table>
| 5
|-
| 5/6
| <table border=0><tr><td>1<td>0<td>1<td>0<td>1<tr><td>1<td>1<td>0<td>1<td>0</table>
| 4
|-
| 7/8
| <table border=0><tr><td>1<td>0<td>0<td>0<td>1<td>0<td>1<tr><td>1<td>1<td>1<td>1<td>0<td>1<td>0</table>
| 3
|}
</table>
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 second bit from the first branch and every bit from the second one. The specific order of transmission is defined by the respective communication standard.
The perforated convolutional codes are widely used in the [[satellite communications]], for example, in [[INTELSAT]] systems and [[Digital video broadcasting]] standards.
===Design Issues===
|