# Convolution codes and viterbi algorithm

Topics: Convolutional code, Error detection and correction, Viterbi algorithm Pages: 5 (1848 words) Published: April 21, 2014
﻿Convolution codes and viterbi algorithm
Name Rahul Kumar
Department of Electronics & Communication Engineering
Lovely Professional University, Kapurthala, Punjab.

Abstract:- A convolutional code is a type of error-correcting code in which each m-bit information symbol (each m-bit string) to be encoded is transformed into an n-bit symbol, where m/n is the code rate (n ≥ m) and the transformation is a function of the last k information symbols, where k is the constraint length of the code. The Viterbi algorithm is a dynamic programming algorithm for finding the most likely sequence of hidden states – called the Viterbi path – that results in a sequence of observed events. The terms Viterbi path and Viterbi algorithm are also applied to related dynamic programming algorithms that discover the single most likely explanation for an observation. For example, in statisticalparsing a dynamic programming algorithm can be used to discover the single most likely context-free derivation (parse) of a string, which is sometimes called the Viterbi parse.

I. INTRODUCTION
Convolutional codes are applied in applications that require good performance with low implementation cost. They operate on data stream, not static block. Convolutional codes have memory that uses previous bits to encode or decode following bits It is denoted by (n, k, L), where L is code memory depth. Code rate r is determined by input rate TO output rate . Convolutional codes are used extensively in numerous applications in order to achieve reliable data transfer, including digital video, radio, mobile communication, and satellite communication. These codes are often implemented in concatenation with a hard-decision code, particularly Reed Solomon. Prior to turbo codes, such constructions were the most efficient, coming closest to the Shannon limit.  Viterbi algorithm has found universal application in decoding the convolutional codes used in both CDMA and GSM digital cellular, dial-up modems, satellite, deep-space communications, and 802.11 wireless LANs. It is now also commonly used in speech recognition, speech synthesis, keyword spotting, computational linguistics, and bioinformatics. For example, in speech-to-text (speech recognition), the acoustic signal is treated as the observed sequence of events, and a string of text is considered to be the "hidden cause" of the acoustic signal. The Viterbi algorithm finds the most likely string of text given the acoustic signal. ML algorithm is too complex to search all available paths End to end calculation Viterbi algorithm performs ML decoding by reducing its complexity .Eliminate least likely trellis path at each transmission stage. Reduce decoding complexity with early rejection of unlike pathes.Viterbi algorithm gets its efficiency via concentrating on survival paths of the trellis Suppose we are given a Hidden Markov Model (HMM) with state space , initial probabilities  of being in state  and transition probabilities  of transitioning from state  to state . Say we observe outputs. The most likely state sequence  that produces the observations is given by the recurrence relations

Here  is the probability of the most probable state sequence responsible for the first  observations that has  as its final state Here  is the probability of the most probable state sequence responsible for the first  observations that has  as its final state. The Viterbi path can be retrieved by saving back pointers that remember which state  was used in the second equation. Let  be the function that returns the value of  used to compute  if , or  if . Then

II. Convolution coding
figure 1:
To convolution ally encode data, start with k memory registers, each holding 1 input bit. Unless otherwise specified, all memory registers start with a value of 0. The encoder has nmodulo-2 adders (a modulo 2 adder can be implemented with a single Boolean XOR gate, where the logic is: 0+0 = 0, 0+1 = 1, 1+0 = 1, 1+1 = 0),...