ECEN 5682 Theory and Practice of Error Control Codes Cyclic Codes - - PowerPoint PPT Presentation

ecen 5682 theory and practice of error control codes
SMART_READER_LITE
LIVE PREVIEW

ECEN 5682 Theory and Practice of Error Control Codes Cyclic Codes - - PowerPoint PPT Presentation

Cyclic Codes ECEN 5682 Theory and Practice of Error Control Codes Cyclic Codes Peter Mathys University of Colorado Spring 2007 Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes Cyclic Codes, Basic Definitions Cyclic Codes


slide-1
SLIDE 1

Cyclic Codes

ECEN 5682 Theory and Practice of Error Control Codes

Cyclic Codes Peter Mathys

University of Colorado

Spring 2007

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-2
SLIDE 2

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Cyclic Codes

Linear cyclic codes have a lot of structure that can be exploited for highly efficient encoder and decoder implementations. The class of linear cyclic codes includes BCH (Bose-Chaudhuri-Hocquenghem) codes, RS (Reed-Solomon) codes, and the Golay codes. It also includes CRC (cyclic redundancy check) error detection codes which are widely used in data communications and data storage. Definition: A q-ary linear (n, k) blockcode C is called a cyclic code if every cyclic shift of a codeword in C is also a codeword in C. Note: It is possible to define and construct non-linear codes with the property that every cyclic shift of a codeword is another

  • codeword. However, these codes have less structure and are hardly

used in practice.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-3
SLIDE 3

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Example: Let c = (c0, c1, . . . , cn−1) be a codeword of C. If C is a cyclic code, then the cyclic shift to the right by one place of c, denoted c(1), and defined by c(1) = (cn−1, c0, c1, . . . , cn−2) , must also be in C. Repeated application yields the codeword cyclically shifted to the right by i places c(i) = (cn−i, cn−i+1, . . . , cn−1, c0, c1, . . . , cn−i−1) , which must also be in C. Note that a cyclic shift to the right by i places is equivalent to a cyclic shift to the left by n − i places. Note: A cyclic right shift of a codeword c over F by i places corresponds to multiplying the corresponding code polynomial c(x) by xi in the quotient ring F[x]/(xn − 1), i.e., c(i) ← → Rxn−1(xi c(x)) .

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-4
SLIDE 4

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Theorem: The monic nonzero code polynomial of minimum degree in a linear cyclic code C is unique. Proof: Suppose g(x) = xr + gr−1 xr−1 + . . . + g0 and g′(x) = xr + g′

r−1 xr−1 + . . . + g′ 0 are both such monic nonzero

code polynomials of minimum degree. Because the code is linear, g(x) − g′(x) = (gr−1 − g′

r−1) xr−1 + . . . + (g0 − g′ 0) must also be a

  • codeword. Since it has degree at most r − 1, this contradicts the

statement that g(x) and g′(x) are nonzero code polynomials of smallest degree, unless g(x) = g′(x). QED Definition: The unique monic nonzero code polynomial of minimum degree in a linear cyclic code C is denoted by g(x) and called the generator polynomial of C.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-5
SLIDE 5

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Theorem: Let g(x) be the generator polynomial of a linear cyclic code C of blocklength n and assume deg g(x) = r < n. Then a polynomial c(x) with deg c(x) < n is a code polynomial iff it is a multiple of g(x), i.e., iff c(x) = a(x) g(x), where deg a(x) < n − r. Proof: Suppose c(x) is a multiple of g(x). Then c(x) = a(x) g(x) = (an−r−1 xn−r−1 + . . . + a1 x + a0) g(x) = an−r−1 xn−r−1g(x) + . . . + a1 xg(x) + a0 g(x) , i.e., c(x) is a linear combination of the code polynomials g(x), xg(x), . . . , xn−r−1g(x), and thus c(x) ∈ C. Now suppose that c(x) ∈ C. Use the division algorithm to write that c(x) = a(x) g(x) + r(x), with deg r(x) < deg g(x). Thus r(x) = c(x) − a(x) g(x). But both c(x) ∈ C and a(x) g(x) ∈ C which implies that r(x) ∈ C since C is linear. This is a contradiction to the fact that g(x) is the smallest degree nonzero code polynomial in C, unless r(x) = 0. Thus c(x) = a(x) g(x). QED

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-6
SLIDE 6

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Corollary: Let g(x) be the generator polynomial of a linear cyclic (n, k) code C. Then deg g(x) = n − k. Proof: Follows immediately from above theorem. Theorem: A linear cyclic code C of blocklength n with generator polynomial g(x) exists iff g(x) | (xn − 1). Proof: Using the division algorithm, write xn−1=h(x) g(x)+r(x), with deg r(x) < deg g(x). Then 0=Rxn−1(xn−1)=Rxn−1(h(x) g(x)+r(x))=Rxn−1(h(x) g(x))+r(x), which implies r(x) = −Rxn−1(h(x) g(x)). That is, r(x) is a code polynomial with degree less than deg g(x) and the only such code polynomial is r(x) = 0. Therefore g(x) | (xn − 1). Since every polynomial that divides xn−1 can be used as a generator polynomial, this completes the proof. QED

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-7
SLIDE 7

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Definition: The polynomial h(x) in xn − 1 = h(x) g(x), where g(x) is a generator polynomial, is called parity-check polynomial. Note: The above theorem asserts that any factor of xn − 1 over GF(q) with degree n − k generates a q-ary linear cyclic (n, k)

  • code. However, not all such factors generate good (i.e., large dmin)

