Summary: Channel encoding inserts additional information into a transmitted bitstream to facilitate error detection and error correction at the receiver. Block coding breaks up a bitstream into words of length k bits and appends check bits to form a codeword of length n bits. A corresponding channel decoder examines the complete codeword, and detects and even corrects certain types of erroneous bits caused by the channel. In this project, develop a channel encoder using a special class of block code called a Hamming code. In a follow-on project, develop a companion channel decoder, and then evaluate the performance of the complete encoder/decoder system.
![]() |
This module refers to LabVIEW, a software development environment that features a graphical programming language. Please see the LabVIEW QuickStart Guide module for tutorials and documentation that will help you: |
| • Apply LabVIEW to Audio Signal Processing | |
| • Get started with LabVIEW | |
| • Obtain a fully-functional evaluation edition of LabVIEW |
Channel encoding inserts additional information into a transmitted bitstream to facilitate error detection and error correction at the receiver. Block coding breaks up a bitstream into words of length k bits and appends check bits to form a codeword of length n bits. A corresponding channel decoder examines the complete codeword, and detects and even corrects certain types of erroneous bits caused by the channel.
In this project, develop a channel encoder using a special class of block code called a Hamming code. In a follow-on project, develop a companion channel decoder, and then evaluate the performance of the complete encoder/decoder system.
Refer to the following textbooks for additional background on the project activities of this module; see the "References" section below for publication details:
If you are relatively new to LabVIEW, consider taking the course LabVIEW Techniques for Audio Signal Processing which provides the foundation you need to complete this project activity, including: block diagram editing techniques, essential programming structures, subVIs, arrays, and audio.
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 transmission errors and in some cases correct these errors.
The Figure 1 screencast video introduces error control coding, including visualization of codewords, Hamming distance, minimum distance of a code, and error detection and correction power of a code.
(n,k) block codes break up a message bitstream into blocks of k bits and insert additional blocks of checkbits. The checkbit information permits a receiver to diagnose the received bitstream for errors, and to correct some types of errors automatically.
The Figure 2 screencast video introduces (n,k) block codes, code rate, the special case of linear block codes, and illustrates the trade-off between code rate and error control power.
(n,k) Hamming block codes represent a popular type of block code. The Figure 3 screencast video introduces the (n,k) Hamming block code, explains how to construct the generator matrix to transform message blocks into codewords rate, and presents a detailed example to illustrate the encoding process.
Work through the Hamming code construction process by hand to lay a good foundation for developing a correct and understandable computer implementation. Write up this work on a separate page.
Build the subVIs listed below. You may already have some of these available from previous projects.
Demonstrate that each of these subVIs works properly before continuing to the next part.
Review again the background theory presented earlier for the Hamming block code channel encoder, and then assemble your subVIs into a top-level application VI that creates a message bitstream, encodes the bitstream using Hamming coding, passes the bitstream through a noisy channel (the binary symmetric channel), and displays selected results of the channel encoding process.
Download the LabVIEW VI
Front_Panel_Indicators.vi. This VI contains
pre-formatted front panel indicators suitable for convenient display of binary values.
Debug your application until it works properly. Include a front-panel screenshot with hand-written annotations that demonstrates correct operation of your encoder.