Viterbi encoding is widely used for satellite and other noisy communications channels.
There are two important components of a channel using Viterbi encoding:
the Viterbi encoder (at the transmitter),
the Viterbi decoder (at the receiver).
A Viterbi encoder adds extra information in the transmitted signal to reduce the probability of errors in the received signal that may be corrupted by noise.
A Viterbi decoder performs a maximum likelihood detection of 1 bit data transmitted over a channel with inter-symbol interference (ISI). The 1-bit data to be transmitted is encoded with an n-bit convolutional code in the convolutional encoder.