The present application claims priority of Korean Patent Application No. 10-2008-0130462, filed on Dec. 19, 2008, which is incorporated herein by reference in its entirety.
1. Field of the Invention
Exemplary embodiments of the present invention relate to an apparatus and method for coding a low density parity check (LDPC) code; and, more particularly, to a quasi-cyclic LDPC (QC-LDPC) coding apparatus and method.
2. Description of Related Art
As the wired/wireless communication systems are developed toward digital systems, incoming/outgoing data are coded and then transmitted. Diverse coding schemes have been developed. Coding schemes which enable a receiver to correct errors of data transmitted from a transmitter by using forward error correction (FEC) codes are mainly used. Specifically, wireless communication systems further require an FEC coding scheme as a channel coding scheme in a wireless channel environment where data error frequently occurs. Examples of the FEC coding scheme include a convolution coding scheme, a turbo coding scheme, and an LDPC coding scheme. Most attention has been paid to the LDPC coding scheme.
The LDPC coding scheme was introduced by Gallager. The LDPC codes are defined by a parity check matrix in which the minimum number of elements has a value of “1” and most elements have a value of “0”. The LDPC codes are classified into regular LDPC codes and irregular LDPC codes. The regular LDPC codes are LDPC codes suggested by Gallager where all rows in the parity check matrix have the same number of values “1” as elements and all columns have the same number of values “1” as elements. Unlike this, in the parity check matrix of the irregular LDPC codes, there are rows having different numbers of values “1” or columns having different numbers of values “1”. It is known that the irregular LDPC codes are superior to the regular LDPC codes in an error correction performance.
It is assumed that the LDPC code is coded in accordance with a systematic method. That is, a part of a packet is outputted in the same format as inputted bit, and a rest part of the packet has a format that additional information corresponding to a parity bit is consecutively added and outputted. Therefore, the coding operation is performed when the input signal is completely inputted to a block which manages a coding function. Furthermore, a rate of the parity bit in the entire packet is different according to a code rate. Therefore, the code rate is fixed by an H matrix. The coding procedure will be described below with reference to
An LDPC code is a linear block code, and a basic coding is performed by the product of a generator matrix and information vector. That is, in
Therefore, a correlated generator matrix may be calculated using a parity check matrix. However, when the coding of the LDPC code is performed, such a method is not performed due to complexity. This is because the parity check matrix 122 has a sparse format, which is one of features of the LDPC code. If the generator matrix 120 is calculated using the parity check matrix 122 having the above-described format, it can be seen that many elements of the generator matrix 120 have “1”. That there are a large number of “1s” means that the operations must be performed many times with information vector elements during the coding. This means the increase of hardware complexity for the processing. On the contrary, if there are a large number of “0s”, a complexity problem does not occur because it is unnecessary to consider information vector element of a corresponding position. Thus, if the coding of the LDPC code is performed like a linear block code, the coding may be performed based on the parity check matrix 122, without using the generator matrix 120, when performing the coding in order to solve the complexity problem to some extent.
The generator matrix 120 may be divided into a systematic or non-systematic generator matrix according to its format. In the case of the systematic generator matrix, a predetermined portion of the codeword, which is obtained by the product of the information vector and the generator matrix, is made equal to the information vector. That is, the information vector appears in the codeword as it is. On the contrary, in the case of the non-systematic generator matrix, the information vector does not appear in the codeword. The information vector may be made to appear in a predetermined portion of the codeword by inserting an identity matrix into a specific portion of the systematic generator matrix. This may be expressed as Equation 1 below.
The codeword U is calculated by the product of the information vector m and the generator matrix G. A predetermined portion of the systematic generator matrix is constituted with a submatrix P (which is not limited to formats, any matrix is possible), and a remaining portion thereof is constituted with an identity matrix which is a square matrix having the same size as the information vector. If the identity matrix is placed behind, the information vector appears at a tail portion of the codeword, and a head portion of the codeword becomes the parity bit. If the positions of the submatrix P and the identity matrix are exchanged with each other, the information vector appears at a head portion, and a tail portion of the codeword becomes the parity bit.
In the case of using the parity check matrix, the parity check matrix may be mostly easily generated using a Gaussian elimination method. In the Gaussian elimination method, there is an unknown value, and the parity check matrix is generated using a method of solving the known value using an equation. However, in the case of using the Gaussian elimination method, a large number of equations must be calculated during the elimination, causing increase of complexity. A Richardson coding method is used as an LDPC coding method for solving the above-described problem.
The Richardson coding method divides the parity check matrix with the LDPC code into blocks, and generates parity bits through correlated matrix equations. Specifically, the H matrix is divided into six submatrices and an output parity bit is produced when an input vector is given as a simultaneous equation of the matrices. The Richardson coding method may code the elements of the matrix, without regard to values of the elements, only if the matrix has an approximate lower triangular form. That is, the Richardson coding method has a limitation in that it can use only in an arbitrary parity check matrix having an approximate lower triangular form.
Next, a QC-LDPC coding method suggested by Fossorier will be described below.
The QC-LDPC coding method uses a quasi-cyclic matrix. First, a cyclic matrix will be described. As illustrated in
An A0 matrix 210 is a 4×4 square matrix which is a unit matrix having is at diagonal elements. An A1 matrix 220 is a square matrix in which positions of is in the A0 matrix 210 are shifted right by 1 bit. An A2 matrix 230 is a square matrix in which positions of is in the A1 matrix 220 are again shifted right by 1 bit. An A3 matrix 240 is a square matrix in which positions of is in the A2 matrix 230 are again shifted right by 1 bit. An A− matrix 200 is a zero matrix in which all elements of the 4×4 square matrix are “0”.
The QC-LDPC coding method suggested by Fossorier is a QC LDPC code showing the elements of the parity check matrix as a cyclic shifted identity matrix and “0” matrix, as not the elements “0” and “1” on GF(2). The LDPC code adopted in the Institute of Electrical and Electronics Engineers (IEEE) 802.16e or 802.11n is an irregular QC-LDPC code, and a parity bit part thereof has a block-type dual diagonal matrix format.
As described above, a codeword 330 becomes a zero matrix 340 when it is multiplied by two parity check matrices 310 and 320. The latter 320 of the two parity check matrices 310 and 320 has a dual diagonal matrix format. Since the QC-LDPC coding is performed using such a structure, the complexity in the practical implementation increases.
Another method was suggested by Zongwang Li et al. According to this method, the matrix product operation of a generator matrix obtained using a parity check matrix of a QC-LDPC code and information bits is divided into two steps, and parity bits are generated at each step through a coder implemented with a cyclic shift-register. However, the use of the cyclic shift-register increases a waiting time.
An embodiment of the present invention is directed to a QC-LDPC coding apparatus and method, which are capable of reducing complexity.
Another embodiment of the present invention is directed to a QC-LDPC coding apparatus and method, which are capable of reducing a waiting time during coding.
Another embodiment of the present invention is directed to a QC-LDPC coding apparatus and method, which are capable of reducing complexity and waiting time by using a parity check matrix using a QC-LDPC scheme proposed in the IEEE 802.1x standard.
Other objects and advantages of the present invention can be understood by the following description, and become apparent with reference to the embodiments of the present invention. Also, it is obvious to those skilled in the art to which the present invention pertains that the objects and advantages of the present invention can be realized by the means as claimed and combinations thereof.
In accordance with an embodiment of the present invention, a high-speed quasi-cyclic low density parity check (QC-LDPC) coding apparatus for coding inputted information into a generator matrix having a dual diagonal matrix format includes: a parity bit generation unit configured to generate an arbitrary parity bit; a temporary parity bit generation unit configured to constitute the inputted information with circulants, and shift and combine the respective circulants at each row to generate a temporary parity bit; a corrected bit generation unit configured to generate corrected bits of parity bits by using an output of the temporary parity bit generation unit; and a parity bit correction unit configured to correct the temporary parity bit by reflecting an output of the corrected bit generation unit to the output of the temporary parity bit generation unit.
In accordance with another embodiment of the present invention, a high-speed quasi-cyclic low density parity check (QC-LDPC) coding method for coding inputted information into a generator matrix having a dual diagonal matrix format includes: generating an arbitrary parity bit; constituting the inputted information with circulants, and shifting and combining the respective circulants at each row to generate a temporary parity bit; generating corrected bits of parity bits by using an output of the temporary parity bit generation unit; and correcting the temporary parity bit by reflecting an output of the corrected bit generation unit to the output of the temporary parity bit generation unit.
Exemplary embodiments of the present invention will be described below in more detail with reference to the accompanying drawings. The present invention may, however, be embodied in different forms and should not be constructed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the present invention to those skilled in the art. Throughout the disclosure, like reference numerals refer to like parts throughout the various figures and embodiments of the present invention.
A QC-LDPC coding method in accordance with the exemplary embodiment of the present invention will be described below based on an LDPC coding method. Instead of an arbitrary parity check matrix of an LDPC code, a parity check matrix proposed in the IEEE 802.1x standard will be used. Therefore, an efficient LDPC coding having a low linear complexity can be performed in a unique method differentiated from an existing coding method. To this end, the LDPC coding method in accordance with an exemplary embodiment of the present invention can have a low linear complexity by using directly using a proposed parity check matrix in a coding operation. Furthermore, an arbitrary parity bit generation, a corrected bit generation, and a parity bit correction are sequentially performed by using a circulant matrix of the proposed parity check matrix and a parity check matrix having a dual diagonal parity format.
Thus, the QC-LDPC coding method achieves an entire coding through a consecutive partial coding by applying a quasi-cyclic characteristic.
Furthermore, in the parity check matrix in accordance with the exemplary embodiment of the present invention, the matrix product operation of information vector and systematic part of the parity check matrix is implemented through a small number of global wires and a cyclic shift-register. Thus, the efficient LDPC coding apparatus having a low linear complexity by using the parity check matrix proposed in the standard can maintain the number of global wires required when the coding is performed by extending an LDPC coding method using the circulant matrix of the proposed parity check matrix.
In the exemplary embodiment of the present invention, the efficient LDPC coding step having a lower linear complexity by using the parity check matrix proposed in the standard uses a parity check matrix having the proposed dual diagonal parity format. Thus, the QC-LDPC coding method in accordance with the exemplary embodiment of the present invention may be implemented with parallel shift-registers in order to performing the entire coding by consecutively executing the partial coding by applying the coding method, which is sequentially performed through the arbitrary parity bit generation, the corrected bit generation, and the parity bit correction, to the quasi-cyclic characteristic of the parity check matrix. Moreover, there are disclosed an apparatus and method which can reduce necessary clocks by minimizing idle-state shift-registers when the consecutive coding of various information vectors is performed.
First, the expression of the QC-LDPC code and the parity check matrix H proposed in the IEEE 802.11n and 802.16e standards will be described. The term “circulant” defines a square matrix in which the respective rows have the same weight and are arranged cyclically from the uppermost row to the lowermost row, as described in the background of the invention. Furthermore, the first row of the circulant is defined as a circulant generator. The circulant can be completely generated through a generator and represented as a generator. As one example, the circulant having “1” as the weight of each row can be defined. In the matrix A=(Ai, j), Ai, j is expressed as Equation 2 below, and the matrix A is defined as a B×B permutation matrix.
where a a ⊕B b≡(a+b) mod B
The matrix Ai is defined as a circulant permutation matrix obtained by shifting right the B×B unit matrix by i (where i is an integer from 0 to B−1). The B×B zero matrix is defined as A−, as described above with reference to
In Equation 3 above, all si, j are defined in the sample space of {−, 0, 1, . . . , B−1}. As such, the LDPC code coded using the matrix H constituted with the circulant permutation matrices is defined as a QC-LDPC code. In addition, in Equation 3 above, Hs is defined as an (MB)×(KB) matrix related to the systematic part of c, and Hp is defined as an (MB)×(MB) matrix related to the parity part of c. P(H) is defined as a circulant matrix of H in which the zero matrix and the circulant permutation matrix of H are represented by 0 and 1. E(H) is defined as an exponential matrix of H. In this case, E(H5) and E(Hp) are defined like E(H). Thus, E(H), E(Hs), and E(Hp) may be defined as Equation 4 below.
The matrix H proposed in the IEEE 802.11n standard and IEEE 802.16e standard is constituted in the form of the circulant permutation format and has the dual diagonal parity format. The dual diagonal parity format is defined as Equation 5 below.
One example is taken based on the definition of Equation 5. When M=6, E(HP) may be expressed as Equation 6 below.
The coding method using the matrix H proposed like Equation 6 is derived from the coding method using P(H) of the proposed matrix H. If the extension from the coding using P(H) to the coding using H is considered when performing the coding of the QC-LDPC code, a new efficient coding apparatus and method may be implemented by applying the quasi-cyclic characteristic of H. The coding in accordance with the exemplary embodiment of the present invention is performed by three blocks.
As described above, it is assumed that information u 400 is information sequence having {u0, u1, . . . , uK-1} and ui has a format of {ui, 0, ui, 1, . . . , ui, B-1} for i (where, i is an integer from 0 to K−1). Thus, as illustrated in
The temporary parity bit (pi) generation unit 410 may be roughly divided into two parts: a cyclic left shift-register and adder 411, and subblocks for generating the parity bits. The first subblock 412 among the subblocks 412 to 418 for generating the parity bits receives the parity bit provided to the arbitrary parity bit generation unit 440, and the remaining subblocks 413 to 418 receive the parity bit information from each previous subblock. That is, the subblock 412 for P1 may be configured to receive the parity bit information provided from the arbitrary parity bit generation unit 440, and calculate an equation for the first row of the parity check matrix. The calculated value of the equation for the first row is used in an equation for the second row of the parity matrix. That is, the equation for the second row may be solved using the calculated solution of the equation for the first row. In this way, each equation is solved. The last subblock 418 calculates the (M−1)th row of the parity check matrix and outputs the calculated value.
The operation of the QC-LDPC coding apparatus having the above-described configuration will be described with respect to time t. The subblocks 412 to 418 include sequential subblocks for pi (where i is an integer from 1 to M−1). The respective subblocks illustrated in
In Equation 7 above, ai, j defined as an AS generator, ujt defines the cyclic left t-shifted vector, and a superscript T defines a transposition operation of a vector.
The operation of the configuration illustrated in
Since the coding apparatus using H is extended from the coding apparatus using P(H), the number of global wires required is not increased but maintained as it is. Although extending from P(H) to H, the complexity in this processing part is not increased. In order to perform the coding based on the dual diagonal parity format, the arbitrary parity bit generation block generates the parity bit p0 arbitrarily. In order for a simple operation, the arbitrary parity bit p0 may be set to a 1×B zero vector. During consecutive (M−2)+B clocks, the temporary parity bit generation block partially generates different temporary parity bits pi derived from the arbitrary parity bit po for (where is an integer from 1 to M−1) at each clock. When the clock is (M−2)+(B−1), the different temporary parity bits pi for i (where i is an integer from 1 to M−1) are completely generated.
The corrected bit generation unit 420 based on the clocks of
p
0,t-(M-1)
c
=p
0,(t-(M-1))⊕
(s
⊕p
M-1,t-(M-1)
⊕x
M-1,t-(m-1) Eq. 8
Next, the operation of the corrected bit generation unit 420 of
p0c is a corrected bit for the arbitrary parity bit p0. During consecutive B clocks, p0c is partially generated at each clock. When the clock is (M−1)+(B−1), p0c is completely generated.
The parity bit correction unit 430 based on the clocks of
The operation of the parity bit correction unit 430 will be described below, based on Equation 9 above. During consecutive B clocks, the arbitrary parity bit p0 and the different temporary parity bits pi for i (where i is an integer from 1 to M−1) are partially corrected at each clock. As a result, the coding method in accordance with the embodiment of the present invention consecutively performs the M-parallel partial coding. When the clocks necessary to input the information u 400 to the temporary parity bit generation unit 410 is neglected, M+s0, K+B clocks are required for the coding of KB information bits. However, when the n number of information u is consecutively coded, the coding method in accordance with the embodiment of the present invention requires (M+s0, K+B)+(n−1)×(s0, k+B), which is less than n×(M+s0, K+B).
A detailed description will be made with reference to
Therefore, as illustrated in
In the consecutive coding, the idle-state subblocks and blocks are used for the coding of next information. Thus, clocks required for the entire coding may be reduced. The reduction of the clocks depends on the circulant size B and s0, K of E(H).
In the case of the conventional two-step coding method, the coding of the next information cannot be performed until the coding of the information u is completed. That is, when the consecutive coding is performed on the n number of information u, the two-step coding method requires n×(M+s0, K+B), which is larger than the coding method in accordance with the embodiment of the present invention.
In view of the use of the cyclic left shift-register, the operation of the cyclic left shift-register and adder subblock 411 is similar to the operation of the first step of the two-step coding method. However, the cyclic left shift-register used in the embodiment of the present invention is induced by the extension from the coding apparatus using P(H) to the coding apparatus using H. Also, the cyclic left shift-register in accordance with the embodiment of the present invention, which is used in the two-step coding method, is induced during the procedure of performing the coding by applying the matrix decomposition to the generator matrix G obtained through H. Therefore, the number of global wires connected to the cyclic left shift-register in the coding method in accordance with the embodiment of the present invention is identical to the number of global wires connected to the cyclic left shift-register in the first step of the two-step coding method.
However, due to the inverse matrix operation of Hp in the second step of the two-step coding method, the cyclic left shift-register of the second step additionally requires more global wires than that of the first step.
For the understanding of the invention, E(H) and E(Gp) of E(H) will be described below, taking the following example. The matrix Gp is defined as a matrix corresponding to the parity part of the systematic G. E(Gp) is defined as exponentials of the circulant, which are the sum of the circulant permutation matrices. As one example, the circulant having an exponential of 0⋄1⋄4 is defined as the sum of the circulant permutation matrices A0, A1 and A4, and may be expressed as Equation 10 below.
If P(H) like the example of Equation 10 above is implemented by the coding method in accordance with the embodiment of the present invention, it may be illustrated like
Referring to
The shift-registers 721, 722, 723 and 724 sequentially shift the added input value to output p1. The output of the first shift-register 721 among the shift-registers 721, 722, 723 and 724 which output p1 influences the output of p2. The previous shift-register influences the output of the next shift-register. In addition, the second shift-register 732 among the shift-registers 730, 732, 733 and 734 which output p2 influences the input of the third shift-register 745 among the shift-registers 741, 742, 745 and 746 which output p3. In this way, the respective shift-registers are influenced and the final value is fed back to P1 and P2 and corrected.
That is, the following rule is applied on the rows other than the first row. It is assumed that the previous row number, that is, the first row number, is 1; the second row number is 2; and the third row number is 3. In the second row, the output of the shift register having the previous row number among the shift-registers of the previous row, that is, the output of the first shift-register, is added before being inputted to the shift-register having its own row number, that is, the second shift-register.
The case of extending the configuration of
Specifically,
Comparing
Referring to
In
The entire coding is performed during 10 clocks through the cyclic left shift of the information registers. P0, 0, p1, 0, p2, 0, and p3, 0 are generated at the sixth clock, and p0, i, p1, i, p2, i, and p3, i for i (where i is an integer from 1 to 4) are consecutively generated at each of the remaining 4 clocks.
Therefore, the QC-LDPC coding apparatus in accordance with the embodiment of the present invention may generate the parity check matrix illustrated in
In accordance with the exemplary embodiments of the present invention, the LDPC coding apparatus is proposed for the wired/wireless communication system. In implementing the LDPC coding apparatus, the linear complexity is reduced by performing the coding directly using the parity check matrix. Furthermore, compared with the existing methods, the hardware complexity is remarkably reduced. Moreover, when the consecutive coding is performed on several information vectors, the entire clocks required for the consecutive coding are reduced through the efficient use of the coder registers, thereby implementing a more efficient coding apparatus.
Although E(H) and E(Gp) of E(H) have been described for easy understanding of the coding apparatus and method in accordance with the embodiments of the present invention, they are merely exemplary, and the invention is not limited thereto.
While the present invention has been described with respect to the specific embodiments, it will be apparent to those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the invention as defined in the following claims.
Number | Date | Country | Kind |
---|---|---|---|
10-2008-0130462 | Dec 2008 | KR | national |