No storage media like CDs, DVDs, flash memories, solid-state devices/memories or telecommunication technologies like mobile communication, satellite communication, WiMAX, digital audio/video broadcasting (DVB), deep Space communication is perfect, and all of these experience some amount of errors. To prevent re-reading or re-transmission of information every time an error occurs, storage and communication systems are embedded with error correcting codes (ECC) technology.
History of coding theory
Pioneers of coding theory, Claude Elwood Shannon (1916-2001) and Richard Hamming (1915-1998), were colleagues at Bell Laboratories. Shannon’s channel coding theorem proves that if the information transmission rate is less than the channel capacity, it is possible to design an error correcting codes (ECC) with almost error-free information transmission. American mathematician Hamming pioneered this field and invented the first error correcting codes (ECC) in 1950. It is known as (7, 4) Hamming code.
There are various error-detection and correction techniques, which are suitable with specific noisy channels/media, like random error or burst error or multi-path distortion or channel effects. Error control coding approaches are forward error correction (FEC) and automatic repeat request (ARQ).
Error control for a one-way system is accomplished using FEC. For two-way communication, for example, telephone channel and some satellite communication systems, error correcting codes (ECC) are accomplished using error detection and retransmission called ARQ. Generalised classifications of ARQ and FEC are shown in Figs 2 and 3, respectively.
Taxonomy of FEC techniques
Block codes. In this coding scheme, each k-bit information block is converted to an n-bit coded block with (n-k) redundant bits added to k-bit symbols. These redundant bits are referred as parity bits that do not carry any information. The resulting code is referred to as (n, k) block code. Here, the code rate is defined as k/n.In binary block codes, 2k k-bit message sequences are uniquely mapped into 2k n-bit codes, out of possible 2n n-bit codes.