codes. Any code polynomial c(x) of a linear cyclic (n, k) code C can be written as c(x) = a(x) g(x), deg a(x) < k, where g(x) is the generator polynomial of C and deg g(x) = n − k. This polynomial multiplication can be expressed in vector-matrix form as c(x) =

  • a0

a1 · · · ak−1

    g(x) x g(x) . . . xk−1 g(x)      .

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-8
SLIDE 8

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Setting c = (c0, c1, . . . , cn−1) and a = (a0, a1, . . . , ak−1), a codeword c can thus be written as c = a G, where the generator matrix G is given by G =        g0 g1 · · · gn−k g0 g1 · · · gn−k ... ... ... ... g0 g1 · · · gn−k g0 g1 · · · gn−k        . Next, recall that g(x) | (xn − 1) and that xn − 1 = g(x) h(x), where h(x) is the parity-check polynomial of C. This leads to the following theorem.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-9
SLIDE 9

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Theorem: Let C be a linear cyclic (n, k) code with parity-check polynomial h(x) = k

i=0 hi xi. Then the parity check matrix H of

C is given by H =        hk hk−1 · · · h0 hk hk−1 · · · h0 ... ... ... ... hk hk−1 · · · h0 hk hk−1 · · · h0        . Proof: It needs to be shown that G HT = 0. Define vm = m

i=0 hi gm−i. Then

G HT =      vk vk+1 · · · vn−1 vk−1 vk · · · vn−2 . . . . . . . . . v1 v2 · · · vn−k      .

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-10
SLIDE 10

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

But

g(x) h(x) =

n−k

X

i=0

gi xi

k

X

j=0

hj xj =

n−k

X

i=0 k

X

j=0

gihj xi+j =

n

X

m=0 m

X

j=0

hjgm−j xm =

n

X

m=0

vm xm = xn − 1 .

The last equality implies that vm = 0 for 0 < m < n and thus G HT = 0 as claimed. QED Note that the top row of H can be expressed in polynomial notation as ˜ h(x) = xk h(x−1) = h0xk + h1xk−1 + . . . + hk . Since H is the generator matrix of the dual code, it is not difficult to prove the following Theorem: Let C be a linear cyclic (n, k) code with generator polynomial g(x). Then the dual code C⊥ is cyclic as well and is generated by ˜ h(x) = xk h(x−1), where h(x) = (xn − 1)/g(x). Proof: Left as an exercise.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-11
SLIDE 11

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

It is often convenient to use a systematic encoder. Computing c(x) = u(x) g(x), where u(x) is the information polynomial, will in general not yield c(x) in systematic form. However, the following encoding rule will ensure systematic codewords of the form c = (b0, b1, . . . , bn−k−1, u0, u1, . . . , uk−1). Systematic encoding rule: Multiply the information polynomial u(x) by xn−k and add b(x) = n−k−1

i=0

bi xi such that c(x) = xn−k u(x) + b(x) is divisible by g(x), i.e., such that Rg(x)[c(x)] = Rg(x)[xn−k u(x)+b(x)] = Rg(x)[xn−k u(x)]+b(x) = 0. This requires that b(x) = −Rg(x)[xn−k u(x)] . Note that the systematic encoding rule produces exactly the same set of codewords as any nonsystematic encoding rule. The only difference is that the mapping from u(x) to c(x) is different.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-12
SLIDE 12

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Definition: Let c(x) be a code polynomial and let v(x) be a received (possibly corrupted) code polynomial. Then e(x) = v(x) − c(x) is called the error polynomial. It has nonzero coefficients in those locations where channel errors occured.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-13
SLIDE 13

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Construction of BCH and RS Codes

