Minggu, 08 Juli 2018

Sponsored Links

Reed Solomon Tutorial: Backblaze Reed Solomon Encoding Example ...
src: i.ytimg.com

The Reed-Solomon Code is a group of error correction codes introduced by Irving S. Reed and Gustave Solomon in 1960. They have many applications, the most prominent of which include consumer technology such as CD, DVD, Blu- ray Discs, QR Codes, data transmission technologies such as DSL and WiMAX, broadcast systems such as DVB and ATSC, and storage systems such as RAID 6. They are also used in satellite communications.

Reed-Solomon code operates on data blocks that are treated as a set of finite field elements called symbols. For example, a block of 4096 bytes (32768 bits) can be treated as a set of 2731 12 bit symbols, where each symbol is a finite field element GF (2 12 ), the last padded symbol with four 0 bits. The Reed-Solomon code is able to detect and correct some symbol errors. By adding the t checkmark to the data, the Reed-Solomon code can detect combinations of up to t incorrect symbols, or correct to ? t /2? symbol. As a deletion code, it can correct known t deletions, or it can detect and fix combinations of errors and deletions. The Reed-Solomon code is also suitable as a double-bit error-correction error code, since sequence b 1 Successful bits of error can affect at most two symbols of size b . The t option depends on the code designer, and can be selected within a wide range.

There are two basic types of Reed-Solomon code, BCH view and BCH display, with the most common BCH display as BCH display decoder is faster and requires less storage than the original display decoder.


Video Reed-Solomon error correction



Histori

Reed-Solomon code was developed in 1960 by Irving S. Reed and Gustave Solomon, then a member of the MIT Lincoln Laboratory staff. Their seminal article is entitled "Polynomial Code on Selected Selected Fields." (Reed & Solomon 1960). The original encoding scheme described in Reed & amp; The Solomon article uses a variable polynomial based on the message to be encoded in which only a set of fixed values ​​(evaluation points) to be encoded is known by encoders and decoders. The original theoretical decoder generates a potential polynomial based on a subset of k (unencoded message length) of n (message-encoded length) of received messages, by choosing the most popular polynomial as which is correct, which is not practical for all but the simplest case. This was originally solved by converting the original schema to a BCH code like a fixed polynomial based scheme well known to both encoders and decoders, but later, a practical decoder based on the original scheme was developed, albeit slower than the BCH scheme. The result of this is that there are two main types of Reed Solomon code, which uses the original coding scheme, and which uses the BCH encoding scheme.

Also in 1960, a polynomial decoder remains practical for BCH code codes developed by Daniel Gorenstein and Neal Zierler described in the MIT Lincoln Laboratory report by Zierler in January 1960 and later in a paper in June 1961. The Gorenstein-Zierler decoder and the associated work on the BCH code is described in the book Error Correcting Codes by W. Wesley Peterson (1961). In 1963 (or perhaps earlier), JJ Stone (and others) acknowledged that Reed Solomon code could use the BCH scheme using a fixed generator polynomial, making such code into a special class of BCH code, but Reed Solomon code based on the original coding scheme instead of the class BCH code, and depending on the set of evaluation points, they are not even cyclic codes.

In 1969, the developed BCH scheme decoder was developed by Elwyn Berlekamp and James Massey, and has since been known as the Berlekamp-Massey decoding algorithm.

In 1975, another BCH schematic decoder was developed by Yasuo Sugiyama, based on the expanded Euclidean algorithm.

In 1977, the Reed-Solomon code was implemented in the Voyager program in the form of a combined error correction code. The first commercial application in mass-produced consumer products appeared in 1982 with a compact disc, in which two inserted Reed-Solomon codes were used. Currently, the Reed-Solomon code is widely used in digital storage devices and digital communication standards, although it is slowly replaced by a more modern double-density parity-check (LDPC) or turbo code. For example, the Reed-Solomon code is used in DVB-S standard Digital Video Broadcasting (DVB), but the LDPC code is used in its successor, DVB-S2.

In 1986, the original schematic decoder known as the Berlekamp-Welch algorithm was developed.

