We call convolutional encoding when the encoding scheme depends not only upon the current message, but also upon a certain number of preceding messages. Hence, the convolutional encoding uses memory.
Let be a variable of a polynomial, which also a delay operator; is the set of all binary polynomials in the variable . An convolutional code is a -dimensional subspace of , with rate ; for every bits of information, generates codeword bits.
A generator matrix for is a matrix with entries in whose rows form a basis of . Any multiple of by a non zero element of will also a generator matrix of . Let bits input stream :
then the encoding is given by :
We have input stream : , which also corresponds to the polynomial . Suppose we have a generator matrix , then the output of the convolutional encoder is given by : , where
note that in <binary XOR operation>.
Thus, , and .
Therefore, the output of the encoder .
The other way of thinking to obtained the output of the encoder is just look at the delay operator of the matrix generator. The value of is obtained by which means at time , . In the same way, is obtained by the polynomial , or . Therefore, we can say that the encoder has memory 2, because the encoder has to “remember” the 2 previous input.
The corresponding block diagram of the encoder can be represent by the following figure:
We call this the non-systematic, non-recursive Convolutional Codes.
The following are types of Convolutional Codes :
If the input of convolutional encoder is υ and the output are ç1 and ç2, then:
– systematic : ç1 = υ or ç2 = υ [there is output value = input]
– recursive : ç1 = ƒ(ƒ(ç1) + υ) or ç2 = ƒ(ƒ(ç2) + υ) [there is recursive structure]