Maximum Likelihood Sequence Detection (MLSD) and the Viterbi Algorithm Presented by Mohamed Samir Mazloum Omar Diaa Shawky
Introduction Signaling schemes can be classified into memoryless or with memory with respect to interdependence between symbols. Memoryless: symbols are independent. Memory: symbols are interdependent. Both schemes use common tools in symbol detection, such as MAP (maximum a posteriori) rule and ML (maximum likelihood).
Viterbi Algorithm The viterbi algorithm is a dynamic programming algorithm that is used to find the most likely sequence of hidden states, called the Viterbi path. It depends on a number of assumptions: 1- Algorithm works on a finite state assumption. The number of states, however large, is ultimately finite. 2- Multiple sequences of states could lead to one state, but only one sequence is the most likely (survivor path). 3- Transition from one state to another involves a metric that is usually cumulative (additive) over states.
Viterbi Algorithm The objective of the algorithm is observing the possible sequences that could lead to a particular state, comparing the cumulative metrics of such sequences, and accordingly choose the most likely. Path history is important for the algorithm. In limited situations, programming is used to reduce the memory needed for recording history.
MLSD Maximum Likelihood Sequence Detections uses similar concepts as MAP and ML as it searches for the minimum Euclidean distance path through the trellis. The optimal detection rule:
NRZI Signal Detection Consider a Binary PAM Constellation Lets assume we start with S0
NRZI Signal Detection We then compute the D For each path entering nodes at t= 2T We then use the Viterbi algorithm to compute the min D and call it the survivor path and discard the other one.
NRZI Signal Detection At t=3T we calculate the paths entering each node. Assume survivor path (0,0) at and path (0,1) at Using the Viterbi algorithm decreases the number of paths by a factor of 2.
Hard and Soft Decision Hard Decision Vs Soft Decision 000 to represent a strongest 0 001 representing a relatively strong 0 010 representing a relatively weak 0 011 represent the weakest 0 100 represent the weakest 1 101 represents a relatively weak 1 110 represents a relatively strong 1 111 represents the strongest 1 The last 2 bits are called reliability bits.
Convolutional codes Another example of signaling schemes involving memory. The code is implemented by passing the information bit sequence through a finite state shift register, where the output bits are produced by adders that take in the bits shifted into the register. The shift register consists of K stages, and for each k bits of input, n bits of output are produced.
Convolutional codes In order to better describe convolutional codes, we utilize a number of vectors equivalent to the number of modulo-2 adders that form the outputs of the encoder. Each vector indicates which stages of the encoder are connected to the corresponding adder, where an ‘1’ represents a connection, and a ‘0’ indicates none. For example, a vector [100] indicates that out of a 3 stage shift register, only the first stage is connected to the adder.
Convolutional Codes After realizing the vectors representing the adders within the encoder, the output of the encoder is determined by convolving the input bit sequence with each of the vectors, then interleaving the bits from each convolution process.
Convolutional Codes Convolutional codes can be represented in several forms, such as tree diagrams, trellises and state diagrams.
Convolutional Codes Convolutional codes can be decoded using various methods, such as soft vs. hard decision decoding or MAP vs. ML methods. The optimum decoder in the case of convolutional codes is the MLSE (Maximum Likelihood sequence detector) due to its finite-state machine structure. The optimum decoding in this case takes place by searching through the trellis corresponding to the convolutional code, and finding the path with the smallest distance metric.
Convolutional Codes Decoding takes place as follows; the first node representing an output (after the trellis has stabilized, with an equal number of branches entering and exiting each node) is observed, and the path followed through the trellis from the initial input node to that output node is to be determined.
Convolutional Codes The viterbi algorithm is essential during the decoding process, due to its capability of choosing a survivor path having the largest path metric, and hence reducing the number of paths that are considered during ML detection, ultimately making decoding a simpler process.
Thank You Questions?