Content deleted Content added
added info about recursive codes, impulse response and transfer functions |
|||
Line 13:
<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 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:
[[Image:Convolutional_encoder_recursive.png|frame|none|rate 1/2 recursive, systematic convolutional encoder with constraint length 4]]
One can see that a data sequence being encoded is here a part of the output (encoded) sequence too (look at the output 2). Such codes are referred to as ''systematic'', other are called ''non-systematic''.
Recursive codes are almost always systematic, and, on the contrary, non-recursive codes are non-systematic. It isn't a strict requirement, but a common practice.
===Impulse response, transfer function and constraint length===
A convolutional encoder is called so because it performs a ''convolution'' of the input stream with encoder's ''impulse responses'':
<center><math>y_i^j=\sum_{k=0}^{+\infty} h(k)x(i-k).</math></center>
A convolutional encoder is a discrete [[LTI system|linear time-invariant system]]. Every output of an encoder can be described by its own [[transfer function]], which is closely related to a generator polynomial. An impulse response is connected with a transfer function through [[Z-transform]].
Transfer functions for the first (non-recursive) encoder are:
* <math>H_1(z)=1+z^{-1}+z^{-2},</math>
* <math>H_2(z)=z^{-1}+z^{-2},</math>
* <math>H_3(z)=1+z^{-2}.</math>
Transfer functions for the second (recursive) encoder are:
* <math>H_1(z)=\frac{1+z^{-1}+z^{-3}}{1+z^{-2}+z^{-3}},</math>
* <math>H_2(z)=1.</math>
Given that maximum polynom's power (in the transfer functions) is <math>m</math>, ''constraint length'' can be defined as <math>K=m+1</math>.
===Free distance and error distribution===
A ''free distance'' (<math>d</math>) is a minimal [[Hamming distance]] between different 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>
|