FazBrowse Wikipedia Viewer | Main Page |
Search Wikipedia:
|
Viewing: https://en.wikipedia.org/wiki/Error_correction_code

Error correction code

Contents
    Averaging noise to reduce errors
Types
Describing the performance of an ECC
    Code-rate and the tradeoff between reliability and data rate
        Interleaving example
Further reading

In computing, telecommunication, information theory, and coding theory, forward error correction (FEC) or channel coding is a technique used for controlling errors in data transmission over unreliable or noisy communication channels.

The central idea is that the sender encodes the message in a redundant way, most often by using an error correction code, or error correcting code (ECC). The redundancy allows the receiver not only to detect errors that may occur anywhere in the message, but often to correct a limited number of errors. Therefore a reverse channel to request re-transmission may not be needed. The cost is a fixed, higher forward channel bandwidth.

The American mathematician Richard Hamming pioneered this field in the 1940s and invented the first error-correcting code in 1950: the Hamming (7,4) code.

FEC can be applied in situations where re-transmissions are costly or impossible, such as one-way communication links or when transmitting to multiple receivers in multicast.

Long-latency connections also benefit; in the case of satellites orbiting distant planets, retransmission due to errors would create a delay of several hours. FEC is also widely used in modems and in cellular networks.

FEC processing in a receiver may be applied to a digital bit stream or in the demodulation of a digitally modulated carrier. For the latter, FEC is an integral part of the initial analog-to-digital conversion in the receiver. The Viterbi decoder implements a soft-decision algorithm to demodulate digital data from an analog signal corrupted by noise. Many FEC decoders can also generate a bit-error rate (BER) signal which can be used as feedback to fine-tune the analog receiving electronics.

FEC information is added to mass storage (magnetic, optical and solid state/flash based) devices to enable recovery of corrupted data, and is used as ECC computer memory on systems that require special provisions for reliability.

The maximum proportion of errors or missing bits that can be corrected is determined by the design of the ECC, so different forward error correcting codes are suitable for different conditions. In general, a stronger code induces more redundancy that needs to be transmitted using the available bandwidth, which reduces the effective bit-rate while improving the received effective signal-to-noise ratio. The noisy-channel coding theorem of Claude Shannon can be used to compute the maximum achievable communication bandwidth for a given maximum acceptable error probability. This establishes bounds on the theoretical maximum information transfer rate of a channel with some given base noise level. However, the proof is not constructive, and hence gives no insight of how to build a capacity achieving code. After years of research, some advanced FEC systems like polar code come very close to the theoretical maximum (Shannon limit) given by the Shannon channel capacity under the hypothesis of an infinite length frame.

u∈Σ∗=def⋃n∈ℕΣn of a finite alphabet Δ.

Most commonly, x1 and f(σ) for single-letter words f is the set of code-words. The capabilities of the code to detect and correct errors can then be understood from the distance k bits as long as 2l<d.

Averaging noise to reduce errors

edit

ECC could be said to work by "averaging noise"; since each data bit affects many transmitted symbols, the corruption of some symbols by noise usually allows the original user data to be extracted from the other, uncorrupted received symbols that also depend on the same user data.

Most telecommunication systems use a fixed channel code designed to tolerate the expected worst-case bit error rate, and then fail to work at all if the bit error rate is ever worse. However, some systems adapt to the given channel error conditions: some instances of hybrid automatic repeat-request use a fixed ECC method as long as the ECC can handle the error rate, then switch to ARQ when the error rate gets too high; adaptive modulation and coding uses a variety of ECC rates, adding more error-correction bits per packet when there are higher error rates in the channel, or taking them out when they are not needed.

Types

edit

Turbo coding is an iterated soft-decoding scheme that combines two or more relatively simple convolutional codes and an interleaver to produce a block code that can perform to within a fraction of a decibel of the Shannon limit. Predating LDPC codes in terms of practical application, they now provide similar performance.

One of the earliest commercial applications of turbo coding was the CDMA2000 1x (TIA IS-2000) digital cellular technology developed by Qualcomm and sold by Verizon Wireless, Sprint, and other carriers. It is also used for the evolution of CDMA2000 1x specifically for Internet access, 1xEV-DO (TIA IS-856). Like 1x, EV-DO was developed by Qualcomm, and is sold by Verizon Wireless, Sprint, and other carriers (Verizon's marketing name for 1xEV-DO is Broadband Access, Sprint's consumer and business marketing names for 1xEV-DO are Power Vision and Mobile Broadband, respectively).

Describing the performance of an ECC

edit

In contrast to classical block codes that often specify an error-detecting or error-correcting ability, many modern block codes such as LDPC codes lack such guarantees. Instead, modern codes are evaluated in terms of their bit error rates.

