Safekipedia
Coding theoryError detection and correction

Reed–Solomon error correction

Adapted from Wikipedia · Adventurer experience

Diagram showing a deep-space concatenated coding system used in space communication.

Reed–Solomon codes are a special kind of error-correcting code used to keep information safe when it is stored or sent. They were created by Irving S. Reed and Gustave Solomon in 1960 and are important in many everyday technologies. You might use them without even knowing it when you listen to music on a CD, watch a movie on a DVD or Blu-ray disc, scan a QR code, or connect to the internet through DSL or WiMAX.

These codes work by adding extra symbols, called check symbols, to blocks of data. This helps find and fix mistakes that can happen when data is copied, sent, or stored. For example, if a few pieces of information get mixed up, Reed–Solomon codes can often figure out what the correct information should be. This makes sure that important data, like the music on your MiniDisc or the data sent in satellite communications, arrives correctly even if some errors occur.

Reed–Solomon codes are especially good at handling many small mistakes that happen close together. They can also correct problems when the exact places where mistakes happen are known. Because of their usefulness, these codes are used in many systems, from RAID 6 storage to DVB and ATSC broadcasting, helping keep our digital world running smoothly.

History

Reed–Solomon codes were created in 1960 by Irving S. Reed and Gustave Solomon. These codes help fix mistakes in data, so information stays correct even if some parts get lost or mixed up.

Since then, Reed–Solomon codes have been used in many technologies, like compact discs and digital storage devices. They were also used in space missions, such as the Voyager program, to keep important data safe during its journey.

Applications

Deep-space concatenated coding system. Notation: RS(255, 223) + CC ("constraint length" = 7, code rate = 1/2).

Reed–Solomon coding is used in many storage systems to fix mistakes caused by scratches or marks on the media. It is important for compact disc and is also used in DAT and DVD. This helps make sure music and data can still be read even if the surface is damaged.

Reed–Solomon error correction is also used in two-dimensional bar codes such as PDF-417, MaxiCode, Datamatrix, QR Code, Aztec Code and Han Xin code. This lets bar codes still be read even if part of them is hidden or damaged. It is also used in some data transmission systems like xDSL and in space communications, such as the images sent back by the Voyager program.

Channel coding schemes used by NASA missions
YearsCodeMission(s)
1958–presentUncodedExplorer, Mariner, many others
1968–1978convolutional codes (CC) (25, 1/2)Pioneer, Venus
1969–1975Reed–Muller code (32, 6)Mariner, Viking
1977–presentBinary Golay codeVoyager
1977–presentRS(255, 223) + CC(7, 1/2)Voyager, Galileo, many others
1989–2003RS(255, 223) + CC(7, 1/3)Voyager
1989–2003RS(255, 223) + CC(14, 1/4)Galileo
1996–presentRS + CC (15, 1/6)Cassini, Mars Pathfinder, others
2004–presentTurbo codesMessenger, Stereo, MRO, MSL, others
est. 2009LDPC codesConstellation, M2020, MAVEN

Constructions (encoding)

Reed–Solomon codes are a type of error-correcting code created in 1960. They are used in many everyday technologies like CDs, DVDs, and QR codes to fix small errors in data.

These codes work by treating data as a set of symbols. The original idea was to treat the data as parts of a math equation called a polynomial. By evaluating this polynomial at different points, a codeword is created. This method helps in detecting and correcting errors that might occur during data storage or transmission.

nSn+1dCBbm
0732732197 x + 117321
1637846173 x + 117322
2762412634 x2 + 173 x + 1173 x + 14121
3925576329 x2 + 821 x + 1173 x + 14122
iRiAi
−1001 x4 + 000 x3 + 000 x2 + 000 x + 000000
0925 x3 + 762 x2 + 637 x + 732001
1683 x2 + 676 x + 024697 x + 396
2673 x + 596608 x2 + 704 x + 544

Reed Solomon original view decoders

The decoders in this section see a codeword as a list of values from a polynomial. Both the encoder and decoder use the same fixed values. The decoder tries to find the original polynomial from the message it receives.

A perfect way to fix errors would be to find the polynomial that best fits the received values. But this can be slow because it needs to check many options.

Later work made better decoders. For example, a decoder from 1986 uses a simpler method. Newer updates keep making error correction faster for data transmission.

iRiAi
-1001 z4 + 000 z3 + 000 z2 + 000 z + 000000
0785 z3 + 213 z2 + 666 z + 055001
1658 z2 + 858 z + 323200 z + 141
2294 z + 709905 z2 + 020 z + 925

Images

Graph showing how well a special math tool called Reed-Solomon code can fix mistakes when sending information.

This article is a child-friendly adaptation of the Wikipedia article on Reed–Solomon error correction, available under CC BY-SA 4.0.

Images from Wikimedia Commons. Tap any image to view credits and license.