Sie sind auf Seite 1von 8

Polynomial Codes and BCH Codes

Alvin Dizon, Harold Jeff Espineda, Joseph Jimenez


Department of Electronics, Communications and Computer Engineering, Ateneo de Manila University
Abstract This paper aims to give students an introduction to polynomial codes and Bose-Chaudhuri-Hocquenghem (BCH) codes. The readers must be able to learn the definition, encoding, and decoding process for polynomial and BCH codes from the discussion in this paper.

II. POLYNOMIAL CODES A. Definition of Polynomial Codes The polynomial code generated by a generator polynomial g(x) is an (n,k) code whose code words are polynomials with degree less than n, and are divisible by g(x) [3]. A valid code word c(x), is divisible by the generator polynomial g(x) which has a degree n-k. Remember that all valid code words are multiples of the generator polynomial. Polynomial codes are a convenient way of representing binary streams. Polynomials defined over a Galois field of GF(2) with coefficients of 1 and 0 can be easily converted to binary streams. Finally, polynomials allow for a form of errorcorrection [4]. B. Encoding of Polynomial Codes First, a message of length k is represented by the polynomial m(x). This message m(x) is multiplied by xn-k, which has the effect of shifting the message n k places to the left, or appending n k zeroes to the right of the binary form of m(x). This step is done so that the higher-order coefficients in a code word carry the message digits [3]. We then divide m(x)xn-k by the generator polynomial g(x),and get the remainder r(x). This remainder r(x) will be added to m(x)xn-k, which gives the codeword c(x):

I. REVIEW OF POLYNOMIALS A. Definition of Polynomials We will first discuss the definition of polynomials and some theorems regarding polynomials. In this section we will review the definition of a polynomial, alongside the terms and concepts associated with it. A polynomial f(x) is a mathematical expression [1] having the form Here we see that polynomials have coefficients a0 up to an, multiplied by variables having powers zero to n. A polynomials degree n is denoted by the variable with the highest power. Note that the preceding equation follows the decreasing notation, which means that the variables are listed from the highest power to the lowest. B. Division Algorithm Given polynomials a(x) and b(x), and polynomial b(x) is nonzero, then dividing a(x) by b(x) can be shown as Where q(x) is the quotient polynomial and r (x) refers to the remainder polynomial. The remainder r(x) has a degree that is either equal to zero or is less than the degree of the divisor b(x). This relation is also known as the division algorithm. C. Irreducible and Primitive Polynomials In cases where a polynomial is not divisible by other polynomials other than itself or 1, that polynomial is called irreducible. It can also be said that irreducible polynomials cannot be expressed as a product of two polynomials g(x) and h(x) [2], such that A primitive polynomial is a polynomial that is monic, irreducible and can divide a polynomial xn + 1 where n = 2m 1 without leaving a remainder. It also cannot divide a polynomial xt + 1 where t is less than n, or 0<t<n. The primitive polynomial is used to construct an extension field of a Galois field.

For example, with a (7,3) code and a generator polynomial g(x) = x4 + x3 + x2+ 1, we will try to encode a message m(x) = x2 + 1 or in binary form, 101. We then multiply m(x) with xn-k, in this case x7-3 = x4. Thus m(x)xn-k is equal to (x2 + 1)(x4) = x6 + x4. An easier way to do this would be to take the binary form of the message, and append n k zeroes to the right of the message. In this example, our message in binary form is 101. We add 7 3 = 4 zeroes to the right of 101, and we get 1010000. We then modulo divide m(x)xn-k with g(x) to obtain the remainder r(x). x2 + x + 1 x4 + x3 + x2+ 1 x6 + 0x5 + x4 + 0x3 + 0x2 + 0x1 + 0 x6 + x5 + x4 x5 + 0x4 + 0x3 + 0x2 + 0x1 + 0 x5 + x4 + 0x3 + 0x2 + x1 + 0

x4 + x3 + x2 + x1 + 0 x4 + x3 + x2 + 0x1 + 1 x +1 Thus r(x) is equal to x + 1, or in binary form, 011. To finally obtain the code word c(x), we add r(x) to m(x)xn-k. The code word is given as c(x) = m(x)xn-k + r(x) = x6 + x4 + x + 1. The binary form of c(x) is 1010011. Note that the n k lowest order coefficients are the check digits, and the k highest order coefficients are the message digits.

