Trellis codes, such as convolutional codes, trellis coded modulation, bit-interleaved coded modulations, and space-time trellis codes have been widely used to improve the performance of a wireless communications system. One important issue of encoding messages using trellis codes is how to terminate a trellis. There are at least two common methods of terminating a trellis.
The first method is to force the encoder of a transmitting wireless station to enter a known starting state and then to a known terminating state, e.g. a zero state, after the last data bit is shifted in. This is commonly referred to as a zero-padding (ZP) method. This method brings the trellis into a known terminating state by feeding the encoder with a series of zeros after all data bits are shifted into the encoder. The number of zeros is equal to the size of the memory. Feeding the encoder with a series of zeros resets the state back to zero.
The trellis code decoder of a receiving wireless station decodes a receiving message using the information about the starting and terminating states of the trellis. Knowing the starting and terminating states of a trellis simplifies the design of the decoder of a receiving wireless station. However, the padding of zeros at the end of trellis codes results in additional overhead. This problem is especially significant when the message is of small size.
Another method to terminate a trellis is called tail-biting (TB). In TB, the encoder of a transmitting wireless station is forced to terminate the encoding of a message at a state that is the same as the starting state. Since the TB method does not pad a trellis-encoded message with extra zeros, it does not result in extra overhead. Because the TB method starts and terminates a trellis in the same state, which is unknown to the decoder, decoding the tail-biting trellis with a trellis-based decoder is computationally expensive.
A trellis-based decoder employing the Viterbi algorithm (VA) is a maximum likelihood (ML) decoder if the starting and terminating states of the message encoded with trellis codes are known.
Because the starting and terminating states in a tail-biting method are the same, the ML decoder runs the Viterbi algorithm in each state and selects the code sequence representing the message with the highest probability. The brute force decoding method runs the Viterbi algorithm as many times as the number of states is; therefore, it demands a lot of computational resources. To reduce the computational complexity of the ML decoder for tail-biting trellis codes, several sub-optimal trellis-based decoders have been developed.
As such, what is desired is a method and system for further improving the performance of sub-optimal trellis-based tail-biting decoders