Most forward error correction codes correct only bit-flips, but not bit-insertions or bit-deletions. In this setting, the Hamming distance is the appropriate way to measure the bit error rate. A few forward error correction codes are designed to correct bit-insertions and bit-deletions, such as Marker Codes and Watermark Codes. The Levenshtein distance is a more appropriate way to measure the bit error rate when using such codes.

Code-rate and the tradeoff between reliability and data rate

edit
A short illustration of the interleaving idea

Interleaving is frequently used in digital communication and storage systems to improve the performance of forward error correcting codes. Many communication channels are not memoryless: errors typically occur in bursts rather than independently. If the number of errors within a code word exceeds the error-correcting code's capability, it fails to recover the original code word. Interleaving alleviates this problem by shuffling source symbols across several code words, thereby creating a more uniform distribution of errors. Therefore, interleaving is widely used for burst error-correction.

The analysis of modern iterated codes, like turbo codes and LDPC codes, typically assumes an independent distribution of errors. Systems using LDPC codes therefore typically employ additional interleaving across the symbols within a code word.

For turbo codes, an interleaver is an integral component and its proper design is crucial for good performance. The iterative decoding algorithm works best when there are not short cycles in the factor graph that represents the decoder; the interleaver is chosen to avoid short cycles.

Interleaver designs include:

In multi-carrier communication systems, interleaving across carriers may be employed to provide frequency diversity, e.g., to mitigate frequency-selective fading or narrowband interference.

Interleaving example

edit

Transmission without interleaving:

Error-free message: cccc is altered in one bit and can be corrected, but the codeword abcdefgabcdefgabcdefgabcdefg Transmission with a burst error: aaaa", "gggg", only one bit is altered, so one-bit error-correcting code will decode everything correctly.

Transmission without interleaving:

Original transmitted sentence: AnExample" ends up mostly unintelligible and difficult to correct.

With interleaving:

Transmitted sentence: TIEpfe______Irv.iAaenli.snmOten. Received sentence after deinterleaving: d, the maximum number of errors that the code can detect is given by 2n−1−1 bits long for optimal generator polynomials of degree Glover, Neal; Dudley, Trent (1990). Practical Error Correction Design For Engineers (Revision 1.1, 2nd ed.). CO, USA: Cirrus Logic. ISBN 0-927239-00-0.
  • 1 2 Baldi, M.; Chiaraluce, F. (2008). "A Simple Scheme for Belief Propagation Decoding of BCH and RS Codes in Multimedia Transmissions". International Journal of Digital Multimedia Broadcasting. 2008: 1–12. doi:10.1155/2008/957846.
  • ↑ "Hamming codes for NAND flash memory devices" Archived 21 August 2016 at the Wayback Machine. EE Times-Asia. Apparently based on "Micron Technical Note TN-29-08: Hamming Codes for NAND Flash Memory Devices" Archived 29 August 2017 at the Wayback Machine. 2005. Both say: "The Hamming algorithm is an industry-accepted method for error detection and correction in many SLC NAND flash-based applications."
  • 1 2 Shah, Gaurav; Molina, Andres; Blaze, Matt (2006). "Keyboards and covert channels". USENIX. Retrieved 20 December 2018.
  • ↑ Rosas, F.; Brante, G.; Souza, R. D.; Oberli, C. (2014). "Optimizing the code rate for achieving energy-efficient wireless communications". Proceedings of the IEEE Wireless Communications and Networking Conference (WCNC). pp. 775–780. doi:10.1109/WCNC.2014.6952166. ISBN 978-1-4799-3083-8.
  • ↑ Kothari, Pravesh; Manohar, Peter (11 June 2024). "An Exponential Lower Bound for Linear 3-Query Locally Correctable Codes". Symposium on Theory of Computing. 56: 776–787. doi:10.1145/3618260.3649640. Retrieved 24 March 2026.
  • ↑ Luby, Michael; Mitzenmacher, M.; Shokrollahi, A.; Spielman, D.; Stemann, V. (1997). "Practical Loss-Resilient Codes". Proc. 29th Annual Association for Computing Machinery (ACM) Symposium on Theory of Computation.
  • ↑ Dolinar, S.; Divsalar, D. (15 August 1995). "Weight Distributions for Turbo Codes Using Random and Nonrandom Permutations". TDA Progress Report. 122: 42–122. Bibcode:1995TDAPR.122...56D. CiteSeerX 10.1.1.105.6640.{{cite journal}}: Cite uses deprecated parameter |citeseerx= (help)
  • ↑ Techie (3 June 2010). "Explaining Interleaving". W3 Techie Blog. Retrieved 3 June 2010.
  • ↑ Perry, Jonathan; Balakrishnan, Hari; Shah, Devavrat (2011). "Rateless Spinal Codes". Proceedings of the 10th ACM Workshop on Hot Topics in Networks. pp. 1–6. doi:10.1145/2070562.2070568. hdl:1721.1/79676. ISBN 9781450310598.
  • Further reading

    edit

    View original on Wikipedia | Back | FazBrowse Home