This repository provides a comprehensive implementation of Error Correction Codes (ECC) in VHDL. It includes modular components, and encoders/decoders for Hamming Code (in both gate-based and matrix-based approaches) and Hadamard Code.
- Repository Structure
- Features
- Tools and Hardware
- How to Use
- Testing and Verification
- Future Enhancements
This folder contains reusable VHDL components that form the building blocks for the ECC package. These components are used across all implementations.
Included Components:
- Logic Gates:
and
,or
,not
,xor
- Multiplexers:
mux
- Serial-In Parallel-Out (SIPO) shift register
This folder contains the main implementations of ECC algorithms. It is further divided into three subfolders:
- Implements Hamming Code encoder and decoder using basic gate-level logic.
- Uses components from the
Components
folder for modularity.
- Implements Hamming Code encoder and decoder using the matrix method.
- Includes:
- Standard Hamming Code
- Extended Hamming Code (adds an extra parity bit for enhanced error detection)
- Contains the implementation of Hadamard Code encoder and decoder.
- Focuses on generating and decoding Hadamard codewords for robust error correction.
- Modularity: Reusable components designed to simplify and standardize the design of ECC systems.
- Multiple Encoding Methods: Provides both gate-level and matrix-based approaches to implement Hamming Code.
- Support for Extended Hamming Code: Adds a single parity bit for improved error detection.
- Hadamard Code Implementation: A high-performance error correction technique for advanced applications.
-
Development Software:
- Quartus Prime Lite
- ModelSim-Altera (for simulation)
-
Hardware Platform:
- DE10-Lite FPGA Board
git clone
cd ECC-ErrorCorrectionCodes
- Open Quartus Prime Lite and create a new project.
- Add the necessary VHDL files from the repository.
- Compile the design and simulate its functionality using ModelSim-Altera.
- Synthesize the design to generate a
.sof
(SRAM Object File). - Use Quartus Programmer to upload the synthesized design onto the DE10-Lite FPGA board.
- Test and verify the functionality on hardware using input switches and output LEDs.
-
Simulation:
- Each implementation has been simulated and verified using ModelSim-Altera.
-
Hardware Testing:
- Load the design onto the DE10-Lite board.
- Provide inputs using the board's switches and observe the outputs on LEDs or other peripherals to confirm proper operation.
- Integration of BCH and Reed-Solomon Code for advanced ECC applications.
- Performance optimization for high-speed encoding/decoding.
- Addition of parameterized VHDL modules for scalability.
- Detailed timing analysis and resource utilization benchmarks.