Skip to content

iDoka/hdl-secded-producer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

HDL SEC/DED Producer

MATLAB/Octave generator of Hamming ECC coder/decoder. Output format is Verilog HDL. Optional adding atop Hamming Coding extra parity bit we have a Single Error Correction/Double Error Detection (SEC/DED) algorithm.

💡
Russian description available here: http://idoka.ru/verilog-secded-generator/
🔥
Now available online version of generator http://idoka.ru/verilog-ecc-generator/

Synopsis

Getting Started

Prerequisites

You need installed on your host:

  • MatLab

    or

  • GNU Octave

The GNU Octave required additional toolboxes, under RHEL/CentOS 6/7 systems please type for installs required prerequisites:

$ sudo yum install -y  octave-devel
$ octave
octave:> pkg install -forge control
octave:> pkg install -forge signal
octave:> pkg install -forge -verbose communications
📎
for control package installing Octave version should be >= 3.6.0

Installing

Not needed to install

Usage

Just type (by default run matlab target):

make

or if you can forcibly specify target (if you decide which tool will be use):

make matlab

or

make octave

Naming conventions and Integrators guide

  • (2m-1, 2m-m-1, 3) - for standard Hamming codes

  • (2m, 2m-m-1, 4) - for SED/DED codes

  • Using template (n,k,d) where is:

    • n = d + k + m; where:

      • m - extracted from Hammgen() function, in fact this is width of correction bits

    • k - user data width (which should be under ECC protection)

    • d = 3 + SECDED_parity_bit_if_used; where 3 - is Hamming distance

The module named with following sheme:
  • HammingCoder_n_k_d()

  • HammingDecoder_n_k_d()

  • e.g.:

    • ..72_64_4

    • ..71_64_3

    • ..39_32_4

    • ..38_32_3

    • ..26_20_4

    • ..25_20_3

File named with following sheme:
  • HammingCode_kbit.v

  • e.g.:

    • HammingCode_20bit.v

    • HammingCode_64bit.v

    • etc..

ToDo

  • Verilog module naming according to the data width

Contributors

Please read CONTRIBUTING.adoc for details on our code of conduct, and the process for submitting pull requests to us.

License

This project is licensed under the MIT License - see the LICENSE file for details