Error Correction Codes @ Home
Distributed Computing Proposal
Project programming languages:
- ADA 95 (core programming language)
- JAVA (current version, code translated into ADA)
Source development timeline:
Source type: Open source, agreement similar to LINUX
Versions 0.05 to 1.0
- add support for 'short' Hamming codes (some of the most basic EC
codes)
- add support for measuring "Hamming distance" and "Hamming weight"
metric to all tested codes
- add support for Forward Error Correction (FEC) codes
- add support for 'short' Reed-Solomon (RS) codes, before Version
0.5
- add support for 'long' Reed-Solomon (RS) codes, after Version 0.6
- add support for 'short' Viterbi codes (all codes shorter than
Voyager codes)
- Version 1.01 should be able to simulate CD, DVD and Eurka-147 DAB
error correction capabilities [1]
- Version 1.05 should be able to simulate ASTC, DVB-T and CDMA
error correction capabilities [1]
- Version 1.05 should be able to compare metrics of any number of
different ECC coding schemes
- Version 1.09 should support output calculations with respect to
codes approaching the "Shannon Limit"
- possible inclusion of entire Jacksum library at this time
(http://www.jonelo.de/java/jacksum/index.html)
Versions 1.1 to 2.0
- Version 1.1 should support screen saver capabilities
- A Gaussian channel simulator should be added.
- add support for 2D "Block" ECC coding (as in DVB-T)
- add support for all ITU and CCITT CRC methods (CRC-5 to CRC-64)
- add support for Hagelbarger codes
- add support for 'short' [non Viterbi] Convolutional codes
- add support for 'long' Hamming codes
- add support for concatenated Reed-Solomon codes
- add support for concatenating any 2 error correction codes
- add support for Golay codes
- add support for 'long' Viterbi codes (all codes longer than
Voyager codes)
- add support for MD2, MD4 & MD5 hash functions
Versions 2.01 to 3.0
- make screen saver improvements
- modify Open source "terms"
- add "White" and "Pink" noise addition capabilities to the
Gaussian
channel code
- add support for 3D "Block" ECC coding (like SONET or SDH)
- add support for SH-1 hash functions (including version 0)
- add support for N-Hash
- add support for RIPEMD-160 hash function
- add support for LT codes
- add support for 'long' [non Viterbi] Convolutional codes
- add support for all existent Reed-Muller (RM) codes
- add support for BGH codes (B Golay H)
- add support for currently used classes of Turbo-Codes
- add support for all LDPC (Low Density Parity Codes)
- add support for 'short' Bose-Chaudhuri-Hochquenghem codes
- add support for concatenating any 3 error correction codes
Versions 3.01 to 4.00
- make screen saver improvements
- add support for "Selective Jamming" to the noise channel code
- add support for Whirlpool hash
- add support for Tornado codes
- add support for Online codes
- add support for 'long' Bose-Chaudhuri-Hochquenghem codes
- add support for 'short' Space-time block codes (aka: Alamouti
codes)
- add support for Binary Golay (BGC) codes
- add support for Goppa codes
Versions 4.00 to 5.00
- application code clean up
- screen saver remake for the many ECC modes
- add sound capabilities to the screen saver [optional]

Proposed application structure
DLLs support encoding and decoding unless otherwise noted
- ecc-at-home_verXXX_cpuYYY.exe
- ecc-at-home_kernal.exe (possible idea to encapsulate all DLLs)
- ecc-at-home_screen-saver.exe
- gaussian.dll (Gaussian noise channel simulator)
- rs.dll (Reed-Solomon)
- fec.dll (Forward Error Correction)
- viterbi.dll (decoding only)
- convolusional.dll (encoding only)
- bgh.dll
- ldpc.dll
- bch.dll
- stbc-alamoui.dll
- turbo.dll
- bgc.dll
- rm.dll
- lt.dll
- hamming.dll
- crypto-hash.dll
- crypto-crc.dll (from CRC-1 [parity bit] to CRC-256 + custom)
- ecc-code-concatenator.dll (for encoding and decoding concatenated error correction systems)
- test.dll (to test new codes before they are added to a DLL;
usually 0 bytes)
- ecc-at-home_lib.zip (contains all the above DLLs)
- wu_XX_FFFFFF.zip ("XX"= ["AA"-"ZZ"], FF: hex numbers -- internal
zip
structure to be determined)
- codes.db (database of codes and their performance, a minimal
complexity object oriented database)
What the application should be able to do
- be given work units of random parameter codes, goal being to
resolve their ECC properties
Created by
Max Power
Initial Version
14 September 2005
Last Revised
23 July 2006
14 October 2008
End notes
- All of these schemes used concatenated ECC codes, so simulations
would only apply to a single ECC check at the specified OSI layer.
- As usual this will take several rethinks to get the concept
right...