|
In coding theory the BCH codes form a class of parameterised error-correcting codes which have been the subject of much academic attention in the last fifty years. BCH codes were invented in 1959 by Hocquenghem, and independently in 1960 by Bose and Ray-Chaudhuri[1]. The acronym BCH comprises the initials of these inventors' names. The principal advantage of BCH codes is the ease with which they can be decoded, via an elegant algebraic method known as syndrome decoding. This allows very simple electronic hardware to perform the task, obviating the need for a computer, and meaning that a decoding device may be made small and low-powered. As a class of codes, they are also highly flexible, allowing control over block length and acceptable error thresholds, meaning that a custom code can be designed to a given specification (subject to mathematical constraints). In technical terms a BCH code is a multilevel, cyclic, error-correcting, variable-length digital code used to correct multiple random error patterns. BCH codes may also be used with multilevel phase-shift keying whenever the number of levels is a prime number or a power of a prime number. A BCH code in 11 levels has been used to represent the 10 decimal digits plus a sign digit.[2]
ConstructionA BCH code is a polynomial code over a finite field with a particularly chosen generator polynomial. It is also a cyclic code as well. Simplified BCH codesFor ease of exposition, we first describe a special class of BCH codes. General BCH codes are described in the next section. Definition. Fix a finite field GF(q), where q is a prime power. Also fix positive integers m, n, and d such that n = qm − 1 and Let α be a primitive nth root of unity in GF(qm). For all i, let mi(x) be the minimal polynomial of αi with coefficients in GF(q). The generator polynomial of the BCH code is defined as the least common multiple ExampleLet q = 2 and m = 4 (therefore n = 15). We will consider different values of d. There is a primitive root
its minimal polynomial over GF(2) is :m1(x) = x4 + x + 1. Note that in GF(2), the equation (a + b)2 = a2 + 2ab + b2 = a2 + b2 holds, and therefore m1(α2) = m1(α)2 = 0. Thus α2 is a root of m1(x), and therefore
To compute m3(x), notice that, by repeated application of (1), we have the following linear relations:
Five right-hand-sides of length four must be linearly dependent, and indeed we find a linear dependency α12 + α9 + α6 + α3 + 1 = 0. Since there is no smaller degree dependency, the minimal polynomial of α3 is :m3(x) = x4 + x3 + x2 + x + 1. Continuing in a similar manner, we find The BCH code with d = 1,2,3 has generator polynomial It has minimal Hamming distance at least 3 and corrects up to 1 error. Since the generator polynomial is of degree 4, this code has 11 data bits and 4 checksum bits. The BCH code with d = 4,5 has generator polynomial It has minimal Hamming distance at least 5 and corrects up to 2 errors. Since the generator polynomial is of degree 8, this code has 7 data bits and 8 checksum bits. The BCH code with d = 6,7 has generator polynomial It has minimal Hamming distance at least 7 and corrects up to 3 errors. This code has 5 data bits and 10 checksum bits. The BCH code with d = 8 and higher have generator polynomial This code has minimal Hamming distance 8 and corrects up to 3 errors. It has 1 data bit and 14 checksum bits. In fact, this code has only two codewords: 000000000000000 and 111111111111111. General BCH codesGeneral BCH codes differ from the simplified case discussed above in two respects. First, one replaces the requirement n = qm − 1 by a more general condition. Second, the consecutive roots of the generator polynomial may run from Definition. Fix a finite field GF(q), where q is a prime power. Chose positive integers m,n,d,c such that As before, let α be a primitive nth root of unity in GF(qm), and let mi(x) be the minimal polynomial over GF(q) of αi for all i. The generator polynomial of the BCH code is defined as the least common multiple Note: if n = qm − 1 as in the simplified definition, then gcd(n,q) is automatically 1, and the order of q modulo n is automatically m. Therefore, the simplified definition is indeed a special case of the general one. Properties1. The generator polynomial of a BCH code has degree at most (d − 1)m. Moreover, if q = 2 and c = 1, the generator polynomial has degree at most dm / 2.
2. A BCH code has minimal Hamming distance at least d. Proof: We only give the proof in the simplified case; the general case is similar. Suppose that p(x) is a code word with fewer than d non-zero terms. Then Recall that
Dividing this by for all i, or equivalently This matrix is seen to be a Vandermonde matrix, and its determinant is
which is non-zero. It therefore follows that 3. A BCH code is cyclic. Proof: A polynomial code of length n is cyclic if and only if its generator polynomial divides xn − 1. Since g(x) is the minimal polynomial with roots Special cases
Therefore, the "simplified" BCH codes we considered above were just the primitive narrow-sense codes.
DecodingBCH decoding is split into the following four steps
The following steps are illustrated below. Suppose we receive a codeword vector r (the polynomial R(x)). If there is no error R(α) = R(α3) = 0 If there is one error (i.e. r = c + ei where ei represents the ith basis vector for So then
so we can recognize one error. A change in the bit position shown by α's power will aid us correct that error. If there are two errors
then
which is not the same as Original source (first two paragraphs) from Federal Standard 1037C The above text has been taken from: http://bch-code.foosquare.com/ BCH decoding algorithmsPopular decoding algorithms are,
Peterson Gorenstein Zierler algorithmAssumptionsPeterson's algorithm, is the step 2, of the generalized BCH decoding procedure. We use Peterson's algorithm, to calculate the error locator polynomial coefficients Now the procedure of the Peterson Gorenstein Zierler algorithm, for a given (n,k,dmin) BCH code designed to correct Algorithm
if t = 0
then
declare an empty error locator polynomial
stop Peterson procedure.
end
set
Factoring error locator polynomialNow that you have Λ(x) polynomial, you can find its roots in the form Correcting errorsFor the case of binary BCH, you can directly correct the received vectors, at the positions of the powers of primitive elements, of the error locator polynomial factors. Finally, just flip the bits for the received word, at these positions, and we have the corrected code word, from BCH decoding. We may also use Berlekamp-Massey algorithm for determining the error locator polynomial, and hence solve the BCH decoding problem. Simulation resultsThe simulation results for a AWGN BPSK system using a (63,36,5) BCH code are shown in this figure. A coding gain of almost 2 dB is observed at a bit error rate 10 − 3. Citations
References
|
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net