CONVOLUTIONAL CODES
The encoder generates an n-bit codeword from a k-bit message
block in block coding. As a result, code words are generated one at a time. As
a result, to put the message block, the encoder needs a buffer.
Convolutional codes are a subclass of Tree codes. The message bits are constantly accepted by the convolutional encoder, which then creates the encoded codeword sequence. As a result, a buffer is unnecessary. Memory is necessary to implement the encoder in convolutional codes.
Figure: Convolutional Codes
(a)
Convolutional Encoder
The encoding process in a convolutional code is the discrete-time convolution of the input data sequence with the encoder's impulse response. The input message bits are stored in a fixed-length shift register and concatenated using mod-2 adders. Convolutional coding is the name given to an operation that is equal to binary convolution. The connection diagram for an example convolutional encoder is shown in the figure.
Figure: Convolutional Encoder alternatively Redrawn
A binary convolution code encoder may be considered a
finite-state machine. It comprises an M-stage shift register with modulo-2
adder connections. The outputs of the adders are serialized by a multiplexer.
The non-systematic convolutional codes generated by these encoders are shown in
the above figure.
Assume that the current message bit has been moved to m0. The preceding two message bits are then stored in m1 and m2. We now get the updated values of X1 and X2 due to mod-2 adders 1 and 2. We can write.
The multiplexer switch samples X1 first, followed by X2. The
next input bit is taken and saved in m0. After that, the shift register changes
the bit in m0 to m1. The bit that was previously in m1 is now in m2. The bit in
m2 that has already been used is discarded. This new combination of m0, m1 and
m2 generates X1 and X2 once again. This process is performed for each bit of
the input message. As a result, the output bitstream for each input bit will
be,
X = x1 x2 x1 x2 x1
x2…….. and so on
In this convolutional encoder, two encoded output bits X1 and X2 are delivered for each input message bit. As a result, k = 1 is the number of message bits. n = 2 is the number of encoded output bits for a single message bit.
Code rate:
This convolutional encoder's code rate is given by
Code rate, r = 𝑀𝑒𝑠𝑠𝑎𝑔𝑒 𝑏𝑖𝑡𝑠 (𝑘)/𝑒𝑛𝑐𝑜𝑑𝑒𝑟 𝑜𝑢𝑡𝑝𝑢𝑡 𝑏𝑖𝑡𝑠 (𝑛) = 𝑘/𝑛 = 1/2
where 0 < r < 1
Constraint
Length:
A convolution
code's constraint length (K) is the number of shifts through which a single message
bit can influence the encoder output. Message bits are used to express it.
The
constraint length for the encoder in Figure is K = 3 bits. Because a single
message bit has an effect on the encoder output for three shifts in a row. The
message bit is lost at the fourth shift and has no impact on the output.
When a
message bit enters the shift register in the encoder shown in Figure, it stays
in the shift register for three shifts. ie.,
First Shift -> Message bit
is entered in position m0.
Second Shift -> Message bit
is shifted in position m1.
Third Shift -> Message bit
is shifted in position m2.
The length of the constraint 'K' is also one plus the number
of shift registers needed to construct the encoder.
Dimension
of the Code
The number of
message bits 'k,' the number of encoder output bits 'n,' and the constraint
length 'K' determine the code dimension of a convolutional code. As a result,
the code dimension is represented by (n, k, K).
The code
dimension for the encoder illustrated in figure is (2, 1, 3), where n = 2, k =
1, and constraint length K = 3.
Graphical
representation of convolutional codes
The following
three graphical representations of convolutional code structure are commonly
used.
1. By the use
of a state diagram
2. By tracing
the trellis code
3. Building a
code tree
Advantages
of convolutional codes
•
Convolutional codes work with smaller data chunks. As a result, the decoding
time is minimal, and
• The storage
hardware required is minimal.
Disadvantages
of convolutional codes
• Convolutional
codes are difficult to analyze due to their intricacy
• They
haven't been developed as extensively as block codes.