WO1999045911A2 - Universal reed-solomon coder-decoder - Google Patents

Universal reed-solomon coder-decoder Download PDF

Info

Publication number
WO1999045911A2
WO1999045911A2 PCT/US1999/005493 US9905493W WO9945911A2 WO 1999045911 A2 WO1999045911 A2 WO 1999045911A2 US 9905493 W US9905493 W US 9905493W WO 9945911 A2 WO9945911 A2 WO 9945911A2
Authority
WO
WIPO (PCT)
Prior art keywords
error
polynomial
computing
symbol
location
Prior art date
Application number
PCT/US1999/005493
Other languages
French (fr)
Other versions
WO1999045911A3 (en
WO1999045911A9 (en
WO1999045911A8 (en
Inventor
Xinyu Ma
Girish Chandran
Original Assignee
Tiernan Communications, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tiernan Communications, Inc. filed Critical Tiernan Communications, Inc.
Priority to AU31852/99A priority Critical patent/AU3185299A/en
Publication of WO1999045911A2 publication Critical patent/WO1999045911A2/en
Publication of WO1999045911A9 publication Critical patent/WO1999045911A9/en
Publication of WO1999045911A3 publication Critical patent/WO1999045911A3/en
Publication of WO1999045911A8 publication Critical patent/WO1999045911A8/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2933Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using a block and a convolutional code
    • H03M13/2936Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using a block and a convolutional code comprising an outer Reed-Solomon code and an inner convolutional code

Definitions

  • Reed-Solomon (RS) coding is a non-binary Bose, Chaudhuri and Hocquenghem (BCH) error correction code. Since each codeword (or a symbol) is represented by a byte (i.e., a fixed length sequence of "0" and " 1 "s) rather than a single bit as in binary BCH coding, and since the decoder can correct an erroneous symbol regardless of how many bits within that symbol are corrupted, RS coding is very powerful against burst errors.
  • a Reed-Solomon codec (outer coding) concatenated with a convolutional codec (inner coding) provides the best of both worlds — block coding and convolutional coding.
  • a soft-decision Viterbi decoder can be easily constructed to take in unquantized "soft" signals and provide a coding gain of about 2 dB over hard-decision decoding.
  • a Viterbi decoder tends to generate burst errors.
  • a Reed-Solomon decoder has difficulty performing soft-decision decoding, but can easily correct burst errors that exist at the output of the Viterbi decoder.
  • a generating polynomial is also required.
  • g 0 + g, X + g 2 x 2 + g 3 x 3 + ... + g 2t x 2t
  • is the primitive element in of the Galois field.
  • the present invention relates to a method and apparatus for a universal Reed- Solomon encoder and decoder.
  • "Universal" is used herein to indicate that to realize any particular Reed-Solomon coding scheme, modifications to the general codec framework provided by the invention are minimal. Such a universal approach helps to expedite the design process for various Reed-Solomon coding standards.
  • an approach to finding error patterns of the present invention uses a modified general form that takes advantage of properties of the generating polynomial g(x).
  • n is a number of encoded codewords in the block
  • k is a number of information symbols
  • t is a number of correctable erroneous symbols
  • is an element of a Galois field
  • r is the initial exponent for ⁇
  • each ⁇ r+l is a root of g(x).
  • the decoder includes a syndrome computer for computing a series of syndromes from the received codeword polynomial R(x) and an error location polynomial computer for computing an error location polynomial of degree v ⁇ t using the computed syndromes.
  • the error location polynomial computer uses an iterative Berelkamp table.
  • the decoder further includes means for determining error symbol locations by evaluating the error location polynomial for each element in the Galois field.
  • the Reed-Solomon decoder further includes means for correcting errors in each error symbol according to the determined error patterns.
  • FIG. 1 is a circuit block diagram of a conventional encoder circuit modified in accordance with the present invention.
  • FIG. 2 is a flow diagram in accordance with a decoder embodiment of the present invention.
  • FIG. 3 is a flow diagram of operation of a syndrome computer of the decoder embodiment of FIG. 2.
  • FIG. 4 is a flow diagram of operation of an error location polynomial computer of the decoder embodiment of FIG. 2.
  • FIG. 5 is a flow diagram of an error pattern determination block of the decoder embodiment of FIG. 2.
  • each ⁇ r+1 is a root of the generating polynomial g(x).
  • a Reed-Solomon coding scheme is completely specified by RS(n,k,t) and g(x). This is the reason that a universal RS codec can be very versatile for various RS coding specifications in different standards. Once the codec framework has been built, only a few changes are needed to yield another RS coding structure.
  • any arithmetic operation between two symbols in an RS code can be easily carried out.
  • the corresponding bits can be found from another look-up table (denoted as E2V "exponent-to-value" table) and then the two bytes can be operated on by a bit-wise XOR.
  • E2V exponent-to-value
  • a partial V2E look-up table for GF(256) is given as follows:
  • the encoder 100 is the conventional encoder circuit for cyclic codes disclosed in the above-referenced Lin & Costello with modification.
  • the encoder 100 is a division circuit that includes multipliers 101 weighted by coefficients g 0 , g ..., g n . k ., , adders 102 and storage devices or registers 110.
  • the multipliers 101 each multiply a field element from the Galois field by a coefficient g ; .
  • the adders 102 each add two elements from the Galois field.
  • the registers 110 each store an element bj from the Galois field.
  • Gate_B 122 connects information digits received on input 104 to bus 120.
  • Switch 126 toggles between the input information digits on input 104 and parity-check digits stored in storage devices 110.
  • the conventional encoder circuit is modified to include Gate_A 124, such that when a shorter generating polynomial is specified, Gate_A 124 is turned off and the remaining coefficients are re-indexed as g 0 , g fashion ..., g n . k . ⁇ .
  • parity check digits are the remainder of x n_k u(x)/g(x), where u(x) is the information polynomial
  • Step 1 With Gate_B 122 turned on, the k information digits UQ, u,,... u k ., are shifted into the circuit 100 and simultaneously into the communication channel on line 106 with the switch 126 set on for receiving the information digits on input 104.
  • the information digits are shifted from the front, i.e., beginning with u k _, and ending with u 0 .
  • the (n-k) digits in the registers 110 form the remainder and become the parity-check digits.
  • Step 2 Turn off Gate_B 122.
  • the switch 126 is set on for the parity check digits.
  • Step 3 Shift the parity-check digits out and send them into the communication channel 106.
  • each byte contains / bits when the underlying Galois Field is GF(2')- For example, each byte of the codewords is an 8-bit byte when the underlying field is GF(256); each byte of the codewords is a 6-bit byte when the underlying field is GF(64).
  • a coded block of codewords of RS( «,&) at the output of the encoder then appears as shown in the following table:
  • the received codewords may contains errors. That is, some or all bits in a certain codeword may be wrong, so that such codeword is said to be an erroneous symbol.
  • An RS(n,k) code can correct up to t-(n-k)/2 erroneous symbols.
  • Decoding is typically performed in five steps: 1) calculating syndromes, which are denoted as S 0 , S,, ... S 2t- ⁇ ; 2) building a Berlekamp table to find an error location polynomial, which is denoted by ⁇ (x); 3) finding the locations of the erroneous symbols; 4) finding the error patterns at those error locations; and 5) correcting the errors.
  • FIG. 2 A flow diagram for an embodiment of an RS decoder in accordance with the present invention is shown in FIG. 2.
  • the syndrome computer 200 uses the roots ⁇ 1 "1 of the generating polynomial defined in Eq.(la).
  • the error symbol location determination block 206 iteratively uses the elements ⁇ 1 to find erroneous symbol locations. The operation of each of these blocks is now described further with reference to FIGs. 2 to 5.
  • Block 200 Syndrome Computation
  • the received codeword polynomial is given by:
  • the syndromes are then given by:
  • Block 204 Berlekamp Table for Error Location Polynomial
  • the preferred embodiment uses the Berlekamp table as modified by the method disclosed in "Information Theory and Reliable Communication", R. Gallager, John Wiley and Sons, 1968 (hereinafter "Gallager”).
  • An error location polynomial ⁇ (x) is obtained in an iterative manner.
  • the error location polynomial is:
  • is the degree of ⁇ ( ⁇ ) (x)
  • is the i th coefficient of the polynomial ⁇ ( ⁇ ) (x) and is represented in terms of the exponent of the primitive element .
  • d p and ⁇ (p) (x) are the discrepancy and error location polynomial of the p th row, respectively.
  • the values d p , ⁇ (p) (x) and ⁇ -p are determined by following the procedures developed by Gallager.
  • the second term in Eq.(9) is defined as Remedy (x), i.e.,
  • the iteration continues until all the syndromes have been used.
  • the iteration index "mu” therefore ranges from 0, 1, 2, ... 2t-l (maximum).
  • the final form of the error location polynomial obtained at the end of the iterations can be represented as:
  • v is the degree of the error location polynomial and v ⁇ t.
  • the steps of each iteration for the Berlekamp table carried out in block 204 (FIG. 2) for finding the error location polynomial are shown in the block diagram of FIG. 4.
  • the discrepancy is computed using ⁇ (x) and the new syndrome S f .
  • Remedy(x) is computed using the discrepancy result, d p , and ⁇ (p) (x).
  • the result for ⁇ ( ⁇ ) (x) is assigned to Temp(x) in block 406 and ⁇ ( ⁇ ) (x) is updated by adding Remedy(x) in block 408.
  • a comparison is made between 2-l ⁇ and mu. If 2-1 ⁇ is less than or equal to mu, then the parameters in block 414 are updated and assigned. If 2i ⁇ is greater than mu, then the expression ⁇ -p is only updated in block 412.
  • a helpful way to further understand the above procedure is to step through an example adapted from Lin & Costello. Consider a triple-error-correcting RS code with symbols from GF(2 4 ). The syndromes are then:
  • the intermediate result ⁇ (5) (x) is different.
  • the determination of the error location polynomial in block 204 only depends on the algebra of the Galois field. It does not depend on how the generating polynomial is defined. Thus, for various standards such as DVB and INTELSAT, this step of building the Berlekamp table is identical, that is, no hardware redesign is required.
  • Block 206 Error Symbol Location Determination
  • the operation in the error symbol location determination block is a trial-and- error process.
  • the error pattern at each error location can be determined.
  • the error pattern formula is a modified general form based on equation (6.35) disclosed in Lin & Costello.
  • this modified general form for determining the error pattern at each error location is universally applicable for arbitrary ⁇ , r specified in the aforementioned generating polynomial. This is significant in that it enables the decoding of arbitrary Reed- Solomon codes generated by the generating polynomial g(x) given in Eq.(la) using a common hardware structure.
  • FIG. 5 a flow diagram of the steps used in block 210 (FIG. 2) for finding the error pattern for the error locations is shown.
  • the error evaluator polynomial Z(x) is computed using the coefficients of the error location polynomial ⁇ (x) from block 204 (FIG. 2) and syndromes from block 200 (FIG. 2).
  • elements ⁇ are raised to certain powers corresponding to the error locations.
  • the error pattern at a particular error location is computed using Eq.(14).
  • the errors can be corrected simply by flipping the errored bits in each error symbol. This then provides the original codeword that was transmitted.
  • an encoding/decoding algorithm of the present invention has been disclosed herein which can be used to design Reed-Solomon codecs to meet various industry specifications such as the DVB and INTELSAT standards as well as emerging cable modem standards.
  • the universal RS coder/decoder framework is provided in such a way that a user only needs to specify four parameters to configure and define the RS coding scheme, and a coder/decoder can be readily available with a minimum amount of modification of such a universal codec.
  • the algorithm further employs two lookup tables to expedite addition and multiplication operations.

Abstract

A generalized Reed-Solomon coding is characterized by the codeword block size n, the information block size k and the generator polynomial g(x), which is a function of β and r according to the equation: g(x)=(x+βr)(x+βr+1)(x+βr+2)(x+βr+3)(x+βr+4)...(x+βr+2t-1) where β is an element of the Galois field and r is the initial exponent for β. For decoding, an approach to finding error patterns uses a modified general form that takes advantage of properties of the generating polynomial. With the disclosed universal RS encoding-decoding approach, a user only needs to specify four parameters, namely those values (n, k, β, r), and any RS coding design specification can be met using a single framework.

Description

UNTVERSAL REED-SOLOMON CODER-DECODER
BACKGROUND OF THE INVENTION
Reed-Solomon (RS) coding is a non-binary Bose, Chaudhuri and Hocquenghem (BCH) error correction code. Since each codeword (or a symbol) is represented by a byte (i.e., a fixed length sequence of "0" and " 1 "s) rather than a single bit as in binary BCH coding, and since the decoder can correct an erroneous symbol regardless of how many bits within that symbol are corrupted, RS coding is very powerful against burst errors. A Reed-Solomon codec (outer coding) concatenated with a convolutional codec (inner coding), provides the best of both worlds — block coding and convolutional coding. A soft-decision Viterbi decoder can be easily constructed to take in unquantized "soft" signals and provide a coding gain of about 2 dB over hard-decision decoding. However, a Viterbi decoder tends to generate burst errors. On the other hand, a Reed-Solomon decoder has difficulty performing soft-decision decoding, but can easily correct burst errors that exist at the output of the Viterbi decoder.
A well-known reference regarding error control coding in general and Reed- Solomon coding in particular is "Error Control Coding: Fundamentals and Applications", S. Lin and D. Costello, Jr., Prentice-Hall, 1983 (hereinafter "Lin & Costello"). For each Reed-Solomon coding specification, there is an associated Galois field (GF) specified which depends on the symbol size. For instance, if each symbol is an 8-bit byte, then GF(28=256) is used. This field contains 256 elements which are all the possible 8-bit symbols. Each Galois field has an all 0 element and a primitive element that can generate all the remaining elements in this field. A Reed-Solomon coding scheme is specified as RS(n,k,t), where "k" is the number of information symbols in each input block, "n" is the number of encoded codewords in each output block, and "t" is the number of correctable erroneous symbols such that 2t=n-k. For example, in the Digital Video Broadcasting (DVB) standard, the RS coding is specified as RS(«=204, k=\88, t=8), which is a shortened version of RS(w=255, £=239, t=8). In the INTELSAT standard, the RS coding is specified as RS(219,201, t=9), shortened from RS(255,237,t=9). In a well-known cable modem standard, the code RS(«=255, k=223, t=16) is used. To perform RS encoding and decoding, a generating polynomial is also required. Usually, the generating polynomial of RS(n,k,t) is given by: g(x) = (x+cc) (x+α 2) ... (x+α 2t)
= g0 + g, X + g2 x2 + g3 x3 + ... + g2t x2t where α is the primitive element in of the Galois field.
SUMMARY OF THE INVENTION
The present invention relates to a method and apparatus for a universal Reed- Solomon encoder and decoder. "Universal" is used herein to indicate that to realize any particular Reed-Solomon coding scheme, modifications to the general codec framework provided by the invention are minimal. Such a universal approach helps to expedite the design process for various Reed-Solomon coding standards.
In the present invention, a generalized Reed-Solomon coding is characterized by the codeword block size n, the information block size k and the generating polynomial g(x), which is a function of β and r according to the equation: g(x)= (x+βr) (x+βr+1) (x+βr+2)(x+βr+3) (x+βr+4) ... (x+β^21-1) where β is an element of the Galois field and r is the initial exponent for β.
For decoding, an approach to finding error patterns of the present invention uses a modified general form that takes advantage of properties of the generating polynomial g(x).
In accordance with the present invention, a Reed-Solomon (RS) decoder is operable to decode a received codeword block represented by a codeword polynomial R(x) that has been encoded using a RS code (n,k,t) and the generating polynomial g(x)= (x+βr) (x+β^1) (x+β 2)(x+βr+3) (x+β ) ... (x+β^21-1). For notation, n is a number of encoded codewords in the block, k is a number of information symbols, t is a number of correctable erroneous symbols, β is an element of a Galois field, r is the initial exponent for β, and each βr+l is a root of g(x). The decoder includes a syndrome computer for computing a series of syndromes from the received codeword polynomial R(x) and an error location polynomial computer for computing an error location polynomial of degree v < t using the computed syndromes. The error location polynomial computer uses an iterative Berelkamp table. The decoder further includes means for determining error symbol locations by evaluating the error location polynomial for each element in the Galois field. The decoder also includes means for determining an error pattern for each error symbol by 1) computing an error evaluator polynomial Z(x) based on the error location polynomial and the computed syndromes and 2) computing the error pattern at each error symbol location according to the expression: ejy = p-^-1> - z(β-jy) / πv I.lιl,v (i+ p'-J where jy is a particular error location for which the error pattern is being determined and Z(β"jy) is the value of the error evaluator polynomial Z(x) evaluated with x = β"jy. This modified general form for determining the error pattern at each error location is universally applicable for arbitrary β, r specified in the aforementioned generating polynomial g(x).
According to an aspect of the invention, the Reed-Solomon decoder further includes means for correcting errors in each error symbol according to the determined error patterns.
With the universal RS encoding-decoding approach disclosed herein, a user only needs to specify four parameters, namely those values (n,k,β,r), and any RS coding design specification can be met using a single framework. This RS codec framework can therefore be applied to numerous applications, including transmission applications using such standards as the DVB, INTELSAT and emerging cable modem standards. This approach is also very fast due to extensive use of lookup tables and Gallager's modified Berlekamp iterative search. BRIEF DESCRIPTION OF THE DRAWINGS
The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of preferred embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention.
FIG. 1 is a circuit block diagram of a conventional encoder circuit modified in accordance with the present invention. FIG. 2 is a flow diagram in accordance with a decoder embodiment of the present invention.
FIG. 3 is a flow diagram of operation of a syndrome computer of the decoder embodiment of FIG. 2.
FIG. 4 is a flow diagram of operation of an error location polynomial computer of the decoder embodiment of FIG. 2.
FIG. 5 is a flow diagram of an error pattern determination block of the decoder embodiment of FIG. 2.
DETAILED DESCRIPTION OF THE INVENTION
A general form of the generating polynomial of S(n,k,t) is given by:
Eq.(la) g(x) = (x+βr) (x+βr+1) (x+βr+2)(x+βr+3) (x+β^4) ... (x+β^21"1) ,
where β is an element of the Galois field and r is the initial exponent for β. Thus, each βr+1 is a root of the generating polynomial g(x).
Equivalently,
Eq.(lb) g(x) = go + g, x + g2 x2 + g3 x3 + ... + g2t x2t For instance, in the DVB standard specified as RS(204,188,t=8), β=α (the primitive element of GF(256) with = (01000000)=2) and r=0; in the INTELSAT standard specified as RS(219,201,t=9), β=ce53 =(00001010)=40, and r=120.
A Reed-Solomon coding scheme is completely specified by RS(n,k,t) and g(x). This is the reason that a universal RS codec can be very versatile for various RS coding specifications in different standards. Once the codec framework has been built, only a few changes are needed to yield another RS coding structure.
As noted in the background, there is an associated Galois field (GF) specified for each Reed-Solomon coding specification which depends on the symbol size. For instance, if each symbol is an 8-bit byte, then GF(28=256) is used. This field contains 256 elements which are all the possible 8-bit symbols. Each Galois field has an all 0 element and a primitive element that can generate all the remaining elements in this field. There is also a primitive polynomial p(x) that defines the arithmetic operations of the Galois field. For example, a GF(8) with primitive polynomial p(x)=l+x+x3 (i.e., p( ) = 1+ +α3 = 0, or α3 = 1+α where is the primitive element of the Galois field and powers of α are referred to as "roots" of the polynomial) is tabulated as follows (with the least significant bit on the left):
000 α° 100 α1 010 2 001 α3 110 α4 011 5 111 α6 101
Using this table, any arithmetic operation between two symbols in an RS code can be easily carried out. For the example of GF(8) above, symbol multiplication is by modulo-7 addition of exponents (since α7=l) and symbol addition is by bit-wise EXCLUSIVE-OR (XOR). If the bit patterns of two symbols are known and a multiplication operation is required, the corresponding exponents can be found simply from a look-up table (denoted as V2E "value-to-exponential" table) and then the two exponents can be added. Likewise, if the exponents of two symbols are known and an addition operation is required, the corresponding bits can be found from another look-up table (denoted as E2V "exponent-to-value" table) and then the two bytes can be operated on by a bit-wise XOR.
A partial E2V look-up table for GF(256) is given as follows:
E2V[0] 0
E2V[1] 1
E2V[2] 2
E2V[3] 4
E2V[4] 8
E2V[5] 16
E2V[6] 32
E2V[7] 64
E2V[8] 128
E2V[9] 29
E2vrιoι 58
A partial V2E look-up table for GF(256) is given as follows:
V2E[0] -1
V2E[1] 0
V2E[2] 1
V2E[3] 25
V2E[4] 2
V2E[5] 50
V2E[6] 26
V2E[7] 198
V2E[8] 3
V2E[9] 223
V2E[10] 51 Note that the index of the E2V table is the true exponent plus 1 because "E2V[0]=0" indicates or1 =0, which is a special case for multiplication operations. For example,
"E2V[4]=8" means α3 =8 "V2E[8]=3" means 8=α3
1. Encoding
An embodiment of an encoder 100 is shown in the block diagram of FIG. 1. The encoder 100 is the conventional encoder circuit for cyclic codes disclosed in the above-referenced Lin & Costello with modification. The encoder 100 is a division circuit that includes multipliers 101 weighted by coefficients g0 , g ..., gn.k., , adders 102 and storage devices or registers 110. The multipliers 101 each multiply a field element from the Galois field by a coefficient g;. The adders 102 each add two elements from the Galois field. The registers 110 each store an element bj from the Galois field. Gate_B 122 connects information digits received on input 104 to bus 120. Switch 126 toggles between the input information digits on input 104 and parity-check digits stored in storage devices 110. The conventional encoder circuit is modified to include Gate_A 124, such that when a shorter generating polynomial is specified, Gate_A 124 is turned off and the remaining coefficients are re-indexed as g0 , g„ ..., gn.k.ι . In the conventional encoder, parity check digits are the remainder of xn_k u(x)/g(x), where u(x) is the information polynomial
Eq.(2) u(x)=u0 + u, X + ... + uk_, x k1 -l
that represents the information digits UQ, U ,,..., uk., .
The conventional encoding steps are as follows: Step 1. With Gate_B 122 turned on, the k information digits UQ, u,,... uk., are shifted into the circuit 100 and simultaneously into the communication channel on line 106 with the switch 126 set on for receiving the information digits on input 104. The information digits are shifted from the front, i.e., beginning with uk_, and ending with u0. As soon as the complete digits have entered the circuit, the (n-k) digits in the registers 110 form the remainder and become the parity-check digits.
Step 2. Turn off Gate_B 122. The switch 126 is set on for the parity check digits.
Step 3. Shift the parity-check digits out and send them into the communication channel 106. These (n-k) parity-check digits b0 , b, , ..., bn.k_, , together with the k information digits, form the complete codeword.
After RS encoding, there are n codewords with the first k codewords being the information bytes and the remaining n-k bytes being the parity check. Each byte contains / bits when the underlying Galois Field is GF(2')- For example, each byte of the codewords is an 8-bit byte when the underlying field is GF(256); each byte of the codewords is a 6-bit byte when the underlying field is GF(64). A coded block of codewords of RS(«,&) at the output of the encoder then appears as shown in the following table:
InfoByte[k-l] InfoByte[k-2]
InfoByte[l] InfoByte[0] ParityByte[n-k-l] ParityByte[n-k-2]
ParityByte[l] ParityByte[0] 2. Decoding
After the codewords are transmitted through the communication channel, the received codewords may contains errors. That is, some or all bits in a certain codeword may be wrong, so that such codeword is said to be an erroneous symbol. An RS(n,k) code can correct up to t-(n-k)/2 erroneous symbols. Decoding is typically performed in five steps: 1) calculating syndromes, which are denoted as S0, S,, ... S2t-ι; 2) building a Berlekamp table to find an error location polynomial, which is denoted by σ(x); 3) finding the locations of the erroneous symbols; 4) finding the error patterns at those error locations; and 5) correcting the errors. A flow diagram for an embodiment of an RS decoder in accordance with the present invention is shown in FIG. 2. There are five blocks in the decoder embodiment including a syndrome computer 200, error location polynomial computer 204, error symbol location determination block 206, error pattern determination block 210 and error correction block 212. The syndrome computer 200 uses the roots β1 "1 of the generating polynomial defined in Eq.(la). The error symbol location determination block 206 iteratively uses the elements β1 to find erroneous symbol locations. The operation of each of these blocks is now described further with reference to FIGs. 2 to 5.
Block 200: Syndrome Computation The received codeword polynomial is given by:
Eq.(3) R(x) = Ro + x x + R2 x2... + Rn.2 x""2 + R^ x""1
Syndromes are computed by:
Eq.(4) S = R(βr+1) = Ro + R, βr+' + R2 β2*(r+ ... + Rn-2 p*"" )* + Rn., po-D'O+ where i takes the values of 0, 1 , 2, ...2t- 1. In other words, the syndromes are the values of the codeword polynomial Eq.(3) with the variable being the roots of the generating polynomial in Eq.(la), i.e.,
Eq.(5) S- Ro + R, x + R2 x2... + Rπ.2 xn"2 + Rn., x"'1 | x=p rt
For example, in the DVB standard the generating polynomial defines β=α
(the primitive element) and r=0, such that the roots of the generating polynomial are 1, α1, 2, ... α15. The syndromes are then given by:
S0=R(α°) = R0 + R1+R2+...+Rn.2 + Rn., S, = R( α1 ) = Ro + R, α + R2 2 + ... + Rn.2 α(n"2) + Rn., a(n-1} S2 = R( α2 ) = Ro + R, α2 + R2 α4 + ... + Rn.2 α(n"2)*2 + Rn., α(n"ι 2
S15= R( α15 ) = RQ + R, α15 + R2 α30 + ... + Rn.2 α(n"2)*15 + Rn., {n *]5
In the INTELSAT standard, the generating polynomial defines β=α53 and r=120, such that the roots of generating polynomials are 53*120, α53*121, ... 53*135. The syndromes are then given by:
S0= R( 53'120 ) = Ro + R, α53*120 + R2 53*120*2 + ... + R„.2 53*120 -2> + R„., α53*120**""1' S, = R( α53*121 ) = Ro + R, α53*121 + R2 53*121*2 + ... + R_.2 α53*121*'""2' + R,,., α53*121*^1' S2 = R( 53*122 ) = Ro + R, α53*122 + R2 α53*122*2 + ... + Rn.2 α53*122*'"-2) + Rn.1 a5'122*^
S15 = R( α53*135 ) = o + R, 53*135 + R2 53*135*2 + ... + R„.2 53*135 "» + Rn., α 53*i3s n-i)
A faster way to compute syndromes is to rearrange Eq.(5):
Eq.(6) Si=((((Rn.1x + Rn.2)x + Rn )x + Rn.4)x+...+R1)x + R0 | ^ Thus, the syndrome calculation can be carried out iteratively. This iterative approach used by syndrome computer 200 is shown in the flow diagram of FIG. 3. In block 302, the jth symbol Rx^ is received. The value of the ith syndrome (i<j) in block 304 is taken to look-up table V2E to find the corresponding exponent format in block 306. Since x = βr+1, a modulo addition is performed on the exponent of β^1 and the exponent format from block 306. This result is passed to look-up table E2V to find the corresponding value format which is then added to the jth symbol Rxjji. This result is then used to update the value of the syndrome in block 304.
Block 204: Berlekamp Table for Error Location Polynomial The preferred embodiment uses the Berlekamp table as modified by the method disclosed in "Information Theory and Reliable Communication", R. Gallager, John Wiley and Sons, 1968 (hereinafter "Gallager"). An error location polynomial σ(x) is obtained in an iterative manner. The maximum number of iterations for constructing the Berlekamp table is 2t, where t is the number of correctable errors. For example, in the DVB standard, with code RS(255,239,t=8), the maximum number of iterations is 16. However, in practice, if the received symbol block contains less than 2t errors, fewer iterations are needed. In fact, if the number of errors in the received symbol block is v (v < t ), only t+v iterations are needed in the Berlekamp table to obtain the error location polynomial σ(x). At each step, an updated version of σ(x) is obtained. Thus, at step μ of the iteration, the error location polynomial is:
Eq.(7) σ(μ) (x) = 1 + σ , (μ) x + σ2 (μ) x2 + ... + σ . , (μ) x -1 + σ (μ) x
where lμ is the degree of σ(μ) (x), σ , (μ) is the ith coefficient of the polynomial σ(μ) (x) and is represented in terms of the exponent of the primitive element . To determine the updated error location polynomial at step μ+1, a quantity called discrepancy is needed. The μlh discrepancy du is calculated by: Eq.(8) dμ = Sμ + σ, ^ Sμ.,+ σ2 ω Sμ_2 + ... + σ ., ω Sμ,μ+1 + σ oo Sμ,μ
where Sμ , Sμ-1 , ..., Sμ-lμ are the syndromes. The error location polynomial at step μ+1 is determined by:
Eq.(9) σ(μ+1) (x) = σ(μ) (x) + dμ dp "' x(μ"p) σ(p) (x)
where p is a selected row prior to the μth row, dp and σ(p) (x) are the discrepancy and error location polynomial of the pthrow, respectively. The values dp , σ(p) (x) and μ-p are determined by following the procedures developed by Gallager.
The term "mu" is used to index the rows of the Berlekamp table. For example, when mu=0, σ(1) (x) is actually computed; likewise, when mu=l, σ(2) (x) is actually computed; so for the DVB standard where the number of correctable errors t=8, the terms σ(1)(x), σ(2) (x), ... σ(I6) (x) need to be found, thus mu=0,I,2, ...,I5. The second term in Eq.(9) is defined as Remedy (x), i.e.,
Eq.(lO) Remedy(x) = dμ dp-' x(μ' ) σ(p) (x)
Throughout the process of building the Berlekamp table, consideration is made of three integers: lμ , μ-p, dp and four polynomials: Temp(x), dp)(x), dμ)(x), Remedy(x). Before the iteration begins, the following are initialized:
Figure imgf000014_0001
μ-p = l, dp= l = α°, σ( )(x) = l, σ(μ)(x) = l. The iteration then begins. For mu=0, e.g., σ(1) (x) is to be computed. The discrepancy in Eq.(8) is given as: lfd0= 0, then
update (μ-p): μ-p «= (μ-p) + 1,
and the iteration continues with mu=I. If d0 ≠O, then
(!„,„/ dp= do/ dp= do/1 = d0= S0 (recall dp=l as initialized),
Remedy(x) = (d^/ dp) x(μ"p) σ< >(x) = d0x' = S0x save σ(μ)(x) in Temp(x): Temp(x) <= σ(μ)(x) update σ(μ)(x): σ(μ)(x) = σ(1)(x) «- σ(μ)(x) + Remedy(x) = 1 + S0 x compare 2 iμ with mu :
Figure imgf000015_0001
mu+l- lμ (here 2 lμ=0=mu=0, so lμ-l), μ-p - 1, dp *- drnu (here dp = do), σ(p)(x) - Temp(x) (here σ( )(x)=l). if 2-lμ> mu, then μ-p «= (μ-p) + 1, and do nothing else. • move on to the next iteration with "mu"=2 and repeat the above.
The iteration continues until all the syndromes have been used. The iteration index "mu" therefore ranges from 0, 1, 2, ... 2t-l (maximum). The final form of the error location polynomial obtained at the end of the iterations can be represented as:
Eq.(l l) σ(x) = l + σ1 x + σ2 x2 + ... + σv.1 xv-' + σvxv
where v is the degree of the error location polynomial and v < t. The steps of each iteration for the Berlekamp table carried out in block 204 (FIG. 2) for finding the error location polynomial are shown in the block diagram of FIG. 4. In block 402, the discrepancy is computed using σ(x) and the new syndrome Sf. In block 404, Remedy(x) is computed using the discrepancy result, dp, and σ(p)(x). The result for σ(μ)(x) is assigned to Temp(x) in block 406 and σ(μ)(x) is updated by adding Remedy(x) in block 408. In block 410, a comparison is made between 2-lμ and mu. If 2-1 μ is less than or equal to mu, then the parameters in block 414 are updated and assigned. If 2iμ is greater than mu, then the expression μ-p is only updated in block 412. A helpful way to further understand the above procedure is to step through an example adapted from Lin & Costello. Consider a triple-error-correcting RS code with symbols from GF(24). The syndromes are then:
S0 = α12, S,= 1 = α°, S2= α14, S3= α10, S4= 0, S5 = α12
Initialization:
lμ =0, μ-p = 1, dp =1 =α°, σ(p)(x) = 1, σ<μ>(x) =1.
Iteration begins:
for mu=0: do = S0 = α12
Remedy(x) = (d^/ dp ) x(μ"p) σ(p)(x) = dβX1 = α12 x Temp(x) = σ(μ)(x)=l, σ(μ)(x) = σ(1)(x) «= σ(μ)(x) + Remedy(x) = 1 + α12 x since 2 -lμ-0 ≤ mu=0, then lμ <= mu+ϊ- lμ =1, μ-p«=l, dp^dmu = do=α12, σ(p)(x)^Temp(x)=l. After mu=0, we have:
= 1 μ-p = 1
^ = α12 σ(μ)(x)=σ(1)(x) = 1 + αI2x σ(p)(x) = 1
Remedy(x) = α12 x
Temp(x) = 1
formu=l: d, = S, + S0σ,l)= 1 + α12127 Remedy(x) = (^ dp ) x(μ" ) σ(p)(x) = ( , / dp ) x1 = α10 x
Temp(x) = σ(μ)(x) = σ(1)(x) =1 + α12 x, σ(μ)(x) = σ(2)(x) <= σ(μ)(x) + Remedy(x) = 1 + α12 x + α10 x = 1 + α3x. since 2iμ=2 > mu=I, then (μ-p) «= (μ-p)+l = 2.
After mu=l, we have:
l = 1 (unchanged) μ-p = 2
^ = α12 (unchanged) σ(μ)(x)=σ(2)(x) = 1 + α3 x σ(p)(x) = 1 (unchanged)
Remedy(x) = α10x
Temp(x) = 1 +α12x
formu=2: d2 = S2 + S, σ,(2)= α14 + 1- α3= 1 Remedy(x) = (c ,, / dp ) x(μ"p) σ(p)(x) = (d2 / dp ) x2 = α3 x2
Temp(x) = σ(μ)(x) = σ(2)(x) =1 + α3 x, σ(μ)(x) = σ(3)(x) <= σ(μ)(x) + Remedy(x) = 1 + α3 x + α3 x2 since 2 -lμ=2 ≤ mu=2, then lμ*= mu+l- lμ =2, μ-p **" 1, dp^dmu = d2=l, σ(p)(x) <= Temp(x) =1 + α3 x.
After mu=2, we have:
lμ = 2 μ-p = 1
Figure imgf000018_0001
σ(μ)(χ)=σ(3)(χ) = 1 + α3 x + α3 x2 σ*>(x) = 1 + α3 x
Remedy(x) = α3x2
Temp(x) = 1 + α3 x
formu=3: d A3, = ° S3, + ' ° S,2συ,l(3) + ' S °,1 σ2 _ υ2(3) = α10 + α14- α3+ 1- α 3 α'
Remedy(x) = (d^ / dp ) x(μ"p) σ(p)(x) = (d3 / dp ) x1 (1 + α3 x)
= 7x + 10x2 Temρ(x) = σ(μ)(x) = σ(3)(x) = 1 + α3 x + α3 x2 σ(μ)(x) = σ()(x) <= σ(μ)(x) + Remedy(x) = 1 + α4 x + α12 x2 since 2i=4 > mu=3, then (μ-p) *=(μ-p)+l =2. After mu=3, we have:
= 2 (unchanged) μ-p = 2 dp = 1 (unchanged) σ(μ)(x)=σ(4)(x) = 1 + α4x + α12x2 σ(p)(x) = 1 + α3 x (unchanged)
Remedy(x) = α7 x + α10 x2
Temp(x) = 1 + α3 x + α3 x2
for mu=4: d4 = S4 + S3 σ,(4> + S2 σ2 (4> = 0 + cc10- α4 + α14- α12 = α 10 Remedy(x) = (cL^ / dp ) x(μ"p) σ(p)(x) = (d4 / dp ) x2 ( 1 + α3 x)
= α10x213x3 Temp(x) = σ(μ)(x) = σ(4)(x) = 1 + α4 x + α12 x2, σ(μ)(x) = σ5)(x) - σ(μ)(x) + Remedy(x) = 1 + α4 x + α3 x2 + 13 xJ since 2-lμ—4 ≤mu-4, then /„ mu+l- lμ =3, μ-p <= 1,
Figure imgf000019_0001
σ(p)(x) <= Temp(x) = 1 + 4 x + α1 122 x v2
After mu=4, we have:
l = 3 μ-p = 1
Figure imgf000019_0002
σ(μ)(x)=σ(5)(x) = 1 + α4 x + 3 x2 + cc13 x3 σp)(x) = 1 + α4x + α12x2
Remedy(x) = α10x213x3
Temp(x) = 1 + α4 x + cc12 x2 for mu=5: d5 = S5 + S4 σ,(5) + S3 σ2 (5) + S2 σ3 (5) = α13
Remedy(x) = (d^/ dp ) x(μ"p) σ(p)(x) = (d5/ dp ) x'(l + α4 x + α12 x2)
= 3 x + α7 x2 + x3 Temp(x) = σ(μ)(x) = σ(5)(x) = 1 + 4 x + α3 x2 + α13 x3 σ(μ)(x) = σ(6)(x) «= σ(μ)(x) + Remedy(x) = 1 + 7x + 4 x2 + 6 x3 since 2 iμ=6 > mu=5, then (μ-p) <= (μ-p)+l = 2.
After mu=5, we have:
l = 3 (unchanged) μ-p = 2 dp = 10 (unchanged) σ(μ)(x)=σ(6)(x) = 1 + α7x + α4 x2 + 6 x3 σ(p)(x) = 1 + α4 x + 12 x2 (unchanged)
Remedy(x) = α3 x + 1 x2 + x3
Temp(x) = 1 + 4 x + α3 x2 + 13 x3
At the end of iterations, the error location polynomial obtained is given as σ(x) = σ(6)(x) = 1 + α7x + α4 x2 + 6 x3, which is identical to the polynomial given in the example in Lin & Costello. However, note that the intermediate result σ(5)(x) is different. Note further that the determination of the error location polynomial in block 204 only depends on the algebra of the Galois field. It does not depend on how the generating polynomial is defined. Thus, for various standards such as DVB and INTELSAT, this step of building the Berlekamp table is identical, that is, no hardware redesign is required.
Block 206: Error Symbol Location Determination The operation in the error symbol location determination block is a trial-and- error process. In particular, the variable x is replaced in the error location polynomial σ(x) by β°, β, β2, β3, ..., βn"' (where n is the block size of the codeword, e.g., n=255 if using GF(256)) to determine if:
Eq.(12) σ(β' ) = 0,
where β is given in Eq.(la). If β1 =0, then it is determined that an erroneous symbol is located at (n-j)%n (% is the modulo operation). For example, for the INTELSAT standard (β=α53 , GF(256)), if σ(l=β°) = 0, then the 0th symbol is declared corrupted; if σ(β') = 0, then the 254th symbol is declared corrupted; if σ(β254) = 0, then the 1st symbol is declared corrupted and so on.
Block 210: Error Pattern Determination
There are two steps in finding the error patterns at those error locations identified in block 206 above. First, an error evaluator polynomial Z(x) is determined as given in the Lin & Costello reference:
Eq.(13) Z(x) = l + (S0 + σ1) x + (Sl + S01 + σ2) x2 + ...
+ (Sv_, + Sv.2-σ, + Sv_3- σ2 + ... +S0v., + σv)xv
where σ, 23 v are the coefficients of the error location polynomial in Eq.(l 1) from block 204 and S0>ι;2,3„ v are the syndromes computed in block 200.
After the error evaluator polynomial Z(x) has been computed, the error pattern at each error location can be determined. The error pattern formula is a modified general form based on equation (6.35) disclosed in Lin & Costello.
Eq.(14) eJy = β-J*"') • Z(β-J") / π -y (1+ β^) where jy is a particular error location for which the error pattern is being determined, all of the error locations are given by j, 23 y y v (i.e., v total errors as found in block 204) and β and r are defined in the generating polynomial of Eq.(la). Z(β"jy) is the value of the error evaluator polynomial Z(x) evaluated with x = β J . Note that this modified general form for determining the error pattern at each error location is universally applicable for arbitrary β, r specified in the aforementioned generating polynomial. This is significant in that it enables the decoding of arbitrary Reed- Solomon codes generated by the generating polynomial g(x) given in Eq.(la) using a common hardware structure. Referring to FIG. 5, a flow diagram of the steps used in block 210 (FIG. 2) for finding the error pattern for the error locations is shown. In block 502, the error evaluator polynomial Z(x) is computed using the coefficients of the error location polynomial σ(x) from block 204 (FIG. 2) and syndromes from block 200 (FIG. 2). In block 504, elements β are raised to certain powers corresponding to the error locations. In block 506, the error pattern at a particular error location is computed using Eq.(14).
Block 212: Error Pattern Determination
Once the error pattern at each error location has been determined in block 210, the errors can be corrected simply by flipping the errored bits in each error symbol. This then provides the original codeword that was transmitted.
In summary, an encoding/decoding algorithm of the present invention has been disclosed herein which can be used to design Reed-Solomon codecs to meet various industry specifications such as the DVB and INTELSAT standards as well as emerging cable modem standards. The universal RS coder/decoder framework is provided in such a way that a user only needs to specify four parameters to configure and define the RS coding scheme, and a coder/decoder can be readily available with a minimum amount of modification of such a universal codec. The algorithm further employs two lookup tables to expedite addition and multiplication operations. While this invention has been particularly shown and described with references to preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims.

Claims

CLAIMSWhat is claimed is:
1. A Reed-Solomon (RS) decoder for decoding a received codeword block represented by a codeword polynomial R(x) encoded using a RS code (n,k,t) and a generating polynomial of the form g(x)= (x+╬▓r) (x+╬▓14"1) (x+╬▓1^2) ...
(x+╬▓r+2t_1), where n is a number of encoded codewords in the block, k is a number of information symbols, t is a number of correctable erroneous symbols, ╬▓ is an element of a Galois field, r is the initial exponent for ╬▓, and each ╬▓^1 is a root of g(x), the decoder comprising: a syndrome computer for computing a series of syndromes from the received codeword polynomial R(x); an error location polynomial computer for computing an error location polynomial of degree v < t using the computed syndromes; means for determining error symbol locations by evaluating the error location polynomial for each element in the Galois field; and means for determining an error pattern for each error symbol by 1) computing an error evaluator polynomial Z(x) based on the error location polynomial and the computed syndromes and 2) computing the error pattern at each error symbol location according to the expression: ejy = p-j^-') ΓÇó z(╬▓-jy) / ╬╣r,=,,ΓÇ₧v (i+ ╬▓"-jy) where jy is a particular error location for which the error pattern is being determined and Z(╬▓"j ) is the value of the error evaluator polynomial Z(x) evaluated with x = ╬▓jy.
2. The Reed-Solomon decoder of Claim 1 further comprising means for correcting errors in each error symbol according to the determined error patterns.
3. The Reed-Solomon decoder of Claim 1 wherein the error location polynomial computer uses an iterative Berlekamp table.
4. A Reed-Solomon (RS) decoder for decoding a received codeword block represented by a codeword polynomial R(x) encoded using a RS code (n,k,t) and a generating polynomial of the form g(x)= (x+╬▓r) (x+╬▓1^1) (x+╬▓^2) ...
(x+β^2'"1), where n is a number of encoded codewords in the block, k is a number of information symbols, t is a number of correctable erroneous symbols, β is an element of a Galois field, r is the initial exponent for β, and each β^1 is a root of g(x), the decoder comprising: means for computing a series of syndromes, each syndrome S, computed according to the expression R(βr+1) for i ranging from 0 to 2t-l; means for computing an error location polynomial using the computed syndromes S„ the error location polynomial represented by σ(x) = 1 + σ, x + σ2 x2 + ... + σv_, xv_1 + σv xv where v is the degree of the error location polynomial and v < t; means for determining error symbol locations by evaluating the error location polynomial σ(x) for each element β1 for i ranging from 0 to n-1; and means for determining an error pattern for each error symbol by 1) computing an error evaluator polynomial represented by Z(x) = 1 + (S0 + σ,) x + (S, + S0-σ, + σ2) x2 + ... + (Sv-1 + Sv.2-σ, + Sv.3- σ2+ ... +S0-σv., + σv )xv where σ1>2(...v are coefficients of the error location polynomial σ(x) and So,ι,2, v are the computed syndromes and 2) computing the error pattern at each error symbol location according to the expression: ejy = β-^r-1) - z(β-jy) / πv1>.y(i+ βJ,-jy) where jy is a particular error location for which the error pattern is being determined and Z(β"jy) is the value of the error evaluator polynomial Z(x) evaluated with x = β~jy.
5. The Reed-Solomon decoder of Claim 4 further comprising means for correcting errors in each error symbol according to the determined error patterns.
6. The Reed-Solomon decoder of Claim 4 wherein the means for determining the error location polynomial uses an iterative Berlekamp table.
7. A method for Reed-Solomon (RS) decoding comprising the steps of: receiving a codeword block represented by a codeword polynomial R(x) encoded using a RS code (n,k,t) and a generating polynomial of the form g(x)= (x+βr) (x+βr+1) (x+βr+2) ... (x+βr+2t-'), where n is a number of encoded codewords in the block, k is a number of information symbols, t is a number of correctable erroneous symbols, β is an element of a Galois field, r is the initial exponent for β, and each β is a root of g(x); computing a series of syndromes, each syndrome S, computed according to the expression R(βr+1) for i ranging from 0 to 2t-l; computing an error location polynomial using the computed syndromes Si; the error location polynomial represented by σ(x) = 1 + σ, x + σ2 x2 + ... + σv_, xv_1 + σvxv where v is the degree of the error location polynomial and v < t; determining error symbol locations by evaluating the error location polynomial σ(x) for each element β1 for i ranging from 0 to n-1 ; and determining an error pattern for each error symbol by 1) computing an error evaluator polynomial represented by Z(x) = 1 + (S0 + σ,) x + (S, + S0Ό, + σ2)x2+ ... + (Sv.! + Sv_2-σ, + Sv.3- σ2+ ... +S0-σv_, + σv)xv where σlj2> ...v are coefficients of the error location polynomial σ(x) and S0ιl)2ι..,v are the computed syndromes and 2) computing the error pattern at each error symbol location according to the expression: ejy = β-Jy(r-i) . Z(β-Jy) / πv1,1,y(l+ βji-jy) where jy is a particular error location for which the error pattern is being determined and Z(β"jy) is the value of the error evaluator polynomial Z(x) evaluated with x = β~Jy.
8. The method of Claim 7 further comprising correcting errors in each error symbol according to the determined error patterns.
9. The method of Claim 7 wherein the step of determining the error location polynomial includes iterating a modified Berlekamp table.
PCT/US1999/005493 1998-03-12 1999-03-12 Universal reed-solomon coder-decoder WO1999045911A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU31852/99A AU3185299A (en) 1998-03-12 1999-03-12 Universal reed-solomon coder-decoder

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US7774098P 1998-03-12 1998-03-12
US60/077,740 1998-03-12

Publications (4)

Publication Number Publication Date
WO1999045911A2 true WO1999045911A2 (en) 1999-09-16
WO1999045911A9 WO1999045911A9 (en) 2000-01-20
WO1999045911A3 WO1999045911A3 (en) 2000-04-06
WO1999045911A8 WO1999045911A8 (en) 2000-05-18

Family

ID=22139792

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1999/005493 WO1999045911A2 (en) 1998-03-12 1999-03-12 Universal reed-solomon coder-decoder

Country Status (2)

Country Link
AU (1) AU3185299A (en)
WO (1) WO1999045911A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1017177A1 (en) * 1998-12-30 2000-07-05 Texas Instruments Incorporated Configurable Reed-Solomon encoder/decoder

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1989002123A1 (en) * 1987-08-24 1989-03-09 Digital Equipment Corporation High bandwidth reed-solomon encoding, decoding and error correcting circuit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1989002123A1 (en) * 1987-08-24 1989-03-09 Digital Equipment Corporation High bandwidth reed-solomon encoding, decoding and error correcting circuit

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BLAHUT R.E.: "Theory and practice of error control codes" 1983 , ADDISON-WESLEY PUBLISHING COMPANY , ENGLAND XP002130500 page 184, paragraph 7.5.2 *
INTERLANDO J C ET AL: "On the decoding of Reed-Solomon and BCH codes over integer residue rings" IEEE TRANSACTIONS ON INFORMATION THEORY, MAY 1997, IEEE, USA, vol. 43, no. 3, pages 1013-1021, XP002130499 ISSN: 0018-9448 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1017177A1 (en) * 1998-12-30 2000-07-05 Texas Instruments Incorporated Configurable Reed-Solomon encoder/decoder
US6385751B1 (en) 1998-12-30 2002-05-07 Texas Instruments Incorporated Programmable, reconfigurable DSP implementation of a Reed-Solomon encoder/decoder

Also Published As

Publication number Publication date
WO1999045911A3 (en) 2000-04-06
WO1999045911A9 (en) 2000-01-20
AU3185299A (en) 1999-09-27
WO1999045911A8 (en) 2000-05-18

Similar Documents

Publication Publication Date Title
EP1131893B1 (en) Forward error corrector
Be'ery et al. Optimal soft decision block decoders based on fast Hadamard transform
US8176396B2 (en) System and method for implementing a Reed Solomon multiplication section from exclusive-OR logic
US7788570B1 (en) Optimized Reed-Solomon decoder
US20050172208A1 (en) Forward Chien search type Reed-Solomon decoder circuit
US20060236212A1 (en) High speed hardware implementation of modified reed-solomon decoder
EP0233075B1 (en) Method and apparatus for generating error detection check bytes for a data record
CN110071727B (en) Encoding method, decoding method, error correction method and device
RU2310273C2 (en) Method for encoding/decoding information in data transmission networks
US5936978A (en) Shortened fire code error-trapping decoding method and apparatus
US5889792A (en) Method and apparatus for generating syndromes associated with a block of data that employs re-encoding the block of data
US8631307B2 (en) Method for encoding and/or decoding multimensional and a system comprising such method
CN114731166A (en) Space coupling FEC coding method and equipment for component code using GEL code
EP1102406A2 (en) Apparatus and method for decoding digital data
Potey et al. Error Detection and Correction Capability for BCH Encoder using VHDL
US20010037483A1 (en) Error correction structures and methods
US8527851B2 (en) System and method for using the universal multipole for the implementation of a configurable binary Bose-Chaudhuri-Hocquenghem (BCH) encoder with variable number of errors
US20060227017A1 (en) Information encoding by shortened reed-solomon codes
WO1999045911A2 (en) Universal reed-solomon coder-decoder
US7734991B1 (en) Method of encoding signals with binary codes
Khan et al. Hardware implementation of shortened (48, 38) Reed Solomon forward error correcting code
KR100192802B1 (en) Apparatus for calculating error-value and for correcting error in reed-solomon decoder
WO2009069087A1 (en) Apparatus and method for decoding concatenated error correction codes
Nabipour et al. Error Detection Mechanism Based on Bch Decoder and Root Finding of Polynomial Over Finite Fields
Elumalai et al. Encoder And Decoder For (15113) and (63394) Binary BCH Code With Multiple Error Correction

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
AK Designated states

Kind code of ref document: C2

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: C2

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

COP Corrected version of pamphlet

Free format text: PAGES 1/5-5/5, DRAWINGS, REPLACED BY NEW PAGES 1/5-5/5; DUE TO LATE TRANSMISSION BY THE RECEIVING OFFICE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

AK Designated states

Kind code of ref document: C1

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: C1

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

WR Later publication of a revised version of an international search report
NENP Non-entry into the national phase

Ref country code: KR

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase