Uploaded by Rajnish Singh

66 Rajnish Singh(Convolutional codes)

advertisement
Convolutional codes
Rajnish singh
ROLL NO-66
01115007319
ECE-1(MORNING)
A convolutional code is a type of error-correcting code that generates parity symbols via the
sliding application of a boolean polynomial function to a data stream. The sliding application
represents the 'convolution' of the encoder over the data, which gives rise to the term
'convolutional coding'.
Binary Convolutional Codes
In convolutional codes, the message comprises of data streams of arbitrary length and
a sequence of output bits are generated by the sliding application of Boolean functions
to the data stream.
In block codes, the data comprises of a block of data of a definite length. However, in
convolutional codes, the input data bits are not divided into block but are instead fed
as streams of data bits, which convolve to output bits based upon the logic function of
the encoder. Also, unlike block codes, where the output codeword is dependent only
on the present inputs, in convolutional codes, output stream depends not only the
present input bits but also only previous input bits stored in memory.
Convolutional codes were first introduced in 1955, by Elias. After that, there were
many interim researches by many mathematicians. In 1973, Viterbi developed an
algorithm for maximum likelihood decoding scheme, called Viterbi scheme that lead
to modern convolutional codes.
Encoding by Convolutional Codes
For generating a convolutional code, the information is passed sequentially through a
linear finite-state shift register. The shift register comprises of (-bit) stages and
Boolean function generators.
A convolutional code can be represented as (n,k, K) where
●
k is the number of bits shifted into the encoder at one time. Generally, k = 1.
●
n is the number of encoder output bits corresponding to k information bits.
●
The code-rate, Rc = k/n .
●
The encoder memory, a shift register of size k, is the constraint length.
●
n is a function of the present input bits and the contents of K.
●
The state of the encoder is given by the value of (K - 1) bits.
Example of Generating a Convolutional Code
Let us consider a convolutional encoder with k = 1, n = 2 and K = 3.
The code-rate, Rc = k/n = 1/2 .
The input string is streamed from right to left into the encoder.
When the first bit, 1, is streamed in the encoder, the contents of encoder will be −
When the next bit, 1 is streamed in the encoder, the contents of encoder will be −
When the next bit, 0 is streamed in the encoder, the contents of encoder will be −
When the last bit, 1 is streamed in the encoder, the contents of encoder will be −
Representing Convolution Encoder with State Transition Diagram and State
Table
From the above example, we can see that any particular binary convolutional encoder
is associated with a set of binary inputs, a set of binary outputs and a set of states.
The transitions and the output may be effectively represented by a state transition
diagram and a state table.
For the binary convolution encoder given in the example −
The set of inputs = {0, 1}
The set of outputs = { 00, 10, 11}
The set of states = { 00, 01, 10, 11}
We can see that in the initial state, 00, when the input 1 was given, the next state
became 10 and the corresponding output was 11. In this state 10, when the input 1
was given, the next state was 11 and the encoder outputs were 10. In the same
manner we get the other transitions. When this is tabulated, we get the state transition
table as follows –
The corresponding state transition diagram will be −
There are three alternative methods that are often used to describe
a convolutional code:
Tree diagram
Trellis diagram
State diagram
Trellis diagram
A convolutional encoder is a finite state machine. An encoder with n binary cells will have
2n states.
Imagine that the encoder (shown on Img.1, above) has '1' in the left memory cell (m0), and '0' in
the right one (m−1). (m1 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).
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.
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.
Where convolutional codes are used
Convolutional codes are used extensively to achieve reliable data transfer in numerous
applications, such as digital video, radio, mobile communications (e.g., in GSM, GPRS, EDGE
and 3G networks (until 3GPP Release 7)) and satellite communications. 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.
Q. Below figure depicts a rate ½, constraint length L = 1, convolutional
encoder. Sketch the Tree diagram. Also find encoder output for input data:
11101
Step 1:
Step 2:
Step 3:
Step 4:
Step 5:
Download