The present invention relates to a co-design circuit and a method for deciding the circuit. More particularly, the present invention relates to a co-design circuit for BCH code encoding and syndrome computing and a method for deciding the circuit.
Bose-Chaudhuri-Hocquenghem (BCH) code is one of the most widely used error correction code (ECC) techniques in the storage and communication devices. BCH code can detect and correct random errors occurred due to channel noises and defects within memory devices. The encoding procedures of BCH codeword can be implemented by linear feedback shift register (LFSR) and some combination logics together. Comparing with encoding procedures of the BCH codewords, decoding procedures of the BCH codewords are much complicated as shown in
A conventional linear feedback shift register circuit is shown in
In a BCH decoder, there are some similar architectures of iterative calculation. For example, the syndrome computing unit. For a syndrome computing unit having error correcting ability t, each syndrome Si can be found by the equation below:
r(αi+1) represents a received codeword polynomial. In order to implement the equation above, a commonly seen decoding circuit will include the syndrome computing unit for corresponding processes. A conventional syndrome computing unit is shown in
The above equation can be presented in form of a matrix. Hence, common sub-expressions can be found during derivation processes. For implement of circuitry, by sharing proper hardware, the common sub-expressions can be saved. Meanwhile, the target of lowering hardware complexity can be achieved. In addition, since the encoder of the BCH code runs by using similar iterative operation, if encoding and decoding are not required to process at the same time, the encoder and syndrome computing unit can share the same registers. It further saves area cost. Many prior arts disclose such design, for example, U.S. Pat. No. 6,405,339, U.S. Pat. No. 7,743,311, U.S. Pat. No. 8,418,021, etc. However, the hardware complexities provided by those patents are still too high. For compact designed electronic devices, there is still room for improvement.
As mentioned above, among the solutions of co-design circuits for BCH encoding and syndrome computing, hardware complexity is higher and area cost is large. Therefore, a proper co-design circuit to lower hardware complexity is desperately desired. It is better for the circuit to efficiently reduce common sub-expressions in BCH encoding and syndrome computing.
According to an aspect of the present invention, a co-design circuit for BCH encoding and syndrome computing, capable of processing p parallel computation includes: an encoding unit, for encoding one message having k bits as one BCH codeword having n bits after processing a first iterative operation, the first iterative operation being processed to receive p bits sequentially in each clock and output the BCH codeword after [n/p] clocks; a syndrome computing unit, for obtaining 2t syndromes each having m bits from one BCH codeword having n bits after processing a second iterative operation, the second iterative operation being processed to receive p bits sequentially in each clock and output the syndromes after [n/p] clocks; a number of multiplexers, each being used to receive a first intermediate computing result generated from the first iterative operation and a second intermediate computing result generated from the second iterative operation, wherein when the first iterative operation processes, the first intermediate computing result is outputted, and when the second iterative operation processes, the second intermediate computing result is outputted; and a number of registers, each being used to receive the first intermediate computing result or the second intermediate computing result from a corresponding multiplexer, or the second intermediate computing result from a syndrome computing unit, and outputting the first intermediate computing result to the encoding unit or the second intermediate computing result to the syndrome computing unit in a later clock after the first intermediate computing result or the second intermediate computing result is received. Numeral k, n, p and t are positive integers and n is greater than k. Numeral m is the power of 2 over GF(2m).
Preferably, the first iterative operation is processed to obtain computed values of Z(j) and a complete BCH codeword. Z(j) is expressed as below: Z(j)=Fp×[Z(j−1)+R′(j)], where all elements in Z(0) are 0,
Z(j) is the first intermediate computing results from a jth iterative calculation of the first iterative operation; for a n-bit initial processing data including the k-bit message and being divided per p bits, R′(j) is the jth p bits. R=n−k+1; g′R-1, g′R-2, . . . and g′0 are coefficients of a generating polynomial, g(x)=xR+g′R-1xR-1+g′R-2xR-2+ . . . +g′2x2+g′1x1+g′0.
Preferably, the first iterative operation satisfies operation of a matrix F″, where
m is a positive integer.
Preferably, the second iterative operation is processed to obtain computed values of G(j) and complete syndromes, wherein
where G(j)=[g1 (j) g3 (j) . . . g2t-1 (j)]; G(j) represents m×t second intermediate computing results from a jth iterative calculation of the second iterative operation, R(j)=[r0(j) r1(j) . . . rp-1(j)], R(j) represents p bits of the codeword received by the syndrome computing unit in the jth iterative calculation; S(j) represents outputted computed values of syndromes in the jth iterative calculation; XR is a p×mt binary matrix; X is a mt×mt binary matrix; XS is a mt×2mt binary matrix.
Preferably, the XR, XG and XG are defined as:
XR=[C1 C3 . . . C2t-1], where
wherein α0 . . . and α(m-1) are elements in GF(2m); I is a unit matrix, Bw is an operating matrix other than a zero matrix and a unit matrix; w is an positive integer of power of 2 and smaller than or equal to 2t.
Preferably, the amount of multiplexers is greater than R value of the BCH code which can be encoded by the encoding unit, where R=n−k+1. The amount of the registers is greater than or equal to m×t. The first intermediate computing result is a one bit signal and the second intermediate computing result is a one bit signal.
According to another aspect of the present invention, a method for deciding a co-design circuit for BCH encoding and syndrome computing includes the steps of: building up XR, XG and XS according to p parallel computations and 2t syndromes; building up FP; building up F′; building up F″; building up matrix [XSRG F″]; and designing a circuit fulfilling operation of matrix [XSRG F″], wherein k, n, p and t are positive integers, n is greater than k, XR=[C1 C3 . . . C2t-1], where
elements in GF(2m);
where I is a unit matrix, Bw is an operating matrix other than a zero matrix and a unit matrix, w is an positive integer of power of 2 and smaller than or equal to 2t;
where R=n−k+1; g′R-1, g′R-2 . . . and g′0 are coefficients of a generating polynomial,
g(x)=xR+g′R-1xR-1+g′R-2xR-2+ . . . +g′2x2+g′1x1+g′0.
The present invention will now be described more specifically with reference to the following embodiment.
First, a further illustration about BCH encoding is provided below. For an encoded BCH codeword having n bits, it includes a k-bit message. During encoding processes, a generating polynomial below is applied:
g(x)=xR+g′R-1xR-1+g′R-2xR-2+ . . . +g′2x2+g′1x1+g′0,
where R=n−k+1. When an encoder capable of processing encoding of p parallel computations synchronously is used, for a n-bit initial processing data including the k-bit message and being divided per p bits as R′(1), R′(2), . . . R′(n/p)(R′(n/p) is not necessary p bits), inputted to the encoder per clock sequentially for operation. In view of a general formula, in a jth clock (1≦j≦n/p), the outputted computed values are as: Z(j)=Fp×[Z(j−1)+R′(j)]. It should be noticed that all elements in Z(0) are 0. In order to facilitate operation, it is denoted that
R′(j)=[r′0(j)r′1(j)r′2(j) . . . r′p-1(j)|0 . . . 0]1×RT.
R′(j) is the jth p bits. Z(j) has R bits denoting by Z0(j), Z1(j), . . . ZR-1(j), respectively. Other expressions in the above formula are further described as below:
Let F′=[first p columns of Fp|Fp], transpose of Z(j) can be obtained.
A circuit fulfills this operation can also achieve the encoding operation shown in
Come back to syndrome computing. Yungjoo Lee et al. disclosed a paper on IEEE International Journal in 2012, titled “mall-area parallel syndrome calculation for strong BCH decoding” where a method for syndrome computing unit, capable of searching for common sub-expressions was discussed. According to the paper, a syndrome computing unit with p syndrome parallel computations needs [n/p] clocks to finish syndrome computing. It is also includes 2t sub-units for generating 2t syndromes synchronously. In the jth clock, the syndrome S(j) computed from the syndrome computing unit can be expressed as:
In the above formula, S(j) is a 1×2mt binary matrix, representing 2t computed values of syndromes in the jth iterative calculation. Each computed value of the syndrome has m bits. Numeral m is a non-zero positive integer and is the power of 2 over GF(2m). G(j) is a 1×mt binary matrix, representing m×t temporary intermediate computing results in the jth iterative calculation. G(j) can be expressed as below:
G(j)=[g1(j)g3(j) . . . g2t-1(j)]
where g1(j), g3(j), . . . g2t-1(j) are temporary results from one odd iterative calculation. Each of them is a 1×mbinary matrix and includes m bits.
R(j) is a 1×p binary matrix, representing received p bits (r0(j), r1(j) . . . rp-1(j)) of a codeword by the syndrome computing unit in the jth iterative calculation. It is expressed by a matrix,
R(j)=[r0(j)r1(j) . . . rp-1(j)].
XR is a p×mt binary matrix about the inputted codeword. It is expressed as XR=[C1 C3 . . . C2t-1]. C2t-1 can be expressed as:
α0 . . . and α(m-1) are elements in GF(2m).
XG is a mt×mt binary matrix, representing fixed multiplications in the method. XG is shown as below.
A(2t-1)p can be expressed as
XS is a mt×2mt binary matrix. It contains many m×m unit matrices and m×m operating matrices. XS is expressed as below:
I is a unit matrix. Bw is a general form of operating matrix B2, B4, . . . etc. Numeral w is a positive integer of power of 2 and smaller than or equal to 2t. Bw can be expressed as:
In the paper that Yungjoo Lee provided, it is obvious that the syndrome computing unit according to the method has reduced many common sub-expressions. Now, if the syndrome computing unit can combined with a BCH encoding unit, it is able to reduce area cost of such circuit design.
Based on the above inference, let
it is obtained that Y=[XSRG F″](P+mt)×(3mt+Rt). By applying a circuit for the matrix Y with proper buffers and switches, a co-design circuit for BCH encoding and syndrome computing can be achieved.
Therefore, the present invention provides the co-design circuit for BCH encoding and syndrome computing. Please refer to
The encoding unit 100 can process to obtain computed values of Z(j) and a complete BCH codeword, Z. Therefore, it satisfies operation of matrix F″. Thus, in the jth clock (jth iterative calculation), p inputs (r′0(j), r′1(j), r′2(j), . . . and r′(p-1)(j)) of R′(j) are inputted to the co-design circuit 10 sequentially. By an iterative operation, after [n/p] times of calculations, the complete BCH codeword, Z (Z0, Z1, . . . and ZR-1) can be outputted by the co-design circuit 10. Since the encoding and syndrome computing share some multiplexers 300 and registers 400 for respective iterative operations, when receiving signals, it is necessary to distinguish that the signal is for encoding or syndrome computing. The job function is carried out by the multiplexers 300. Please see
When syndrome computing is required, the syndrome computing unit 200 operates. The syndrome computing unit 200 can process to obtain computed values of G(j) and a complete syndrome, S. Therefore, it satisfies operation of matrix XSRG. Thus, in the jth clock (jth iterative calculation), p inputs (r0(j), r1(j), r2(j), . . . and r(p-1)(j)) of R(j) are inputted to the co-design circuit 10 sequentially. By an iterative operation, after [n/p] times of calculations, the complete syndrome S (S1(1), S1(2), . . . , S1(2), . . . S2t(m)) can be outputted from the co-design circuit 10. Numbers or letters in subscript brackets of S represent one bit of a corresponding syndrome. For example, S2t(m) is the mth bit of the syndrome S2t. Since the encoding and syndrome computing share some multiplexers 300 and registers 400 for respective iterative operations, when receiving signals, it is necessary to distinguish that the signal is for encoding or syndrome computing. The job function is also carried out by the multiplexers 300. Please see
Please refer to
According to the introduction of the co-design circuit for BCH encoding and syndrome computing, a method for deciding the co-design circuit can be available as below: First, build up XR, XG and XS according to p parallel computations and 2t syndromes (S11). Then, build up FP (S12), F′(S13) and F″ (S14) sequentially. According to the built matrices, build up matrix [XSRG F″](S15). Finally, design a circuit fulfilling operation of matrix [XSRG F″](S16).
While the invention has been described in terms of what is presently considered to be the most practical and preferred embodiment, it is to be understood that the invention needs not be limited to the disclosed embodiment. On the contrary, it is intended to cover various modifications and similar arrangements included within the spirit and scope of the appended claims, which are to be accorded with the broadest interpretation so as to encompass all such modifications and similar structures.
Number | Name | Date | Kind |
---|---|---|---|
20100262894 | Swing | Oct 2010 | A1 |
Number | Date | Country | |
---|---|---|---|
20150318869 A1 | Nov 2015 | US |