In 1996, the original scheme decoder variations called decoder lists or soft decoders were developed by Sudanese Madhu and others, and worked steadily on the Guruswami-Sudan_list_decoding_algorithm decoder type.

In 2002, another original schema decoder was developed by Shuhong Gao, based on the extended Euclid algorithm Gao_RS.pdf.

Maps Reed-Solomon error correction



Apps

Data storage

Reed-Solomon coding is widely used in mass storage systems to correct blast errors associated with media defects.

The Reed-Solomon encoding is a key component of the compact disc. It was the first use of strong error-correction coding in mass-produced consumer products, and DAT and DVD use similar schemes. In the CD, two layers of Reed-Solomon coding separated by a 28-way convolution interleaver produce a scheme called Cross-Interleaved Reed-Solomon Coding (CIRC). The first element of the CIRC decoder is the relatively weak Reed-Solomon code (32.28), abbreviated from the code (255,251) with the 8-bit symbol. This code can fix up to 2 byte errors per 32-byte block. More importantly, this marks the deletion of any non-corrected block, that is, blocking with more than 2 byte errors. A decoded 28-byte block, with an indication of deletion, is then propagated by deinterleaver to different blocks of external code (28.24). Thanks to deinterleaving, a 28-byte block is erased from inside code into one byte erased in every 28 blocks of outer code. The external code easily corrects this, as it can handle up to 4 erasers such as per block.

The result is a CIRC that can actually repair errors that explode up to 4000 bits, or about 2.5 mm on the surface of the disk. This code is so powerful that most CD playback errors are almost certainly caused by tracking errors that cause the laser to skip tracks, not by errors that can not be corrected.

The DVD uses a similar scheme, but with a much larger block, the inner code (208,192), and the outer code (182,172).

Reed-Solomon error correction is also used in parchive files that are usually posted with multimedia files in USENET. Online storage service Distributed Wuala (discontinued in 2015) is also used to utilize Reed-Solomon when splitting files.

Bar code

Nearly all two-dimensional stem codes such as PDF-417, MaxiCode, Datamatrix, QR Code, and Aztec Code use Reed-Solomon error correction to allow correct reading even if some bar codes are damaged. When the barcode scanner can not recognize the barcode symbol, it will treat it as deletion.

The Reed-Solomon encoding is less common in a one dimensional bar code, but is used by the PostBar symbology.

Data transmission

Specific forms of the Reed-Solomon code, especially Cauchy-RS and Vandermonde-RS, can be used to overcome the unreliable nature of data transmission over an eraser channel. The encoding process assumes the RS code ( N , Ã, K ) that produces N long codewords N each symbol stores the K data symbol, generated, which is then sent over the eraser channel.

Any combination of K codewords received at the other end is sufficient to reconstruct all N code words. The code level is generally set to 1/2 unless the possibility of channel deletion can be adequately modeled and look less. In conclusion, N is usually 2 K , meaning that at least half of all submitted keywords must be accepted to reconstruct all the sent code words.

The Reed-Solomon code is also used in the xDSL system and the CCSDS Communications Space Protocol Specification as a forward error correction form.

Space Transmission

One of the significant applications of Reed-Solomon coding is to encode digital images sent back by the Voyager space probe.

Voyager introduced Reed-Solomon encoding combined with convolutional code, a practice that has since become very extensive in satellite and space communications (eg direct digital communications).

Viterbi decoders tend to produce errors in short bursts. Fixing these blast errors is the best work done by short or simplified Reed-Solomon code.

The modern version of the Reed-Solomon/Viterbi-decoded convolution has been used and used on the Mars Pathfinder, Galileo, Mars Exploration Rover and Cassini missions, where they perform about 1-1.5 dB from the final limit, becoming Shannon's capacity.

These combined codes are now being replaced by stronger turbo codes.

Mona Lisa Vintage Imágenes De Stock & Mona Lisa Vintage Fotos De ...
src: c8.alamy.com


Construction