BCH (Bose-Chaudhuri-Hocquenghem) codes and RS (Reed-Solomon) codes are two large classes of cyclic multiple error correcting codes that are used in many practical applications. For small to moderate blocklengths (up to a few thousand symbols) both classes of codes contain good codes (but usually not the best codes known). The main reason for the popularity of the BCH and RS codes is the (relative) ease with which they can be generated and decoded (mostly processing hard decisions) using shift register circuits.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-14
SLIDE 14

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Definition: Given q, m ≥ 1, and n such that n | (qm − 1), let β ∈ GF(qm) be any primitive n-th root of unity. Then, for any integer h, the corresponding BCH code of designed minimum distance d is the cyclic code of blocklength n with symbols in GF(q) with generator polynomial g(x) = lcm {fh(x), fh+1(x), . . . , fh+d−2(x)} , where fj(x) is the minimal polynomial over GF(q) of βj. That is, g(x) has the following d − 1 consecutive powers of β as roots

  • βh, βh+1, . . . , βh+d−2

. Note that g(x) usually has more roots than the ones shown above. Often h = 1 is selected and then the resulting code is called a narrow-sense BCH code. If n = qm − 1, then the BCH code is called a primitive BCH code.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-15
SLIDE 15

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Note: In general k (the number of information symbols) is only known after the lcm (least common multiple) operation is performed. Theorem: BCH bound. The BCH codes as defined above satisfy dmin ≥ designed minimum distance d . Proof: Will be given later. Example: Binary n = 15, d = 7 (designed minimum distance) BCH code. Since 24 − 1 = 15 = n, choose β = α, where α ∈ GF (24) is a primitive element (with order 15). Setting h = 1 and using d = 7, a generator polynomial is needed that has the following 6 consecutive powers of α as roots: {α1, α2, α3, α4, α5, α6} .

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-16
SLIDE 16

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

To make sure that g(x) has all its coefficients in GF (2) use g(x) = lcm{f1(x), f2(x), f3(x), f4(x), f5(x), f6(x)} = f1(x) f3(x) f5(x), where f1(x) = minimal polynomial of {α1, α2, α4, α8} , f3(x) = minimal polynomial of {α3, α6, α12, α9} , f5(x) = minimal polynomial of {α5, α10} . Since deg [f1(x)] = deg [f3(x)] = 4 and deg [f5(x)] = 2, deg [g(x)] = n − k = 4 + 4 + 2 = 10 and thus k = 5. To actually compute g(x), the elements of GF (24) have to be

  • generated. Using the primitive polynomial p(x) = x4 + x + 1, the

following elements and minimal polynomials are obtained:

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-17
SLIDE 17

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Element α3 α2 α1 α0 Order Minimal Polynomial α0 0 0 0 1 1 x + 1 α1 0 0 1 0 15 x4 + x + 1 α2 0 1 0 0 15 x4 + x + 1 α3 1 0 0 0 5 x4 + x3 + x2 + x + 1 α4 0 0 1 1 15 x4 + x + 1 α5 0 1 1 0 3 x2 + x + 1 α6 1 1 0 0 5 x4 + x3 + x2 + x + 1 α7 1 0 1 1 15 x4 + x3 + 1 α8 0 1 0 1 15 x4 + x + 1 α9 1 0 1 0 5 x4 + x3 + x2 + x + 1 α10 0 1 1 1 3 x2 + x + 1 α11 1 1 1 0 15 x4 + x3 + 1 α12 1 1 1 1 5 x4 + x3 + x2 + x + 1 α13 1 1 0 1 15 x4 + x3 + 1 α14 1 0 0 1 15 x4 + x3 + 1

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-18
SLIDE 18

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

