Home Product Realization Intellectual Properties
© All products, services and company names are trademarks, registered marks or service marks of their respective companies.
 

Viterbi decoding is an efficient method for realizing the maximum-likelihood decoding of convolution codes. It is based on a trellis graph which is used to re-construct the input sequence to the convolution encoder based on the received encoded symbols from a noisy channel. The functional block diagram of a generic Viterbi decoder is depicted in the following figure.

 
 
Framework comes here
 
 
Input logic (optional)
Implements the Phase/Node synchronization. Both auto and external synchronization modes are supported.
 
De-puncture(optional)
De-punctures the received stream with NULL symbol(s).
 
BMU
This block generates the branch metrics for all possible trellis branches. The BMU block is implemented as LUT in a ROM.
 
ACS
For every trellis state, this block generates a decision bit and a new path metric. The ACS block will have as many ACS units as 2 (k-1) OR less depending on parallel/serial/hybrid implementation.
 
Metric Normalization
Normalizes the metrics to avoid overflow/underflows. Modulo-2 normalization method is used.
 
Synchronization control (optional)
This block will count the number of normalizations over a specified window (expressed in number of decoded bits) and compares it with a specified threshold. If the count exceeds the threshold, then it changes the synchronization state of the decoder. This is true in auto synchronization mode. When external synchronization control option is selected, the synchronization state of the decoder will change only when external synchronization state change signal is asserted.
 
Survivor memory unit
This memory stores the decisions bits, which indicate the survivor path, for every trellis state. An option for an survivor external memory is also included.
 
Decode block
Performs the decoding operation using the decision bits stored in the survivor memory. Both continuous and block decoding modes are supported.
 
BER monitor (optional)
This block provides the bit error count over a specified window (expressed in number of decoded bits) by comparing the decoder input stream with the stream obtained by encoding the decoded bits. This error count indicates the BER of the channel (pre-Viterbi BER) as the chances of Viterbi decoder decoding incorrectly is very low.
 
Differential Decoder (optional)
Differentially decodes the decoded symbols, provided differential encoder is employed at the Convolution Encoder side.