Reed-Solomon code is actually a code family, where each code is characterized by three parameters: the size of the alphabet q , the length of the block n , and the length of the message i> with k & lt; n <= q. A set of alphabetic symbols is interpreted as a restricted order field q , and thus, q should be the main force. In the most useful parameterization of the Reed-Solomon code, the length of the block is usually some constant multiples of the length of the message, ie, the speed of R = k /i> are some constant, and furthermore, the length of the block is equal to or less than the size of the alphabet, i.e. /span> or n = q - 1 .

Reed & amp; Solomon's original view: The codeword as a sequence of values ​​

There are different coding procedures for the Reed-Solomon code, and as such, there are various ways to describe the set of all code words. In original look Reed & amp; Solomon (1960), each codeword of the Reed-Solomon code is a sequence of function values ​​of a degree polynomial of less than k . To obtain the codeword of the Reed-Solomon code, the message is interpreted as a polynomial description p of less than k above the limited field F with q elements. In turn, the polynomial p is evaluated at n <= q different points                        a              Â 1                          ,         ...         ,                  a                 Â ·                                 {\ displaystyle a_ {1}, \ dots, a_ {n}} of the F field, and the order of values ​​is the appropriate code word. The general options for a set of evaluation points include {0, 1, 2,..., n -1}, {0,?,? 2 ,...,? n-2 , 1}, {1,?,? 2 ,...,? n-2 },.., where? is a primitive element of F .

Secara formal, himpunan                                    C                           {\ displaystyle \ mathbf {C}}    dari kata-kata kode dari kode Reed-Solomon didefinisikan sebagai berikut:

                                   C                   =                                  {                                                               (                              p          (                     a                         1                             )         ,          p          (                     a                         2                             )         ,         ...         ,          p          (                     a                         n                             )                                 )                                                               |                                       p                     adalah polinomial atas                   F                     gelar                   & lt;          k                                          }                                      .                  {\ displaystyle \ mathbf {C} = {\ Big \ {} \; {\ big (} p (a_ {1}), p (a_ {}}, \ dots, p (a_ {n}) {\ big)} \; {\ Big |} \; p {\ text {adalah polinomial atas}} F {\ text {of degree}} & lt; k \; { \ Big \}} \ ,.}   

While the number of different polynomials is less than k and the number of different messages is the same as                             q                      k                                 {\ displaystyle q ^ {k}} , and thus each message can be uniquely mapped to such polynomials, there are various ways to do this encoding. Original construction of Reed & amp; Solomon (1960) interpreted the x as the coefficient of polynomial p , while the next construct interpreted the message as the value in the first k pointed                              a                      1                   ,         ... ,                   a                      k                             {\ displaystyle a_ {1}, \ dots, a_ {k}} And get the polynomials

with the interpolation of these values ​​with a degree polynomial less than k . The latter coding procedure, though slightly less efficient, has the advantage of generating systematic code, that is, the original message is always contained as an extension of the code word.

Simple encoding procedure: Messages as a sequence of coefficients

Dalam konstruksi asli Reed & amp; Solomon (1960), pesan                         x          =          (                     x                         1                             ,         ...         ,                     x                         k                             )         ?                     F                         k                                      {\ displaystyle x = (x_ {1}, \ dots, x_ {k}) \ dalam F ^ {k}}    dipetakan ke polinomial                                    p                         x                                      {\ displaystyle p_ {x}}    dengan

                                   p                         x                              (          a         )          =                    ?                         saya              =              1                                    k                                         x                         saya                                         a                         saya              -              1                                      .                  {\ displaystyle p_ {x} (a) = \ jumlah _ {i = 1} ^ {k} x_ {i} a ^ {i-1} \ ,.}   

Matriks ini adalah transpose dari matriks Vandermonde di atas                         F                  {\ displaystyle F}    . Dengan kata lain, kode Reed-Solomon adalah kode linier, dan dalam prosedur pengkodean klasik, matriks generatornya adalah                         A                  {\ displaystyle A}    .

Prosedur enkode sistematis: Pesan sebagai urutan awal nilai

