BCH CODE WITH 256 INFORMATION BYTES AND UP TO 8 BYTES OF PARITY CHECK ELEMENTS

Abstract
A coding system comprises pre-multiply the message u(x) by Xn−k. Obtain the remainder b(x), i.e. the parity check digits. And combine b(x) and Xn−ku(x) to obtain the code polynomial. A decoding method comprises calculating a syndrome; finding an error-location polynomial; and computing a set of error location numbers.
Description
FIELD OF THE INVENTION

The present invention relates generally to coding systems. More specifically, the present invention relates to a BCH code with 256 information bytes and up to 8 bytes of parity check elements.


BACKGROUND

Bose-Chadhuri-Hocquenghem (BCH) code is known. United States Patent Application No. 20040181735 by Xin, Weizhuang (Wayne) discloses decoding a received BCH encoded signal comprising a method or apparatus for decoding of a BCH encoded signal, which begins by determining whether the received BCH encoded signal includes error. The decoding process continues when the received BCH encoded signal includes error by determining whether the error is correctable. This may be done by determining a number of errors of the received BCH encoded signal, identifying bit locations of the received BCH encoded signal having the error; counting the number of bit locations of the received BCH encoded signal having the error, comparing the number of errors to the number of bit locations of the received BCH encoded signal having the error, when the number of bit locations of the received BCH encoded signal having the error equals the number of errors, ceasing the identifying of the bit locations of the received BCH encoded signal having the error, and correcting information contained in the bit locations of the received BCH encoded signal having the error when the identifying of the bit locations is ceased.


However, there are needs in both the design method and the encoding/decoding method for a suitable BCH coding system having a suitably long code (e.g. with 256 information bytes and up to 8 bytes of parity check elements). This is especially true for the design of a BCH code, whereby both the minimal polynomials and generator polynomial are very hard to generate. Furthermore, during the design stage of the BCH code, shortening is performed. Shortening makes the design special, also distinguishes the decoding methods with others.


SUMMARY OF THE INVENTION

A BCH code with 256 information bytes and up to 8 bytes of parity check elements is provided.


A coding system comprises pre-multiply the message u(x) by Xn−k. Obtain the remainder b(x), i.e. the parity check digits. And combine b(x) and Xn−ku(x) to obtain the code polynomial.


A decoding method comprises calculating a syndrome; finding an error-location polynomial; and computing a set of error location numbers.





BRIEF DESCRIPTION OF THE FIGURES

The accompanying figures, where like reference numerals refer to identical or functionally similar elements throughout the separate views and which together with the detailed description below are incorporated in and form part of the specification, serve to further illustrate various embodiments and to explain various principles and advantages all in accordance with the present invention.



FIG. 1 is an example of an encoding circuit in accordance with some embodiments of the invention.



FIG. 2 is an example of an encoding process in accordance with some embodiments of the invention.



FIG. 3 is an example of a decoding process in accordance with some embodiments of the invention.





Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the present invention.


DETAILED DESCRIPTION

Before describing in detail embodiments that are in accordance with the present invention, it should be observed that the embodiments reside primarily in combinations of method steps and apparatus components related to a BCH code with two hundred fifty six (256) information bytes and up to eight (8) bytes of parity check elements. Accordingly, the apparatus components and method steps have been represented where appropriate by conventional symbols in the drawings, showing only those specific details that are pertinent to understanding the embodiments of the present invention so as not to obscure the disclosure with details that will be readily apparent to those of ordinary skill in the art having the benefit of the description herein.


In this document, relational terms such as first and second, top and bottom, and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms “comprises,” “comprising,” or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element proceeded by “comprises . . . a” does not, without more constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises the element.


It will be appreciated that embodiments of the invention described herein may be comprised of one or more conventional processors and unique stored program instructions that control the one or more processors to implement, in conjunction with certain non-processor circuits, some, most, or all of the functions of relating to a BCH code with two hundred fifty six (256) information bytes and up to eight (8) bytes of parity check elements. In the exemplified embodiments, it is noted that the processors include Finite State Machines, which are used in the preferred embodiment. The non-processor circuits may include, but are not limited to, a radio receiver, a radio transmitter, signal drivers, clock circuits, power source circuits, and user input devices. As such, these functions may be interpreted as steps of a method with reduced memory requirements to perform a BCH code with two hundred fifty six (256) information bytes and up to eight (8) bytes of parity check elements. Alternatively, some or all functions could be implemented by a state machine that has no stored program instructions, or in one or more application specific integrated circuits (ASICs), in which each function or some combinations of certain of the functions are implemented as custom logic. Of course, a combination of the two approaches could be used. Thus, methods and means for these functions have been described herein. Further, it is expected that one of ordinary skill, notwithstanding possibly significant effort and many design choices motivated by, for example, available time, current technology, and economic considerations, when guided by the concepts and principles disclosed herein will be readily capable of generating such software instructions and programs and ICs with minimal experimentation.


Referring to FIG. 1, a generic encoding circuit 100 is shown for an (n, k) cyclic code with generator polynomial: g(X)=1+g1X2+ . . . +gn−k−1Xn−k−1+Xn−k. Gate 102 is turned on to process the k information digits u0, u1, . . . , uk−1 or in the polynomial form of u(x)=u0+u1X+ . . . +uk−1Xk−1 are shifted into circuit 100 while simultaneously go into a communication channel as well. Shifting the message u(X) into circuit 100 from the front end is equivalent to pre-multiplying u(X) by Xn−k. As soon as the complete message has entered circuit 100, the n−k digits in the register form the reminder, i.e. the parity check digits. In turn, gate 102 is turned off to break the feedback connection. Parity check digits are shifted out and, in turn, send to channel. The codeword is formed by the n−k parity check digits b0, b1, . . . b1−k−1, together with the k information digits.


A Bose-Chadhuri-Hocquenghem (BCH) code with 256 information bytes and up to 8 bytes of parity check elements suitable for generating by the circuit 100 of FIG. 1 is provided. For an eight bit word length processing system, information bits are equal to two thousand and forty eight bits (256*8=2048 bits). The corresponding parity bits equal to sixty four (8*8=64) bits.


Let m=12 and t=4, we got n=4095; i.e. n=2m−1=212−1=4095


The primitive polynomial is:






p(x)=1+X+X4+X6+X12  Eq. 1


with n=4095, we get k=4047


We also get the generator polynomial as:






g(X)=1+X+X3+X5+X7+X13+X16+X17+X21+X26+X27+X29+X32+X34+X36+X37+X41+X44+X48  Eq. 2


resulting in a (4095, 4047) BCH expression.


Since we need k=2048, and 4047−2048=1999, therefore, if we shorten the (4095, 4047) BCH code by 1999 bits we get a (2096, 2048) shortened BCH code.


Minimal polynomials of the BCH code for the encoder is as follows:





α: φ1(X)=1+X+X4+X6+X12





α3: φ3(X)=1+X+X3+X4+X6+X10+X12





α5: φ5(X)=1+X+X2+X3+X6+X12





α7: φ7(X)=1+X+X3+X5+X6+X10+X12


Because BCH code is a cyclic code, therefore given a generator polynomial g(X) of an (n, k) cyclic code, we can put the code into systematic form such as the following:


(message) information is: (u0, u1, . . . , uk−1), and


Code word is: (b0, b1, . . . , bn−k−1, u0, u1, . . . , uk−1).


As can be seen the right most k digits of the code word are the unaltered information digits, and the leftmost n−k digits are parity-check digits.


Let message be:





{right arrow over (u)}=(u0,u1, . . . , uk−1)  Eq. 3





Then,






u(x)=u0+u1X+ . . . +uk−1Xk−1  Eq. 4.


Multiply both sides of Eq. 4 by Xn−k, we got:






X
n−k
u(X)=Xn−ku0+u1Xn−k+1+ . . . +uk−1Xn−1  Eq 5


Dividing Eq. 5 (i.e. Xn−ku(x)) by g(x), we can get the following expression:






X
n−k
u(x)=a(x)g(x)+b(x)  Eq. 6


Since g(x) has n−k degrees, the degree of b(x) must be n−k−1 or less, that is:






b(x)=b0+b1X+ . . . +bn−k−1Xn−k−1  Eq. 7






b(x)+Xn−ku(x)=a(x)g(x)  Eq. 8


As can be seen this polynomial is a multiple of g(x) and therefore is a code polynomial. Combining equations six and seven (Eq. 6 and Eq. 7), we get:






b(x)+Xn−ku(x)=b0+b1X+ . . . +bn−k−1Xn−k−1+Xn−ku0+u1Xn−k+1+ . . . +uk−1Xn−1  Eq. 9


which corresponds to the code word (b0, b1, . . . , bn−k−1, u0, u1, . . . , uk−1).


The coding can be realized as shown in FIG. 2. In summary, coding in systematic form comprises of 3 steps.

    • 1. Pre-multiply the message u(x) by Xn−k (Step 202);
    • 2. Obtain the remainder b(x), i.e. the parity check digits (Step 204); and
    • 3. Combine b(x) and Xn−ku(x) to obtain the code polynomial (Step 206);





b(x)+Xn−ku(x)  Eq. 9.


On the decoder side, in FIG. 3 a method 300 of decoding is shown. First, the syndrome of the code is calculated (Step 302).


Let Si=r(αi)






S
1
=r(α)=r0+r1α+r2α2+ . . . +rn−1αn−1






S
2
=r2)r0+r1α2+r2α4+ . . . +rn−12)n−1Etc  Equ. 10


generating syndrome values of the received BCH encoded signal, interpreting the syndrome values; and when the syndrome values do not equal zero, determining that the received BCH encoded signal includes errors.


Second, using Berlekamp's algorithm to find the error-location polynomial (Step 304).
















μ
σ(μ)(x)
d μ

2μ − lμ



















½
1
1
0
−1


0
1
S1
0
0


1
1 + S1X
S3 + S1 S2
1
1 (ρ = −½)


2
1 + S1X + (S3 +
S5 + S1 S4 + (S3/S1 + S2)S3
2
2 (ρ = 0)



S1 S2)X2


3
σ(3)
d3
3
3 (ρ = 1)


4









σ(3) (x) = 1 + S1X + S1X2 + S2X3


d3 = S7 + S1S6 + S1S5 + S2S4









σ(3)(x)=1+S1X+S1X2+S2X3






d
3
=S
7
+S
1
S
6
+S
1
S
5
+S
2
S
4


Where:





α1=S1α1999





σ2=(S1+d3d2−11999×2





σ3=(S1+d3d2−1S11999×3





σ4=d3d2−1(S3S1−1+S2)α1999×4


Third, error location numbers is calculated and error correction is performed (Step 306) using Chien's search to compute error-location numbers and perform error correction. σσiiiα(σii)


Let α12=1+α+α46 then,





σα=(σ01α+σ2α23α34α45α56α67α78α89α910α1011α11)α  Equ. 11


Equ. 11 can be reorganized as follows:





σα=σ11+(σ011)α+σiα2iα3+(σii4iα5+(σii6iα7iα8iα9iα10iα11  Equ. 12


Similarly, we have:





σα2i+(σii)α+(σii2iα3+(σii4+(σii5+(σii6+(σii7iα8iα9iα10iα11  Equ. 13





σα3i+(σii)α+(σii2+(σii3+(σii4+(σii5+(σii6+(σii7+(σii8iα9iα10iα1  Equ. 14





σα4i+(σii)α+(σii2+(σii3+(σii4+(σii5+(σiii6+(σii7+(σii8iα9iα10iα1  Equ. 15





let σ(x)=1+σ01x+σ2x23x34x4 then





σ(α)=1+σ01α+σ2α23α34α4





σ(α2)=1+σ02α22α43α64α8





σ(α1)=1+σ02α12α23α34α41


If the sum of the above is zero, then αn−1 is an error-location number.


In the foregoing specification, specific embodiments of the present invention have been described. However, one of ordinary skill in the art appreciates that various modifications and changes can be made without departing from the scope of the present invention as set forth in the claims below. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of present invention. The benefits, advantages, solutions to problems, and any element(s) that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as a critical, required, or essential features or elements of any or all the claims. The invention is defined solely by the appended claims including any amendments made during the pendency of this application and all equivalents of those claims as issued.

Claims
  • 1. A method for coding a BCH code comprising the steps of: pre-multiplying a message u(x) by Xn−k; andobtaining a remainder b(x).
  • 2. The method of claim 1 further comprising the step of combining b(x) and Xn−ku(x) to obtain a code polynomial: b(x)+Xn−ku(x).
  • 3. The method of claim 1, wherein the remainder b(x) comprises a set of parity check digits.
  • 4. The method of claim 1, wherein the BCH code comprises 256 information bytes.
  • 5. The method of claim 1, the BCH code comprises at most 8 bytes of parity check elements.
  • 6. A method for de-coding a BCH code comprising the steps of: calculating a syndrome of the BCH code;finding an error-location polynomial; andcomputing a set of error location numbers associated with the error-location polynomial.
  • 7. The method of claim 6 further comprising the step of performing error correction.
  • 8. The method of claim 6, wherein the BCH code comprises 256 information bytes.
  • 9. The method of claim 6, the BCH code comprises at most 8 bytes of parity check elements.