<< Chapter < Page | Chapter >> Page > |
We continue to build our decoding trellis until it is complete after receipt of all ten data bits, as shown in [link] .
If we have two paths to a state, as in the later states: H, I , J, K, L, M, N, P, we write the smaller (more likely) Hamming distance in square brackets above the state and discard the larger distance (as this is much less likely to represent the correct path). In our example, we assumed the last two bits were 0, so we must expect to finish back in state P, which is the same as the starting state A.
We finally need to find the path from state A to P which gives the lowest overall Hamming distance. We then retrace the path and remember that the upper path from a state represented a 0 transmitted and the lower path represented a 1 transmitted.
The reverse decoded data for this example is indicated by the dashed line in [link] .
Leaving states A, C, G and K always in the lower of the two possible paths implies that a data bit 1 has been received at these states and therefore this translates to 1, 1, 1 as the first three encoded data bits.
The last two bits don’t matter in this case as we have assumed they are 0, 0 and we can remove from the docoding trellis all the states that don’t support or contribute to this solution.
Note that finishing a block with n-1 zero input data bits is not compulsory. If you make a decision after a delay of approximately five times the constraint length n, this makes little difference in code performance but does limit the memory consumed by the process to a more sensible amount.
[link] shows the performance of various BLOCK codes, all of rate ½, whose performance improves as the block length increases, even for the same coding rate of ½.
The power of these forward error correcting codes (FECC) is quantified as the coding gain, i.e. the reduction in the required ratio or energy required to transmit each bit divided by the spectral noise density, for a given bit error ratio or error probability.
For example in [link] the (31, 16) code has a coding gain over the uncoded case of around 1.8 dB at a of .
[link] shows for comparison with the block codes of [link] the performance of convolutional coders. The convolutional code initially provides very good performance at modest constraint length. A short constraint length of n = v = 3 is already superior to the 511 block length code of [link] . The additional attraction of the convolutional coder is its further improvement with the increase in constraint length up to n = 7 or 9, as shown in [link] .
Unfortunately the coding and decoding process gets more complicated with larger block/constraint length. As shown here convolutional codes with Viterbi decoding are generally more powerful than block codes, especially for very low error rates, hence their wider use. Single chip constraint length 9 (512 state) encoder and decoders are now widely available as commercial products from many semiconductor vendors.
Notification Switch
Would you like to follow the 'Communications source and channel coding with examples' conversation and receive update notifications?