Ada prosedur pengkodean alternatif yang juga menghasilkan kode Reed-Solomon, tetapi itu melakukannya dengan cara yang sistematis. Di sini, pemetaan dari pesan                         x                  {\ displaystyle x}    ke polinomial                                    p                         x                                      {\ displaystyle p_ {x}}    bekerja secara berbeda: polinomial                                    p                         x                                      {\ displaystyle p_ {x}}    sekarang didefinisikan sebagai polinomial unik tingkat kurang dari                         k                  {\ displaystyle k}    seperti itu

                                   p                         x                              (                     a                         saya                             )          =                     x                         saya                                      {\ displaystyle p_ {x} (a_ {i}) = x_ {i}}    berlaku untuk semua                         saya         ?          {          1         ,         ...         ,          k         }                  {\ displaystyle i \ in \ {1, \ dots, k \}}    .

Untuk menghitung polinomial ini                                    p                         x                                      {\ displaystyle p_ {x}}    dari                         x                  {\ displaystyle x}    , seseorang dapat menggunakan interpolasi Lagrange. Setelah ditemukan, itu dievaluasi pada titik-titik lain                                    a                         k                           1                             ,         ...         ,                     a                         n                                      {\ displaystyle a_ {k 1}, \ dots, a_ {n}}    bidang ini. Fungsi pengodean alternatif                         C         :                     F                         k                              ->                     F                         n                                      {\ displaystyle C: F ^ {k} \ to F ^ {n}}    untuk kode Reed-Solomon, maka sekali lagi hanya urutan nilai:

                        C          (          x         )          =                                  (                                         p                         x                              (                     a                         1                             )         ,         ...         ,                     p                         x                              (                     a                         n                             )                                 )                                      .                  {\ displaystyle C (x) = {\ big (} p_ {x} (a_ {1}), \ dots, p_ {x} (a_ {n}) { \ besar)} \ ,.}   

Transformasi Fourier diskrit pada dasarnya sama dengan prosedur pengkodean; ia menggunakan generator polynomial p (x) untuk memetakan satu set poin evaluasi ke dalam nilai pesan seperti yang ditunjukkan di atas:

                        C          (          x         )          =                                  (                                         p                         x                              (                     a                         1                             )         ,         ...         ,                     p                         x                              (                     a                         n                             )                                 )                                      .                  {\ displaystyle C (x) = {\ big (} p_ {x} (a_ {1}), \ dots, p_ {x} (a_ {n}) { \ besar)} \ ,.}   

Fourier inverse transforms can be used to convert a set error-free n & lt; q the values ​​of the message return to the polynomial coding of the k coefficients, with the boundaries of which to function, the set of evaluation points used to encode the message should be to set the power boost? Ã,:

                             a                      me                           =                   ?                      me             -             1                             {\ displaystyle a_ {i} = \ alpha ^ {i-1}}  Â
                             a                      1                   ,         ... ,                   a                      n                           =         {         1 ,         ? ,                   ?                      2                   ,         ... ,                   ?                      n             -             1                           }           {\ displaystyle a_ {1}, \ dots, a_ {n} = \ {1, \ alpha, \ alpha ^ {2}, \ dots, \ alpha ^ {n -1} \}}  Â

However, Lagrange interpolation performs the same conversion without constraint on the set of evaluation points or requirements of a set error-free error message and is used for systematic encoding, and in one step of the Gao decoder.

Display BCH: The codeword as a coefficient circuit

Dalam tampilan ini, pengirim lagi memetakan pesan                         x                  {\ displaystyle x}    ke polinomial                                    p                         x                                      {\ displaystyle p_ {x}}    , dan untuk ini, salah satu dari dua pemetaan yang baru saja dijelaskan dapat digunakan (di mana pesan diinterpretasikan sebagai koefisien                                    p                         x                                      {\ displaystyle p_ {x}}    atau sebagai urutan awal dari nilai                                    p                         x                                      {\ displaystyle p_ {x}}    ). Setelah pengirim membangun polinomial                                    p                         x                                      {\ displaystyle p_ {x}}    dalam beberapa cara, namun, daripada mengirim nilai dari                                    p                         x                                      {\ displaystyle p_ {x}}    di semua titik, pengirim menghitung beberapa polinomial terkait                         s                  {\ displaystyle s}    derajat paling banyak                         n          -          1                  {\ displaystyle n-1}    untuk               Source of the article : Wikipedia

Comments
0 Comments