Error control coding describes a class of techniques that prepare
a digital message bitstream to pass through a noisy channel so that the
receiver can detect and in some cases correct transmission errors.
The prerequisite project Hamming Block Code Channel Encoder describes
how to create a specific type of channel encoder based on the
(n,k) Hamming code. The codeword length "n" and message length "k" are
specific values calculated from the user-defined number of checkbits "q".
As discussed in the prerequisite module, the code rate of the Hamming code
approaches 1 (100% efficiency) as "q" increases, but the minimum Hamming distance
"dmin" is fixed at 3. Therefore, the Hamming code can detect up to two bit errors
in a received codeword, and can correct up to one bit error.

The channel decoder, a subsystem of the receiver, serves as a complement
to the channel encoder in the transmitter. The channel decoder examines each received
codeword, indicates detectable errors, fixes correctable errors, and extracts the
message. Not all types of errors are detectable nor correctable, therefore the channel
decoder can certainly emit garbled messages. Fortunately the channel noise must be rather
severe before this becomes a problem.

The channel decoder developed in this project is called a table lookup syndrome decoder.
View the Figure 1 screencast video to learn
how to calculate the syndrome of a codeword, how to develop a lookup table
of most-likely error patterns indexed by syndrome value, and how to use these results as the
basic components of a channel decoder capable of detecting and correcting some types of
error patterns.

Comments:"Starting point collection that gathers all modules from this course"