Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Error Correcting Codes - Binary Convolutional Code
Errors occur when bits get corrupted during transmission over computer networks due to interference and network problems. Error-correcting codes (ECC) are sequences of numbers generated by specific algorithms for detecting and correcting errors in data transmitted over noisy channels.
Error correcting codes determine the exact number of corrupted bits and their locations within the algorithm's limitations. ECCs are broadly categorized into two types: block codes and convolutional codes.
Binary Convolutional Codes
In convolutional codes, the message comprises data streams of arbitrary length, and output bits are generated by sliding application of Boolean functions to the data stream. Unlike block codes where data is divided into fixed-length blocks, convolutional codes process continuous data streams.
The key difference is that in block codes, the output codeword depends only on present inputs. In convolutional codes, the output stream depends on both present input bits and previous input bits stored in memory.
Convolutional codes were first introduced in 1955 by Elias. In 1973, Viterbi developed the Viterbi algorithm for maximum likelihood decoding, which led to modern convolutional codes.
Encoding by Convolutional Codes
For generating a convolutional code, information is passed sequentially through a linear finite-state shift register comprising memory stages and Boolean function generators.
A convolutional code is represented as (n, k, K) where:
-
k is the number of bits shifted into the encoder at one time (typically k = 1)
-
n is the number of encoder output bits corresponding to k information bits
-
Code rate Rc = k/n
-
K is the constraint length (encoder memory size)
-
The encoder state is determined by the value of (K-1) bits
Example of Generating a Convolutional Code
Consider a convolutional encoder with k = 1, n = 2, K = 3. The code rate Rc = k/n = 1/2.
For input sequence 1101, the encoding process generates outputs as bits are shifted through the register. Each input bit produces two output bits based on XOR operations.
State Representation
The convolutional encoder can be represented using state transition diagrams and tables. For the example encoder:
-
Set of inputs: {0, 1}
-
Set of outputs: {00, 10, 11, 01}
-
Set of states: {00, 01, 10, 11} (based on D1D2 values)
| Current State | Input 0 | Input 1 |
|---|---|---|
| 00 | 00/00 | 10/11 |
| 01 | 10/10 | 00/01 |
| 10 | 01/01 | 11/10 |
| 11 | 11/11 | 01/00 |
Each cell shows Next State/Output for the given input.
Conclusion
Binary convolutional codes provide efficient error correction by processing continuous data streams through shift registers with memory. Unlike block codes, they use previous input bits stored in memory to generate output codes, making them particularly suitable for real-time communication systems.
