Introduction to Viterbi Decoding Algorithms
Viterbi decoding algorithm is a convolution code decoding algorithm. The advantage is not mentioned. The disadvantage is that the complexity of the algorithm increases rapidly as the length of the constraint increases. When the constraint length N is 7, there are 64 paths to be compared. When the constraint length is 8, the path becomes 128. (2 <(N-1 )). Therefore, Viterbi decoding is generally used in scenarios with a constraint length of less than 10.
Encoding (for example, the length is 7): The Status () of the 7 delimiters of the encoder Forms 64 States of the entire encoder. Each State jumps to another State when the encoder inputs 0 or 1. For example, when 110100 is entered as 1, it becomes 101001 (actually a shift register ). And the output also changes accordingly.
In this way, the decoding process is the inverse process. The algorithm requires that the data received at t time be compared 64 times, that is, 64 States each line has two branches (because the input is 0 or 1). At the same time, jump to two different States, compare the two outputs with the actually received outputs, and discard the large measured values (that is, the result is quite different ), the left is called the surviving path. The surviving path is added with the measurement of the surviving path at the previous time and saved. This adds a step for 64 surviving paths. At the end of decoding, the minimum measurement is selected from 64 surviving paths. This surviving path (called backtracking) is reversed to obtain the corresponding decoding output.
Not very clear. It is possible to draw a picture clearly. I have done the corresponding DSP program and found that this algorithm can run on m on the DSP of 54x, which cannot meet our data transmission speed requirements, the main time consumption requires two comparisons for each route. During the two comparisons, a total of three numbers must be obtained from the memory (the measurement of the survival path at the previous time, the two statuses jump to the corresponding output value). After the comparison, you also need to write two numbers to the memory (the new total amount of the surviving path, the next hop Status). In this way, the number of times that each clock cycle needs to be compared is 64*2 times, and the number of accesses each time is 5 times. A data packet is 256 bytes, so that you can know the approximate time required to decode a packet. With other overhead added, the result of the experiment is about 0.06 m, but we can transmit the data at 64 K rate as long as M.