UNB ECE4253 Digital Communications
Department of Electrical and Computer Engineering - University of New Brunswick, Fredericton, NB, Canada

BCH Code Generator

On this page, various polynomials can be chosen to demonstrate the structure of BCH codes capable of correcting several bit errors.


The primitive GF(2) polynomial P(x) defines a GF(24) as the set {0, a1, a2,...,a15} modulus P(x) where a is a root of P(x) in GF(24).


GF(16) : P(x) = x4 + x + 1

 |  MINIMAL POLYNOMIAL
a0 = 1 = 0001 = 1 = a15 = a30 = a45 ...  |  x+1
a1 = a = 0010 = 2 = a16 = a31 = a46 ...  |  x4+x+1
a2 = a2 = 0100 = 4 = a17 = a32 = a47 ...  |  x4+x+1
a3 = a3 = 1000 = 8 = a18 = a33 = a48 ...  |  x4+x3+x2+x+1
a4 = a+1 = 0011 = 3 = a19 = a34 = a49 ...  |  x4+x+1
a5 = a2+a = 0110 = 6 = a20 = a35 = a50 ...  |  x2+x+1
a6 = a3+a2 = 1100 = 12 = a21 = a36 = a51 ...  |  x4+x3+x2+x+1
a7 = a3+a+1 = 1011 = 11 = a22 = a37 = a52 ...  |  x4+x3+1
a8 = a2+1 = 0101 = 5 = a23 = a38 = a53 ...  |  x4+x+1
a9 = a3+a = 1010 = 10 = a24 = a39 = a54 ...  |  x4+x3+x2+x+1
a10 = a2+a+1 = 0111 = 7 = a25 = a40 = a55 ...  |  x2+x+1
a11 = a3+a2+a = 1110 = 14 = a26 = a41 = a56 ...  |  x4+x3+1
a12 = a3+a2+a+1 = 1111 = 15 = a27 = a42 = a57 ...  |  x4+x3+x2+x+1
a13 = a3+a2+1 = 1101 = 13 = a28 = a43 = a58 ...  |  x4+x3+1
a14 = a3+1 = 1001 = 9 = a29 = a44 = a59 ...  |  x4+x3+1

 
a15 = 1 = 0001 = 1 = a30 = a45 = a60 ...  |  x+1

The terms {an} may be computed directly as xn modulo P(x). Click on one of the 4-bit values above to confirm this calculation using the polynomial calculator.

For this P(x) of degree 4, a complete set of 24 - 1 = 15 non-zero elements is defined. This choice of P(x) is a primitive polynomial in GF(2). ( See the factors of P(x) )


Minimal Polynomials

In the above table, each term an is associated with a minimal polynomial. The primitive polynomial P(x) of degree 4 is by definition a factor of x15+1 and the minimal polynomials shown represent all the irreducible factors of x15+1 including P(x). The BCH code generating polynomial is formed from one or more of these minimal polynomials.

The minimal polynomial M(x) associated with a given an is the one for which an is a root; in other words, for which M(an) = 0.

For example, the minimal polynomial for a7 in the table is given as M(x) = x4+x3+1 and, for x = a7:

M( a7 ) = (a7)4 + (a7)3 + 1

M( a7 ) = a28 + a21 + 1

M( a7 ) = ( a3+a2+1 ) + ( a3+a2 ) + 1

M( a7 ) = 0, and therefore a7 is a root of M(x).

Each element an is the root of only one of the minimal polynomials; however, each minimal polynomial may have several roots in {an}. This observation resolves the issue of redundant information raised on the previous page as the terms in {an} which contribute usefully to growing the BCH generator matrix must have different minimal polynomials.


Identifying Minimal Polynomials

The structure imposed by the use of fields based on {an} is revealed by the surprising way in which minimal polynomials are related.

Let the first minimal polynomial have the root a1, where n=(0001) in 4-bit binary, and consider the rotations of these four bits:

(0001) → (0010) → (0100) → (1000)

The terms {a1, a2, a4, a8} share the same minimal polynomial M(x)=x4+x+1.

Let the next minimal polynomial have the root a3, where n=(0011) in 4-bit binary, and consider the rotations of these four bits:

(0011) → (0110) → (1100) → (1001)

The terms {a3, a6, a12, a9} share the same minimal polynomial M(x)=x4+x3+x2+x+1.

Let the next minimal polynomial have the root a5, where n=(0101) in 4-bit binary, and consider the rotations of these four bits:

(0101) → (1010)

The terms {a5, a10} share the same minimal polynomial M(x)=x2+x+1.

Let the next minimal polynomial have the root a7, where n=(0111) in 4-bit binary, and consider the rotations of these four bits:

(0111) → (1110) → (1101) → (1011)

The terms {a7, a14, a13, a11} share the same minimal polynomial M(x)=x4+x3+1.


Creating a BCH Generator Polynomial

A BCH generating polynomial can produce codewords with predictable distance properties given a set of distinct minimal polynomials.

  1. Let t be the number of bit errors to be corrected. The required Hamming distance is D=2t+1
  2. Identify a set of minimal polynomials from {an} for n= 1 to 2t.
  3. Reduce the set by deleting any duplicate minimal polynomials.
  4. The BCH generating polynomial G(x) is the product of the remaining minimal polynomials.

Generator Polynomial G(x) for BCH Code (D=7) based on P(x) = x4+x+1
To achieve t=3, using six terms i=(1 .. 6) reduced to three unique terms i=(1,3,5)
Terms having duplicate minimal polynomials are not used.

This G(x) is the product of three minimal polynomials for {a1,a3,a5} as:

G(x) = (x4+x+1) (x4+x3+x2+x+1) (x2+x+1) 

G(x) = x10+x8+x5+x4+x2+x+1

(10100110111)

The original polynomial P(x) of degree 4 defines a codeword size of n=15 bits where 15 = 24-1; the BCH polynomial G(x) of degree 10 defines 10 parity bits such that k = 15 - 10 = 5 to give (n,k) = (15,5).

This BCH (15,5) code can correct at least 3 bit errors, as specified. (See the codewords and matrices)


Select a primitive polynomial P(x) and specify the target number of bits to correct t

2024-04-29 17:45:34 ADT
Last Updated: 2010-02-23
Richard Tervo [ tervo@unb.ca ] Back to the course homepage...