Bonus Project: Viterhi Decoding Algorithm (5%)
This is a bonus project, which is optional. If you do not work on this project, it will not affect your score. If you can finish this project, you will have 5 bonus points added to your final score.
In this project, students are required to design a program to perform Viterbi decoding algorithm to decode the convolutional code, as shown in Page 45 to Page 55 of Lecture 5 slides. Assume that the constraint length is K=3, and the code rate is V2. The first generator is gr=[l 0 1], and the second generator is g,2=[1 1 1]. The initial state is 00. Suppose that the received bits are t=[11 11 00 00 00 00]. Please design the Matlab code or Pathon code to perform Viterbi decoding algorithm and show what are the estimated message bits m=[m(0) m(1) m(2) m(3) m(4) m(5)]. Note that in convolutional code, the last two message bits are 0, i.e., m(4)=0 and m(5)=0.
Hint You need to check the Hamming distance at time slot 0, time slot 1, ..., time slot 5. At each time slot, for each current state, there are at most two possible ways to change from the previous state to it. For example, if the current state is 00, then either the previous state is 00 and the new message bit is 0, or the previous state is 01 and the new message bit is 0. You need to design the code to compare which way leads to the minimum Hamming distance to each current state. The way to calculate the Hamming distance is in our lecture slides. You need to keep the better path and remove the worse path for each current state. Moreover, we know the last two message bits are 00. Therefore, at last, the state will converge to 00.
1. Your Matlab or Pathon code
2. A report covering
2.1 Your name and student ID
2.2 The message bits decoded by Viterbi algorithm