discovered it on 1959, and Bose and Chaudhuri, who discovered it independently on 1960. The researchers who developed this code only defined the parameters of the BCH code, not the decoding algorithms. The decoding algorithms were explored by other researchers later on. We now define the BCH codes as follows: for any positive integers m 3 and t < 2m-1 , there exists a binary BCH code with the following parameters [5]: Block length : Number of parity check digits : Minimum distance: n = 2m - 1 n k mt dmin 2t + 1

C. Decoding of Polynomial Codes Earlier, we said that a valid code word is a multiple of the generator polynomial. Thus, a received message can be checked for errors by testing if it is divisible by the generator polynomial g(x). If the remainder is nonzero when the received polynomial y(x) is divided by g(x), an error has occurred during transmission. If the remainder is zero, the received polynomial y(x) is a valid code word, and either no error has occurred or an undetectable error has occurred [3]. For example, if g(x) = x3 + x + 1, we shall test whether the received code words x5 + x4 + 1 and x4 + x3 + 1 are valid code words. We first try x5 + x4 + 1: x2 + x + 1 x3 + x+ 1 x5 + x4 + 0x3 + 0x2 + 0x1 + 1 x + 0x + x + x
5 4 3 2

This code can correct t or fewer random errors over a span of 2m -1 bit positions. Thus, the code is a t-error correcting code. For example, given m = 6, and t = 3, we have a block length n = 26-1 = 63. The maximum number of parity check digits is 18. The minimum distance should be 7, and the number of information bits should be greater than or equal to 18. The code we have just defined is a triple error-correcting (63,45) BCH code. B. Encoding of BCH codes The encoding process of BCH codes requires first the knowledge of constructing the extension field, and solving for the minimal polynomials. Given a Galois Field of 2m or GF (2m), where m indicates the degree of the extension field, to construct for its extension field, the primitive polynomial must first be chosen from the primitive polynomials generated by the degree of the extension field. The extension field contains , 2 (2^m)-2 as its elements by substituting for x in the primitive polynomial used. For example, m = 4 and the primitive polynomial, p(x), chosen is x4 + x3 + 1. We will have the extension field indicated by the table below. Elements 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Polynomial Representation 0 1 2 3 3 +1 3 + + 1 3 + 2 + + 1 2 + + 1 3 + 2 + 2 + 1 3 + 3 + 2 + 1 +1 2 + 3 + 2 4-Tuple 0000 0001 0010 0100 1000 1001 1011 1111 0111 1110 0101 1010 1101 0011 0110 1100

x4 + x3 + x2 + 0x1 + 1 x4 + 0x3 + x2 + x1 + 0 x3 + 0x2 + x1 + 1 x3 + 0x2 + x1+ 1 0 There is no remainder, thus x5 + x4 + 1 is a valid codeword. Next, we test x4 + x3 + 1: x+1 x3 + x+ 1 x4 + x3 + 0x2 + 0x1 + 1 x4 + 0x3 + x2 + x1 x3 + x2+ x1 + 1 x3 + 0x2+ x1 + 1 x2 We have a remainder, thus x5 + x4 + 1 is not a valid code word. III. BCH CODES A. Definition of BCH Codes BCH Codes constitute an extensive class of cyclic errorcorrecting codes [5]. They are named after Hocquenghem, who

