Convolutional codes are simpler to decode than block codes. The Viterbi algorithm is commonly used for convolutional code decoding as it finds the maximum likelihood path through the trellis diagram with lower complexity than other algorithms. It works by assigning metrics based on Hamming distance between received and ideal codewords to branches in the trellis. It then finds the path with the lowest total metric as the most likely path the encoder took, allowing decoding of the original data sequence. The example shows how the Viterbi algorithm finds the correct path through the trellis to decode a received sequence with two bit errors back to the original transmitted codeword.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
117 views3 pages
Decoding of Convolutional Codes
Convolutional codes are simpler to decode than block codes. The Viterbi algorithm is commonly used for convolutional code decoding as it finds the maximum likelihood path through the trellis diagram with lower complexity than other algorithms. It works by assigning metrics based on Hamming distance between received and ideal codewords to branches in the trellis. It then finds the path with the lowest total metric as the most likely path the encoder took, allowing decoding of the original data sequence. The example shows how the Viterbi algorithm finds the correct path through the trellis to decode a received sequence with two bit errors back to the original transmitted codeword.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3
1.1.
1 Decoding of Convolutional Codes
One of the advantages of Convolutional codes in comparison with Block codes is that they are simpler to decode. The process of decoding Convolutional codes is finding the path that the encoder has traversed. The path is the way that the encoder starts from state [0 0] to the end state [0 0] in the Trellis diagram which has been introduced in the last section. There are many algorithms using to decode Convolutional codes, such as: sequential decoding, majority-logic decoding, or Viterbi decoding. In this project, I will focus on Viterbi algorithm, which has become the most widely used convolutional decoding algorithm, because it reduces the computational complexity with satisfied performance. Viterbi algorithm was first introduced by Viterbi in 1967, and now it becomes the most popular one in application. Now we look again at Figure 2.1.3, note that at a particular time t, the encoder will have one state S[x x], so now we will denote a node by (S, t). For example, at time t = S i+1 , the encoder will have the state [0 1], so we will call it ([0 1], S i+1 ). As previously stated, the decoder will have to find the path that the encoder had done before, so as to decode to take right data symbols. In this project, I just introduce the idea of the Viterbi algorithm. Detail information as well as the way to design a Viterbi decoder will be discussed more clearly in the thesis. The idea of Viterbi algorithm is to find the local survivor path, which is the path that has the smallest distance between the received sequence and the code sequence. This algorithm has the same idea with maximum likelihood decoding algorithm, which is used to find the closest code sequence to the received sequence. The process is based on Trellis diagram to tracks the states of the encoder. To achieve maximum likelihood decoding each branch in the Trellis diagram is assigned a metric measured by the Hamming distance between the received word (with noise) and ideal word (00, 01, 10, 11). Therefore, the metric can be 0, 1 or 2 (the Hamming distance between two words is the difference between the bits of those code words, as described in the first section). At each time t, the decoder will receive a pair of channel symbols which are already changed by noise. The algorithm will base on Trellis diagram to find the shortest way (minimum metric) so as to get the word which is closest to the code word. For example, the input sequence of the encoder is [0 1 1 0 1 0], and the channel noise is [00 01 00 00 01 00], so we will have the code word [00 11 10 10 00 01] and the received word [00 10 10 10 01 01]. It means there are 2 errors happened during the process of transmission (at bit 2 and 5). Now let us look at the Trellis diagram to find out how the decoder works (Figure 2.1.4):
Figure 2.1.4: Viterbi algorithm decoding process
According to Figure 2.1.4, the part in the left hand side describe how a state transit to another, for example, state [0 0] will stay at [0 0] if input bit is 0, and become state [1 0] if input is 1. Now I will describe how the right hand side Figure goes. Firstly, let us look at the symbol above each path vector, which has the form (XX/X). The first 2 symbols will be the output corresponding to the input, and the last symbol will denote the Hamming distance between the received word and output. Note that the received words are written below each transition. As we discussed above, the initial state will always be state [0 0], so there are 2 paths can happen: [0 0] and [1 0]. The corresponding output will be 00 and 11 respectively, while the received word in the decoder is 00, so the Hamming distance will be 0 and 2 as described in the Figure. According to Viterbi algorithm, the decoder will choose the path which has smaller Hamming distance to continue the process. However, in the second path, the Hamming distances are both 1 and 1, so the decoder must do both paths to find which one is shorter. The process continues, and the red line in the Figure is the shortest way that the decoder can realize. Therefore, the decoded word will be [00 11 10 10 00 01] which is exactly similar to the transmitted code word. In my thesis, this process will be discussed again with more details. Naturally, convolutional codes will be a part of my final thesis, because they represent one important technique within the general class of channel codes that students should know. Convolutional codes have found many applications, such as deep-space communications, speech transmission, or in digital modulation communication systems. They work well with 00 10 01 11 11/2 00/0 00/1 11/1 00/1 11/1 01/2 10/0 10/0 01/2 11/1 00/1 01/0 10/2 00/1 11/1 00 10 10 10 01 01 Received word the channels which have noise and other external factors which can change the bit sequence.