Hamming

Problem/Finish Description
Introduction to Hamming Code for Error Detection and Correction

In the world of digital information, accuracy and reliability are paramount. Whether it's transmitting data across wireless networks or storing critical information on hard drives, errors can creep in and compromise the integrity of the data. This is where error detection and correction techniques play a crucial role. One such pioneering method is the Hamming Code, a mathematical construct that has revolutionized error detection and correction in various domains, including communication systems and data storage devices.

The Hamming Code, named after its inventor Richard Hamming, presents an elegant solution to the age-old problem of identifying and rectifying errors that can occur during data transfer. This article delves into the intricacies of the Hamming Code, exploring its fundamental principles, applications in error detection and correction, and a practical demonstration of its implementation on both hard drives and communication systems, whether wired or wireless.

Conceive
Introduce Electrical/Computer Engineering by simulating circuit board on bottom of hard drive:
 * Hamming(7,4) Code
 * Digital Class (typically freshman or sophomore year)
 * Discrete Math Class (typically freshman or sophomore year)
 * FPGA VHDL Lab Class (becoming a sophomore class ... mostly senior class)

Design

 * Video on how to use the graphical technique
 * Hamming recevieve circuit animation
 * Link to Logisim (open source .. free software)
 * Link to the logisim circuit used for the screen shot and the video

Implement
Used 8 slide switches and 7 LED's to implement this demonstration of hard disk drive corrective circuitry.


 * OpenSource hardware platform chosen papilio
 * Switches and LEDs provided by the LogicStart MegaWing
 * Drew the flow chart with Lucid Chart ... which is free with an email ending in *.edu .. name is Hamming Circuit Outline
 * The UCF file was created from various sources
 * It was implemented in one hardware entity .. one VHDL file
 * Scanned engineering notebook pages written during this process
 * The bit file (the code actually sent down USB cable to the Papilio) was created Xilinx ISE Design Suite
 * The bit file is sent down the USB cable to the Papilio using the papilio loader
 * The colored template or shell for displaying the VHDL code was found in OpenSource editor Notepad + +
 * The graphics above were edited with the open source photo editor gimp.

Operate
This is the intended sequence:
 * 1) Practice the graphical technique on paper
 * 2) Operate the physical circuit
 * 3) Study how the receive/corrective circuit operates in the design above
 * 4) Figure out all the software pieces to generate the bit file
 * 5) Take a digital design class and a lab and become an electrical/computer engineer

Demo

 * Printout this page on paper to hand to everyone in the audience
 * Presentation
 * Video

Next Steps
The algorithm for correcting many bits is well known. Demonstrating this at a larger scale is going to require some imagination.
 * How do we corrupt bits on demand, accurately, in a way that can be checked?
 * What hardware is going to display this?