Convolutional codes(CC) are a very fast a unique method of encoding a message. They differ from other codes we have discussed in class, because most codes send a message and multiple parity check digits. These codes include but are not limited to, Hamming Codes, Parity Check codes, and Reed-Solomon codes and many others. Instead of transmitting the message and parity bits, Convolutional codes only transmit parity bits. This allows for a more accurately received message as the errors that would occur in transmission are easily detected, as well as having a smaller chance of occurring.
Convolutional codes are used in concatenation with other codes, particularly Reed Solomon codes. Concatenation is when messages are encrypted twice using an inner and outer code making them more robust to errors in transmission, although convolutional codes can be used alone. CC’s are used in many everyday applications such as data transfer of digital video, radio, and satellite communication. Until the invention of Turbo Codes, CC’s were the most efficient type of code for transmission types mentioned above. They were favored not only due to the robustness of the code in transmission, but because CC’s are easy to understand and encode, but also have direct translations into physical hardware such as satellites and other electronic systems.
Encoding the message is very simple, the encoder uses a sliding window to calculate r > 1 parity bits by utilizing modulo arithmetic in various sections of the code. Unlike the block code the window overlap and slide is 1. We will call the size of the window, in bits, the codes constraint length. As the constraint length increases, the parity bits will be influenced more. This makes sense, if the window gets larger the parity check digits have more bits to be based on, creating a parity bit that is more robust which is highly influenced by the constraint length. Since a larger constraint length creates a highly influenced parity bit, the longer the constraint length will also make the code more resilient to errors. This seems nice now, but later we will see that a longer constraint length makes decoding take longer, which shows the tradeoff between decoding speed and constraint length.
Convolutional codes produce r > 1 parity bits per window (constraint length), and then the window is slid one bit at a time, making the rate at which parity check bits are made 1/r. So if we have 2 parity check bits per window, the parity check bit rate is ½. As mentioned earlier the larger the value of r, the more robust the code is against bit errors. When creating codes we want to choose r and the constraint length, k, to be very small, but not too small to result in a bit error. Using this notation we can now discuss finding parity bits.
As the message is created the window is defined and each parity bit can be made, the window then slides again and another set of parity check digits can be made. Remember, there...