Convolutional Code
Convolutional Code
Zhong Gu Dec. 4, 2000 CrpE537 Fall 2000 Instructor Dr. Russell Steve
Tree diagram
If the input is a 0, then the upper branch is followed, elsewhere, the lower one is followed. So its easy to find the output code given the input sequence. Output bit sequence is determined by the current input bit and the two previous bits. Current output sequence is determined by the input bit and the four possible states of the register, which are showed in figure 3.
Trellis
Trellis is a more compact expression of the convolutional coding and can be generated by merging the nodes with the same label. Solid line denotes the output is generated by input bit 0 and dotted line shows that the ouput is generated by input bit 1. Every node has two input paths and two output paths. The input bit determines which output path will be followed.
State Diagram
The three bits in the transition branch denotes the output sequence and the dotted lines show the transition triggered by 1 and solid lines show the transition triggered by 0.
Viterbi Algorithm
1.Calculate branch metrics The branch metric at time instant j for path, is defined as the joint probability of the received n-bit symbol conditioned on the estimated transmitted n-bit symbol :
m j = ln P ( r ji | c ji ) = ln P ( r ji | c ji )
i =1 i =1 n n
3. Information sequence update At each instant, there are 2k merging paths for every node. The decoder select the one with the largest metric as the survivor.
max(M 1 , M 2 , ! , M
2k
4. Output the decoded sequence At instant J, the (J-L)th information symbol is output from the memory with the largest metric.
1.Initially, all state metrics are zeros, i.e. m(0,0) = m(1,0) = m(2,0) = m(3,0) = 0. 2.For every state, there are two entering branches, called upper branch and lower branch respectively. Variables M_upper (s, t) and M_lower (s, t). are used to stand for Hamming distance between the current input information bits and expected information bits which cause the state transition to s at time t. 3. Compare M_upper (s, t) + m(s*, t-1) and M_lower (s, t) + m(s*, t-1), where s is the state at time t, and s* is the pervious state at time (t-1) for a given branch. Choose the branch with the small value as the surviving branch entering the state at time t and let m(s, t)= this value. That is: if M_upper (s, t) + m(s*, t-1) < M_lower (s, t) + m(s*, t-1) The upper branch is the surviving branch and m(s,t)= M_upper (s, t) + m(s*, t-1) Otherwise, the lower branch is the surviving branch and m(s,t)= M_lower (s, t) + m(s*, t-1) Repeat above steps until all the input data are calculated at time T. 4. Compare m(0, T) m(1,T) m(2, T) m(3, T), choose the minimum one and trace back the path from this state. 5. The output data can be generated corresponding to the path
A decoding example
Conclusion
Convolutional encoding can be used to improve the performance of wireless systems. Viterbi algorithm is an optimum decoder. Using convolutional coding, the information can be extracted without any error from noisy channel if the SNR is big enough. When the SNR is lower than some value, there will be some error and the error rate increases as the SNR decreases. When the SNR is lower than some certain value, the convolutional encoder can not extract the information. Question?