The generator polynomial can now be written as g(x) = (1 + x + x4)(1 + x + x2 + x3 + x4)(1 + x + x2) = 1 + x + x2 + x4 + x5 + x8 + x10 . The generator matrix for this binary (15, 5, 7) BCH code is G =       1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1       . To encode the message polynomial u(x) = 1 + x2 + x3, for example, one can either compute c(x) = u(x)g(x), or c = u G, where u = (1011). The result is c(x) = 1+x+x4+x6+x11+x12+x13 ↔ c = (110010100001110).

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-19
SLIDE 19

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Example: Shortened binary n = 14, d = 7 BCH code. Start from the (15, 5, 7) code given above with generator polynomial g(x) = 1 + x + x2 + x4 + x5 + x8 + x10 . But now restrict the message polynomial u(x) to have degree less than or equal to 3 so that c(x) = u(x)g(x) will always have deg[c(x)] ≤ 13 (and thus n = 14). The generator matrix of this shortened binary (14, 4, 7) BCH code is G =     1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1     , i.e., the same as before, but with the last column and the last row

  • deleted. Note that shortened BCH codes are not cyclic codes

anymore in general, but they can be encoded and decoded as if they were cyclic codes.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-20
SLIDE 20

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

RS codes can be viewed as a subset of the BCH codes and defined as follows. Definition: For RS codes use the same construction as for BCH codes, but set m = 1. Thus, β ∈ GF(q) and the codewords are

  • ver GF(q).

Note: For RS codes fj(x) and βj are both over the same field and thus fj(x) = x − βj. Therefore, for RS codes, g(x) = (x − βh) (x − βh+1) · · · (x − βh+d−2) . This implies, deg g(x) = n − k = d − 1 from which k = n − d + 1

  • follows. Often h = 1 is chosen.

Theorem: RS codes as defined above satisfy dmin = designed minimum distance d .

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-21
SLIDE 21

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Proof: From the BCH bound dmin ≥ d. But for RS codes d = n − k + 1 and the Singleton bound states that for any linear code dmin ≤ n − k + 1. QED Corollary: RS codes are MDS codes. Note: Shortened RS codes (n and k reduced by the same amounts) and punctured RS codes (n and r = n − k reduced by the same amounts) are also MDS codes, but they are no longer cyclic codes. Example: RS code over GF(24) with blocklength n = 15 and minimum distance dmin = 5. Set β = α, where α ∈ GF(24) is a primitive element. Then, setting h = 1, compute the generator polynomial as (based on generating GF(24) using the primitive polynomial x4 + x + 1)

g(x) = (x − β) (x − β2) (x − β3) (x − β4) = x4 + α13 x3 + α6 x2 + α3 x + α10 .

The resulting code is a (15, 11, 5) RS code over GF(24).

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-22
SLIDE 22

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Decoding of BCH and RS Codes

One of the key features of BCH and RS codes is that they are quite easy to decode (up to the designed minumum distance d and using hard decisions from the channel output). Let c(x) = c0 + c1 x + . . . + cn−1 xn−1 , transmitted codeword, e(x) = e0 + e1 x + . . . + en−1 xn−1 , error pattern, v(x) = v0 + v1 x + . . . + vn−1 xn−1 , received codeword, and assume v(x) = c(x) + e(x). Suppose that the error pattern contains ν errors at locations ℓ1, ℓ2, . . . , ℓν, with 0 ≤ ℓj < n. Thus e(x) = eℓ1 xℓ1 + eℓ2 xℓ2 + . . . + eℓν xℓν , where eℓj are the error values. Note that initially ℓj, eℓj, and ν are unknown.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-23
SLIDE 23

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

The first step towards determining ℓj, eℓj, and ν is to compute the syndromes of the error pattern. Definition: For an arbitrary cyclic code C of length n over GF(q) whose generator polynomial g(x) has zeros γ1, γ2, . . . , γr, γi ∈ GF(qm), the syndromes Si ∈ GF(qm) are defined by Si = v(γi) = c(γi) = 0 +e(γi) =

n−1

  • j=0

ej γj

i ,

i = 1, 2, . . . , r . To simplify the notation for BCH and RS codes, assume that the generator polynomial g(x) has 2t consecutive roots β1, β2, . . . , β2t, where ord(β) = n. This corresponds to a cyclic t-error correcting code of designed minimum distance 2t + 1 with parameter h = 1. In this case the syndromes are Si = v(βi) = e(βi) = eℓ1 βiℓ1+eℓ2 βiℓ2+. . .+eℓν βiℓν , 1 ≤ i ≤ 2t.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-24
SLIDE 24

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Note: Si are the frequency components (GDFT coefficients) of the error vector. Definition: To obtain a more concise notation, define Xj = βℓj , j = 1, 2, . . . , ν , error locators, Yj = eℓj , j = 1, 2, . . . , ν , error values. Note: Since β is a primitive n-th root of unity, all error locators are distinct. With this notation, the syndromes become Si = v(βi) = Y1 X i

