Project Name: Viterbi Decoder


Introduction

Viterbi Algorithm has been a legendary decoding algorithm for Convolutional Codes. It was found by Andrew J. Viterbi which was published on his paper "Error Bounds for Convolutional Codes and an Asymptotically Optimum Decoding Algorithm," in IEEE Transactions on Information Theory, Volume IT-13, April 1967. Research and development then increasing to find more better and more eficient code generator for the Convolutional Codes and the architectural implementation of the Viterbi Algorithm.

Viterbi Algorithm is well used to find a maximally-likelihood decoded bits from a convolutional coded transmitted bits which transmission channel is interferenced by heavy noise such as Additive White Noise Gaussian (AWGN). Enough redundancies are added to combat the impairment of the transmission channel. As a result, Viterbi Algorithm could get an amazing low decoded Bit Error Rate (BER) compared to uncoded transmitted bits, showed by its BER to Eb/No graphical property. This performance could be parameterized by the Constraint Length (K) and Code Rate (R) of the Convolutional Encoder. And yes, we have trade offs around speed, area, and power while trying to implement the Viterbi Algorithm in a real hardware (full/semi custom VLSI).

Current Status:

Specifications

VDK7R1/2


VDK9R1/2


Description

VDK7R1/2

VDK7R1/2 is an implementation of K=7 R=1/2 Viterbi Decoding Algorithm. There are five main block of the structure : hamming distance unit(HDU), add compare select unit (ACSU), metric register unit (MRU), survivor register unit (SRU), and traceback unit (TBU).

HDU performs hamming distance calculation to each of input codewords. Output of the HDU is an 128 array of hamming distances of 128 output branches compared to the codewords.

ACSU performs three of the most important operation of Viterbi Decoder :

After selection, ACSU also performs normalization to the value of metrics. The normalized values are tend to be next state metrics, kept by MRU.

SRU plays as a trellis window, keeps every state's survivors as a function of clock/time with a depth of 33. Finally, the TBU gets information of lowest state metric in a time, performs a succesive traceback of the survivors, and then produces the decoded output bits.

VDK9R1/2

As development from VDK7R1/2's basic model, a more huge structure will be implemented in VDK9R1/2. Convolutional Encoder will have states of 256. The trellis window's depth is about 45 (minimum), here we fight for speed, power, and area.

Next Step

Documentation

Software & Tools

Author & Maintainer:

Mailing list: