Adaptive Viterbi Algorithm

Introduction to the Adaptive Viterbi Algorithm

Contact: Russell Tessier (tessier@ecs.umass.edu)

Adaptive Viterbi Algorithm

A discussion of the development of a hardware implementation of the adaptive Viterbi algorithm is provided in:

[1] S. Swaminathan, R. Tessier, D. Goeckel, and W. Burleson "A Dynamically-Reconfigurable Adaptive Viterbi Decoder FPGAs," ACM/SIGDA Symposium on Field Programmable Gate Arrays, Monterey, CA, February 2002.

Additional information is provided in:

[2] R. Tessier, S. Swaminathan, R. Ramaswamy, D. Goeckel, and W. Burleson, A Reconfigurable, Power-Efficient Adaptive Viterbi Decoder, in IEEE Transactions on VLSI Systems, vol. 13, no. 4, April 2005, pp. 484-488.

Hardware Implementation

A zip file containing RTL code which implements an AVA decoder is available here. Two VHDL files are included. File cpe0lce.chd contains entity information which allows the decoder to interface to the outside. Currently the input/output interface is structured as a FIFO read/write interface. File cpe0lca.vhd contains the decoder. The description of the hardware decoder is included in comments in the VHDL files. Parameters for Nmax, T (called initialT), and K are located at the beginning of cpe0lca.vhd. The RTL code can be scaled by modifying these parameters based on the results in Swaminathan's FPGA'02 paper. Unfortunately, the code as currently written also requires a modification to a few processes if Nmax is changed. Processes min1_update through min5_update determine the minimum path metric among the surviving paths. Each process reduces the search space by about half until only 2 possible choices are left (in min5_update). The number and size of the processes require modification if Nmax is modified. Additionally, if K is varied the bitwise XOR operations used to generate "encoder_bit2_out0" and "encoder_bit2_out1" must be changed manually. This design will compile without errors using Quartus II version 5.1 using the project file located in the associated zip file.