This package provides encoders and fast Viterbi decoders for the NASA
standard rate 1/2 and rate 1/3 constraint length 7 convolutional codes.
Two versions of these encoder and decoder are provided, one for
blocked data (with user specified initial and terminal encoder states)
and another for continuous streams. The former is a C subroutine, the
latter runs as a UNIX pipeline filter, closely emulating commercially
available hardware Viterbi decoders.
Another encoder and Viterbi decoder is also provided for an arbitrary
blocked convolutional code. This version attains generality at the
expense of performance. It has been tested with the Mars Pathfinder
r=1/6 K=15 code. It's slow, but it works. (389 bps on a 166MHz
Ultrasparc, 655 bps on a 400 MHz Pentium-II.) Of course, it's *much*
faster on shorter codes, though it's not as fast on the k=7 codes as
the decoders optimized for them.
An experimental Perl script is also provided that generates a
optimized blocked encoder and Viterbi decoder in C for an arbitrary
convolutional code. As this script uses agressive loop unrolling, it
should not be used for large constraint lengths.