To solve for the minimal polynomials, find the conjugates of the elements or in other terms, find the elements that belong to the same cyclotomic cosets. The conjugates are expressed as (2`^l), where l = 0, 1, 2, The minimal polynomials are computed by multiplying the conjugates in the form of (x - ). Using the extension field above, the minimal polynomials are given below. Elements , 2, , 4, , 8 3, , 6, , 9 , 12 5 , 10 7, , 11, , 13 , 14 Minimal Polynomials x4 + x3 + 1 x4 + x3 + x2 + x + 1 x2 + x + 1 x4 + x + 1

of m(x), m(x)*xn-k = 100 0001 0000 0000. Using g(x) constructed from the extension field, GF(24), and from the chosen primitive polynomial, p(x) = x4 + x3 + 1, m(x)*xn-k is modulo divided by g(x) to get r(x), where g(x) = x8 + x4 + x2 +x + 1, or in binary form, 1 0001 0111. Hence, r(x) = 10011100 since the degree of r(x), which is 7, should be less than the divisor, g(x), which is 8. To get the codeword, r(x) is added m(x)*xn-k, which gives c(x) = 100000110011100. C. Decoding of BCH codes BCH Decoding involves three steps: Syndrome computation Determination of the error pattern Error correction Before discussing these steps, some concepts and equations that will be used in the decoding process will be first discussed. Since the codeword c(x) is a multiple of the generator polynomial, and that the generator polynomial is a multiple of minimal polynomial(s), and , 2 2t are the roots of the minimal polynomial(s), if we substitute these roots to c(x), well get: c(i) = c0 + c1(i)1 + c2(i)2 + + cn-1(i)n-1 = 0 (Eq. 2) (1 i 2t)

The first step in the encoding process of BCH codes is constructing the generator polynomial, g(x), by using the minimal polynomials. A t-error correcting BCH code of length n = 2m-1 has g(x), which is constructed by taking the primitive element, , in the extension field. g(x) is defined to have roots , 2, , 2t. g(x) is defined by the equation, g(x) = LCM{1(x), 2(x),, 2t(x)} Eq. 1 where i(x) is the minimal polynomial of the element, i. The simplified equation is given by g(x) = LCM{1(x), 3(x),, 2t-1(x)} because the conjugates form the same minimal polynomial and by LCM (least common multiple), similar factors of the same minimal polynomials are just the same multiples. To put it simply, generally, every even power of in GF(2m) has the same minimal polynomial of some preceding odd power of in GF(2m). For example, for a 2-error correcting BCH code, by apply Eq. , g(x) = LCM{1(x), 2(x), 3(x), 4(x)}. Since 1(x), 2(x), and 4(x) are of the same minimal polynomial, the simplified g(x) = 1(x) 3(x). Using the extension field above, by substituting the values of the minimal polynomial, g(x) = (x4 + x3 + 1) (x4 + x3 + x2 + x + 1). Simplifying this, g(x) = x8 + x4 + x2 +x + 1. The second step is getting the product of m(x) and xn-k, where m(x) is the polynomial form of the message with length k and n is the length of the codeword. Multiplying m(x) with xn-k has the same effect of shifting the message n k bit places to the left, or appending n k zeroes to the right of the binary form of m(x). The third step is modulo dividing m(x)*x by the generator polynomial, g(x) and getting the remainder r(x). The last step is adding r(x) to m(x)*xn-k, which will result to the codeword, c(x). Hence, the codeword has an equation: c(x) = m(x)*xn-k + r(x). For example, we have a (15, 7), 2-error correcting BCH code, where n = 15, k = 7, and t = 2. We have the message, m(x) = x6 + 1 or in binary form, 1000001 and xn-k = x8 or in binary form, 1 0000 0000. Since multiplying m(x) and xn-k is the same as appending n-k zeroes to the right of the binary form
n-k

Eq. 2 can be expressed in matrix form as shown below: (i)0 (i)1 . c(i) = [c0 ,c1, c2 cn-1] . . (i)n-2 (i)n-1 =0

Hence, c HT = 0, wherein H = [(i)0(i)1...(i)n-2(i)n-1] for 1 i 2t (Eq. 3)

By expanding Eq. 3, we will get the parity matrix of the code:

To determine if there is an error in the received codeword, we will modulo divide the received codeword, y(x), by the generator polynomial, g(x). If no error exists, the remainder

should be zero, or y(x) mod g(x) = 0. If the remainder is not zero, error exists in the received codeword. Remember that in the encoding process, we divide m(x)xn-k by the generator polynomial g(x),and get the remainder r(x).To get the codeword, we add m(x)xn-k and r(x). c(x) = m(x)xn-k + r(x) = q(x)g(x) The received codeword has the formula: y(x) = c(x) + e(x) Expressing y(x) by the roots of the message code (,2,,2t) as y(i) (1 i 2t), we will get y(i) = c(i) + e(i). Since it was shown earlier that c(i) = 0, we can then simplify y( i) as y(i) = e(i). Since the received codeword y(x) may or may not contain errors, y(i) is not always equal to zero. We now define syndrome as s = yHT. We also define the kth component of the syndrome as sk= y(k) = e(k). This sk is the kth column of HT or the kth row of the H parity matrix. Now that we have the relation si= y(i), we can expand this to the polynomial form si = y(i) = y0 + y1i + y2(i)2 + + yn-1(i)(n-1). Since y(x) is equal to e(x), it follows that si = e(i) (Eqn. 5) Before we determine how to compute for the syndromes (s1, s2, etc.), Let us define Ri(x) to be: Ri(x) = y(x) mod i, where i is a minimal polynomial whose roots include i and its conjugates, or

Note: elements of the same Cyclotomic cosets have the same minimal polynomial resulting to same R(x). They only differ in the powers of alpha that will be substituted in the resulting R(x). Thus, we now have the syndrome components (s): s = (s1,s2, , s2t) Now that we are able to compute for the syndrome components, we now find a way to locate and correct the errors of the received polynomial. Let us suppose that the error pattern, e(x) has v errors at locations xj1, xj2,,xjv. That is: e(x) = xj1 + xj2 + + xjv (Eqn. 6) where 0 j1 < j2 < jv Note that the exponents of x are j 1, j2, until jv and not j1, j2, and jv. The numbers 1, 2 v are subscripts of j. We can then use Equations 5 and 6 to relate the error locator polynomial to the syndrome: S1 = j1 + j2 + + jv S2 = (2)j1 + (2)j2+ + (2) jv S3 = (3) j1 + (3) j2+ + (3) jv . . (Eqn. 7) . S2t = (2t) j1 + (2t) j2+ + (2t) jv Let l = jl (Eqn. 8) where 1 l v. Substituting Eqn. 8 to Eqn. 7, we get: S1 = 1 + 2 + + v S2 = (1 )2 + (2 )2+ + (v )2 S3 = (1 )3 + (2 )3+ + (v )3 . (Eqn. 9) . . S2t = (1 )2t + (2 )2t+ + (v )2t Note that these expressions of the syndrome are power sums These ls are considered error location numbers since they help us locate the location of the errors. Thus we now define the error locator polynomial as: (x) = (1 +1x)(1+2x)++(1+vx) = 0 + 1x + 2x2 + + vxv (Eqn. 10) where 0 = 1 This polynomial has 1-1, 2-1,, v-1 as its roots. If we can determine (x) from the syndrome s = (s1,s2, , s2t) , then the roots of (x) give us the error-location numbers. From Eqn. 10, we find the following relationship between the coefficients of (x) and the error-locator numbers 0 = 1

i = (x i)(x ii)(x iii) where i,ii, iii, etc.


are part of the same cyclotomic coset Lets see what happens if we divide y(x) with i:

or

y(x) = Q(x)i + Ri(x) Let us substitute i with its factors:


y(x) = [Q(x)][(x i)(x ii)(x iii)] + Ri(x) y(i) = [Q(i)][(i i)(i ii)(i iii)]+Ri(i)

Then, we will let x to be equal to i (x = i): Note that (i i) will equal zero, thus canceling the first term of the right hand side. Simplifying, we get: y(i) = Ri(i) And since we established earlier that si = y(i): si = Ri(i) We can now proceed to the steps for syndrome computation. Step 1: Divide the received codeword, y(x), by the minimal polynomials used in generating the generator polynomial, g (x). Let the minimal polynomials be 1,2,,2t. Then we get the remainder: Ri(x) = y(x) mod (i) for 1 i 2t Step 2: Plug in the respective root/s of the minimal polynomial to the remainder: si = Ri(i), for 1 i 2t

1 = 1+2 + + v 2 = 12 + 23 + + v-1v . . (Eqn. 11) . v = 12 v These s are called elementary symmetric functions From Eqn 9 and Eqn 11, we now have the following relationship between the syndrome and the coefficients of (x) S1 + 1 = 0 S2 + 1 S1 + 22 = 0 S3 + 1 S2 + 2S1 + 33 = 0 . . (Eqn. 12) . Sv + 1 Sv-1 + + v-1S1 + vv = 0 Here, for binary case, ii = i when i is odd, and ii = 0 when i is otherwise. These equations are called Newtons Identities. Newtons Identities relates elementary symmetric functions with power sums. Using Eqn. 12, we can relate the syndromes with the s and these s can then be related with the ls or the error location numbers using Eqn. 11. Shown below are direct solutions for t=1, t=2, and t=3 correcting BCH codes and their proof. T = 1 correction: 1 = s1 = 1 (x) = 1 + 1x Note: s1 0, s3 = s13 T = 2 correction 1 = s1 = 1+2 2 = s12 + s3/s1 = 12 (x) = 1 + 1x + 2x2 Note: s1 0, s3 s13 T = 3 correction 1 = s1 = 1+2+3 2 = (s12s3 + s5)/(s13 + s3) = 12 + 23 +13 3 = (s13 + s3) + s12 = 123 (x) = 1 + 1x + 2x2 + 3x3 Proof: Assuming that v t errors actually occur, we can successfully compute for the error locator number (ls) using Eqn. 12 and solving for the s using the computed syndromes (s1, s2, , s2t). We then relate the s to the ls using Eqn. 11. This will allow us to locate and correct the errors from the received polynomial. Note that we can compute 2t syndromes and that we assumed that v t only occurs. This means that has a value for 1, 2, v only. This means that v+1, v+2, v+3, have zero values. For t =1: s1 + 1 = 0 s1 = 1

1 = 1

(Eqn. 1b)

Note that -1=1 in this case since we are focused on binary BCH. This means that we are in GF (2 m) and that the additive inverse of -1 is simply 1. For t = 2 s1 + 1 = 0 s1 = 1 1 = 1 + 2 s2 + 1 s1 + 22 = 0 s2 + 1 s1 = 0 s2 = 1 s1 s2 = s12 s3 + 1 s2 + 2s1 + 33 = 0 s 3 + 1 s 12 + 2s 1 + 3 = 0 s3 + s13 + 2s1 = 0 2s1 = s3 + s13 2= (s3 + s13) / s1 2 = 1 2 For t = 3 s1 + 1 = 0 s1 = 1 1 = 1 + 2 + 3 s2 + 1s1 + 22 = 0 s2 + 1s1 = 0 s2 = 1s1 s2 = s12 s3 + 1s2 + 2s1 + 33 = 0 s3 + s13 + 2s1 + 3 = 0 2 = (3 + s3 + s13) / s1 s4 + 1s3 + 2s2 + 3s1 + 44 = 0 s4 + s1s3 + 2s12 + 3s1 = 0 2s12 = s4 + s1s3 + 3s1 2 = (s4 + s1s3 + 3s1) / s12

(Eqn. 2a) (Eqn. 2b)

(Eqn. 2c)

(Eqn. 2d) (Eqn. 2e) (Eqn. 3a) (Eqn. 3b)

(Eqn. 3c)

(Eqn. 3d)

(Eqn. 3e)

Equate Eqn. 3d and Eqn. 3e (s4 + s1s3 + 3s1) / s12 = (3 + s3 + s13) / s1 (s4 + s1s3 + 3s1) / s1 = (3 + s3 + s13) s4 + s1s3 + 3s1 = s13 + s1s3 + s14 s4 = s14 (Eqn. 3f) s5 + 1s4 + 2s3 + 3s2 + 4s1 + 55 = 0 s5 + s15 + 2s3 + 3s12 = 0 3s12 = s5 + s15 + 2s3 3 = (s5 + s15 + 2s3) / s12 (Eqn. 3g) Substitute Eqn. 3d in Eqn. 3g 3 = ( (s5 + s15) / s12) + (s3/s12)( (3 + s3 + s13) / s1) s133 = (s1s5 + s16) + (s33 + s32 + s3s13) s133 + s33 = s1s5 + s16 + s32 + s3s13 3 (s13 + s3) = s1s5 + s16 + s32 + s3s13

(Eqn. 1a)

3 = (s1s5 + s16 + s32 + s3s13) / (s13 + s3)

(Eqn. 3h) We substitute the root of of 3(x), 3, to the remainder to get s3:

Substitute Eqn. 3h to Eqn. 3d 2 = (3 + s3 + s13) / s1 2 = ( (s1s5 + s16 + s32 + s3s13) / ((s1) (s13 + s3)) ) + ((s3 + s13) / s1) 2 = ((s1s5 + s16 + s32 + s3s13) + (s16 + s3s13 + s3s13 + s32)) / ((s1) (s13 + s3)) 2 = (s1s5 + s3s13) / (s1(s13 + s3)) 2 = (s12s3 + s5) / (s13 + s3) (Eqn. 3i) 2 = 12 + 23 (Eqn. 3j) Solving for 3 using Eqn. 3d 2 = (3 + s3 + s13) / s1 3 = s12 + s3 + s13 (Eqn. 3k) 3 = 123 (Eqn. 3l) We now apply the direct solutions we solved to the actual decoding process. For our first decoding example, we shall deal with a (15,7) t = 1 BCH code. We introduce one error to the c(x) we encoded earlier. We denote this received codeword to be y(x). The codeword is c(x) = 1000 0011 0011 100, while y(x) is 1010 0011 0011 100, with the error at the 12th bit. Using the direct solution for t = 1, we only need to solve for one syndrome, s1. We then proceed with obtaining the syndrome by first modulo dividing y(x) by the first minimal polynomial 1(x). Thus, the remainder polynomial r(x) is y(x) mod 1(x), or in binary form, 101000110011100 mod 11001. The result would be r(x) = x + 1, or in binary form, 011. To obtain the syndrome, we plug in the respective root of the minimal polynomial 1(x), which is just . Thus, s1 is just +1. Based from the extension field GF(24) we used earlier, +1 corresponds to 12. Using the direct solution for t = 1, we see that this syndrome is equivalent to 1, and that this is also equivalent to the error location 1. The error location is at the 12th bit, since 12 refers to the 12th bit. Thus, we have solved for the error locator numbers by using the syndrome we obtained to solve for the error location polynomial (x). Next we try to decode a (15,7) t = 2 BCH code. We have the received codeword y(x) = 1000 0101 0011 100. From the direct solution for t = 2, we see that we need to solve for the syndromes s1 and s2. We need 1(x) and 3(x), which in binary form is 11001 and 11111 respectively. Solving for r1:

We have now solved for the necessary syndromes in order to find the coefficients of the error location polynomial (x). For 1, we find that it is just equal to s1, which is 5. Solving for 2, we need to use both syndromes. We have:

Note that 10 is the multiplicative inverse of 5. Thus, 1 and 2, are equal to 5 and 2 respectively. Finally, these s are related to the error locator numbers. Using the direct solution for t = 2, we have:

The task now is: by looking at the extension field GF(2 4) we made earlier, we need to find possible pairs of s such that when multiplied (12) will result in 2 , and will also result in 5 when they are added (1+2). Possible combinations for 2 are{3,14}, {4, 13}, {5,12}, {6,11}, {7,10}, and {8,9}The only pair that will satisfy both is {8,9}:

Thus, we can now say that 1 = 8 and 2 = 9. This means that the errors are located at the 8th and 9th bit. D. 3-error correcting (15,7) BCH code In this section we will present the encoding and decoding process for a t = 3 (15,7) BCH code. We will still be using the same extension field we used in the previous examples. Since t = 3, we multiply 1(x), 3(x), and 5(x) to obtain g(x), which in binary form is 1110 1100 101. Given a message m(x) = 10110, and getting xn-k = 1000 0000 000, we multiply xn-k to m(x): We then modulo divide m(x):xn-k with g(x) to get r(x):

s1:

We substitute the root of 1(x), , to the remainder to get

Looking at the extension field we made earlier, we see that 3+ +1 is equal to 5. Next we solve for r1 and s1:

We add this r(x) to m(x):xn-k to finally obtain the code word c(x):

For decoding, we introduce errors at the 12th, 11th, and 10th bits. Our received code word is thus y(x) = 1000 1010 1000 011. According to the direct solutions for t = 3, we first need to solve for the syndromes s1 , s3 and s5. Using the minimal polynomials 1(x), 3(x), and 5(x), we modulo divide y(x) with each minimal polynomial to obtain r1(x),r2(x), and r3(x):

We now need to find triplets of s such that when multiplied, will result to 3, and will also satisfy 2 = 1+2+ 3 and 13 = 12 + 23. The only combination that satisfies these three are {10, 11, 12}. We check if these three really satisfy the previous relations we had set:

s1:

We substitute the root of 1(x), , to the remainder to get

Thus,

We repeat the same procedure for the remaining syndromes s3 and s5. Note that the respective roots for 3(x) and 5(x)are 3 and 5, respectively:

We have successfully found the errors located at the 12th, 11 and 10th bits.
th

IV. TERNARY BCH CODES The binary BCH codes we defined earlier can be generalized to non-binary codes. For any positive integers m and t, there exists a q-ary BCH code that has length n = qm 1, can correct any combination of t or fewer errors, and requires no more than 2mt parity digits. Thus for ternary (q = 3) BCH codes, we have block length of n = 3m -1, and has no more than 2mt parity digits. Note that in this section, we will deal with the extension field GF(32), thus we will be using modulo-3 arithmetic operations. We now proceed to encoding a message m(x) = x3 + 2x2 = 1200 for our t =2 BCH code over GF(32). We shall construct an extension field GF(32) using the p(x)= x2 + x + 2 Then, p() = 2 + + 2 = 0. We isolate 2 and get 2 = - - 2 = 0. From the addition table, the additive inverse of 1 is 2 and the additive inverse of 2 is 1, thus 2 = - - 2 = 2 + 2. The rest of the steps in constructing an extension field are the same with the binary case, taking note that we use modulo-3 arithmetic.

We now solve for the error location polynomial coefficients 1, 2, and 3, and relate them to the error locator numbers 1, 2, and 3. For 1:

For 2:

For 3:

Elements

Polynomial

TRep

0 1 a a a a a a
2 3 4 5

0 1 a 2a + 1 2a + 2 2 2a a + 2 a + 1

00 01 10 21 22 02 20 12 11

a6
7

REFERENCES
[1] [2] [3] [4] A. Kak. (2011, February 06). Finite Fields (PART 3). Available: https://engineering.purdue.edu/kak/compsec/NewLectures/Lecture6.pdf Weisstein, Eric W. "Irreducible Polynomial." From MathWorld--A Wolfram Web Resource. W.J. Gilbert, W.K. Nicholson. Modern Algebra with Applications. Wiley, 2004, pp. 270, 284-286. http://ocw.mit.edu/courses/mathematics/18-310c-principles-of-appliedmathematics-fall-2007/lecture-notes/polynomialcodes.pdf S. Lin, D.J. Costello. Error Control Coding: Fundamentals and Applications. Prentice-Hall, 1983, pp.141-170. http://mathworld.wolfram.com/IrreduciblePolynomial.html Macwilliams, F.J. The Theory of Error Correcting Codes.NorthHolland,2003. pp. 112

We now need to find the minimal polynomials by finding the conjugates. For the ternary case, conjugates can be expressed as 3l where l 0. We use these conjugates to solve for their respective minimal polynomials. Here are the minimal polynomials GF(32), with p(x) = x2 + x + 2. Elements , 3 2 , 6 4 ,
5 7

[5] [6] [7]

Minimal Polynomials x2 + x + 2 x2 + 1 x+1 x2 + x + 2

Now we can construct the generator polynomial. For t = 2.

For t = 2, (8,4) BCH code, we have m(x) = x3 + 2x2 = 1200. We will now proceed with encoding the Multiplying m(x)with xn-k, we get 12000000, since xn-k = 10000. We will modulo divide this m(x) xn-k with g(x) to get r(x):

We add this r(x) to m(x) xn-k to get the code word c(x):

Das könnte Ihnen auch gefallen