1 + Y2 X i 2 + . . . + Yν X i ν ,

for i = 1, 2, . . . , 2t and 0 ≤ ν ≤ t. This is a set of 2t (nonlinear) equations in the unknowns X1, . . . , Xν, Y1, . . . , Yν, ν . If ν ≤ t, then a unique solution exists. However, the original set of nonlinear equations is too difficult to solve directly.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-25
SLIDE 25

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Definition: Define the error locator polynomial σ(z) as σ(z) = (1 − X1z)(1 − X2z) · · · (1 − Xνz) = σ0 + σ1 z + . . . + σν zν , σ0 = 1 . Note: The roots of σ(z) are X −1

j

, 1 ≤ j ≤ ν, i.e., the inverses of the error locators Xj. Clearly, if σ0, σ1, . . . , σν are known, then the zeros of σ(z) and thus the error locators Xj can be found. The coefficients σi and the error locators Xj are related by the following equations (the σi are known as elementary symmetric functions of the Xj) σ0 = 1 , σ1 = −(X1 + X2 + . . . + Xν) , σ2 = X1 X2 + X1 X3 + . . . + Xν−1 Xν , . . . σν = (−1)ν X1 X2 · · · Xν .

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-26
SLIDE 26

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Theorem: Generalized Newton Identities. For all integers µ, the syndromes Si satisfy the recurrence Sµ+ν + σ1 Sµ+ν−1 + . . . + σν Sµ = 0 . In particular, for µ = 1, 2, . . . , ν ,      Sν Sν−1 . . . S1 Sν+1 Sν . . . S2 . . . . . . . . . S2ν−1 S2ν−2 . . . Sν           σ1 σ2 . . . σν      =      −Sν+1 −Sν+2 . . . −S2ν      .

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-27
SLIDE 27

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

Theorem: The matrix of syndromes Sm =      Sm Sm−1 . . . S1 Sm+1 Sm . . . S2 . . . . . . . . . S2m−1 S2m−2 . . . Sm      , is invertible if m = ν ≤ t and it is singular if ν < m ≤ t, where ν is the actual number of errors in the received codeword v(x). Thus, one strategy to find the actual number ν of errors in a received codeword is to compute det(Sm) for m = t, t − 1, t − 2, etc, until the value of det(Sm) becomes zero for the first time. Once ν is known, then S−1

ν

can be computed and the result used to find the coefficients σ1, σ2, . . . , σν of the error locator polynomial σ(z). This procedure is known as the Peterson-Gorenstein-Zierler (PGZ) decoder.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-28
SLIDE 28

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

A more elegant and efficient procedure, known as the Berlekamp-Massey (BM) algorithm uses the generalized Newton identities as the basis for synthesizing a linear feedback shift register (LFSR) circuit that finds both ν and σ1, σ2, . . . , σν. Once σ(z) is known (either from the PGZ decoder or the BM algorithm), the next step is to find the roots of σ(z), which are the inverse error locators X −1

j

= β−ℓj. For polynomials of degree 5 or more, no general closed-form solution method exists for finding the

  • roots. The most common procedure, known as Chien search, is to

set z = β0, β−1, . . . , β−(n−1) and successively try whether any of them is a root of σ(z). In practice this is not quite as inefficient as it sounds initially, because BCH and RS codes are often decoded sequentially, symbol by symbol, and thus one root trial operation is performed for each decoded code symbol.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes

slide-29
SLIDE 29

Cyclic Codes Cyclic Codes, Basic Definitions BCH and RS Codes

After σ(z) and its roots are found, decoding is complete in the case of binary codewords, because all error values in the error locations will be one. For non-binary BCH codes and RS codes, however, the error values Yj = eℓj still need to be determined. The definition of the syndromes can be used to write      S1 S2 . . . Sν      =      X 1

1

X 1

2

. . . X 1

ν

X 2

1

X 2

2

. . . X 2

ν

. . . . . . . . . X ν

1

X ν

2

. . . X ν

ν

          Y1 Y2 . . . Yν      . The matrix on the right-hand side is a Vandermonde matrix and thus can be inverted, if ν and the Xj are known, to obtain the Yj.

Peter Mathys ECEN 5682 Theory and Practice of Error Control Codes