US20150046768A1 - Encoding method and system for quasi-cyclic low-density parity-check code - Google Patents

Encoding method and system for quasi-cyclic low-density parity-check code Download PDF

Info

Publication number
US20150046768A1
US20150046768A1 US14/454,996 US201414454996A US2015046768A1 US 20150046768 A1 US20150046768 A1 US 20150046768A1 US 201414454996 A US201414454996 A US 201414454996A US 2015046768 A1 US2015046768 A1 US 2015046768A1
Authority
US
United States
Prior art keywords
matrix
parity check
vector
quasi
cyclic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US14/454,996
Other versions
US9450612B2 (en
Inventor
JUNQIANG Hu
Ting Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Laboratories America Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Laboratories America Inc filed Critical NEC Laboratories America Inc
Priority to US14/454,996 priority Critical patent/US9450612B2/en
Assigned to NEC LABORATORIES AMERICA INC. reassignment NEC LABORATORIES AMERICA INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HU, JUNQIANG, WANG, TING
Publication of US20150046768A1 publication Critical patent/US20150046768A1/en
Assigned to NEC CORPORATION reassignment NEC CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: NEC LABORATORIES AMERICA, INC.
Application granted granted Critical
Publication of US9450612B2 publication Critical patent/US9450612B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1177Regular LDPC codes with parity-check matrices wherein all rows and columns have the same row weight and column weight, respectively
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/255Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with Low Density Parity Check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes

Definitions

  • the present invention relates to signal processing, and more particularly to an encoding method and system for quasi low-density parity-check (LDPC) code.
  • LDPC quasi low-density parity-check
  • Low-Density-Parity-Check (LDPC) codes are commonly given in the form of a parity check matrix H.
  • Generator matrix G is preferred to be in (or close to) systematic form, i.e., the form of [I
  • Most of the existing encoding methods do not provide systematic form. Such methods increase encoding complexity, and also lead to the difficulty in direct extraction of information bits without decoding.
  • a method includes applying a quasi-cyclic matrix M to an input vector X of encoded data to generate a vector Y
  • the method further includes applying a matrix Q to the vector Y to generate a vector Z.
  • the method also includes recursively generating, using a processor, parity check bits P for the encoded data from the vector Z and an identity matrix variant I*.
  • the encoded data includes quasi-cyclic low-density parity-check code.
  • the identity matrix variant I* is composed of Toeplitz sub-matrices.
  • a computer program product includes a computer readable storage medium having computer readable program code embodied therein for performing a method.
  • the method includes applying a quasi-cyclic matrix M to an input vector X of encoded data to generate a vector Y.
  • the method further includes applying a matrix Q to the vector Y to generate a vector Z.
  • the method also includes recursively generating parity check bits P for the encoded data from the vector Z and an identity matrix variant I*.
  • the encoded data includes quasi-cyclic low-density parity-check code.
  • the identity matrix variant I* is composed of Toeplitz sub-matrices.
  • a system includes an encoder, having a processor, for applying a quasi-cyclic matrix M to an input vector X of encoded data to generate a vector Y, applying a matrix Q to the vector Y to generate a vector Z, and recursively generating, using a processor, parity check bits P for the encoded data from the vector Z and an identity matrix variant I*.
  • the encoded data includes quasi-cyclic low-density parity-check code.
  • the identity matrix variant I* is composed of Toeplitz sub-matrices.
  • FIG. 1 shows a low-density parity-check (LDPC) code encoding system 100 , in accordance with an embodiment of the present principles
  • FIG. 2 further shows the FEC pre-processor sub-system 106 of FIG. 1 , in accordance with an embodiment of the present principles
  • FIG. 3 further shows the FEC encoder 110 of FIG. 1 , in accordance with an embodiment of the present principles.
  • FIG. 4 shows an exemplary method 400 for encoding quasi-cyclic LDPC code, in accordance with an embodiment of the present principles.
  • the present principles are directed to an encoding method and system for quasi low-density parity-check (LDPC) code.
  • LDPC quasi low-density parity-check
  • the present principles provide a method to compose a generator matrix in (or close to) systematic form. Based on this generator, the present principles further simplify the encoding process in three steps, to directly generate the parity bits from pre-calculated matrix.
  • LDPC code a class of linear block code, with row and column weight much lower than the rows and columns respectively.
  • Quasi-cyclic code A linear block code that can be divided into several blocks, within each block, it is cyclic code.
  • Circulant a special kind of Toeplitz matrix where each row vector is rotated one element to the right relative to the preceding row vector
  • the column or row rank of a matrix is the maximum number of linear independent column or row vectors of the matrix
  • the solution provided by the present principles reduces LDPC encoder complexity, which leads to faster operation and lower cost.
  • FIG. 1 shows an exemplary low-density parity-check (LDPC) code encoding system 100 , in accordance with an embodiment of the present principles.
  • the system 100 can be divided into two sub-systems: an off-line generator-matrix calculation sub-system 106 ; and encoding sub-system 110 .
  • LDPC low-density parity-check
  • the off-line generator-matrix calculation sub-system 106 is a computer or other computing system running software to calculate the generator matrix based on given input matrix 102 (usually parity check matrix), using the algorithm described herein.
  • the encoding sub-system 110 encodes the input bit sequence 104 into the output forward error correction (FEC) code 112 , using the above mentioned generator matrix 108 .
  • FEC forward error correction
  • the pre-processor 106 executes once, to obtain the generator matrix 108 .
  • FEC encoder 110 can be activated to process the input sequence 104 .
  • encoding sub-system 110 includes a processor 111 .
  • encoding sub-system 110 can use a processor in another element, such as pre-processor 106 .
  • the present principles involve an FEC pre-processing stage and an FEC encoding stage.
  • the FEC encoding stage can be considered to include three steps.
  • the first stage i.e., the FEC pre-processing stage, generate M, D, Q, and I* matrix (pre-generated).
  • the first stage can involve the following:
  • D matrix is obtained by: finding the least number of columns of circulants in H with rank r, say l with c ⁇ l ⁇ t, such that these columns of circulants form a c ⁇ l sub-array D, whose rank is equal to the rank r of H.
  • parity check matrix H (which is matrix input 102 in system 100 ) of a QC-LDPC code has the form of H(cb ⁇ tb), where b is dimension of circulants, c is row circulants and t is column circulants. Further assume the rank of H is r where r ⁇ cb
  • I is (tb ⁇ lb) ⁇ (tb ⁇ lb) identity matrix
  • O is (lb ⁇ r) ⁇ (tb ⁇ lb) matrix of zeros
  • G ⁇ g i,j ⁇ , where 1 ⁇ i ⁇ tb ⁇ r, 1 ⁇ j ⁇ lb.
  • j ⁇ k*b+t 1 ⁇ k ⁇ l, 1 ⁇ m ⁇ d c (k) ⁇ (i.e., it is the linear dependent column)
  • G c keeps all the information (bit sequence input 104 in FIG. 1 ) bits which has block length of (tb ⁇ r) and generates r parity bits. These tb bits forms encoded bit sequence output 112 .
  • the following embodiments further describe the matrixes 108 and their generation procedure; the usage of 108 in FEC encoder 110 and the procedure to calculate output sequence 112 .
  • Q d c (i)hu T is obtained by setting the lb-r linearly dependent elements ⁇ q ij ⁇ to zeros (these elements correspond to the lb-r linearly dependent columns of D* T ). Generate other columns in Q T from Q d c (i) T to have Q T in quasi-cyclic mode (with b ⁇ b circulants), and let the following:
  • I* is of quasi-cyclic form, and can be expressed as follows:
  • I * [ A 1 , 1 A 1 , 2 ... A 1 , l A 2 , 1 A 2 , 2 ... A 2 , l ⁇ ⁇ ⁇ ⁇ A l , 1 A l , 2 ... A l , l ] ( 11 )
  • a i , i [ 1 a ii , 1 ... a ii , d c ⁇ ( i ) a ii , d c ⁇ ( i ) 1 ⁇ ⁇ ⁇ ⁇ 1 0 a ii , 1 a ii , 1 ⁇ ⁇ ⁇ ⁇ 1 ⁇ ⁇ 1 0 a ii , 1 ... a ii , d c ⁇ ( i ) 1 ] ⁇ ⁇ and ( 12 )
  • a i , j [ 0 a ij , 1 ... a ij , d c ⁇ ( i ) a ij , d c ⁇ ( i ) ⁇ ⁇ ⁇ a ij , 1 a ij , 1 ⁇ 0 ⁇ ⁇ ⁇ ⁇ 0 a ij , 1 ... a ij , d d
  • Both A i,i and A i,j are a Toeplitz matrices.
  • C [X ⁇
  • FIG. 2 further shows the FEC pre-processor sub-system 106 of FIG. 1 , in accordance with an embodiment of the present principles.
  • the FEC pre-processor sub-system 106 includes an input matrix permutation block 204 (hereinafter “block 204 ”), a quasi-cyclic matrix Q calculation (calculator) block 206 (hereinafter “block 206 ”), and a multiplication block 208 (hereinafter “block 208 ”).
  • a parity check matrix H 202 is input to the sub-system 106 .
  • FIG. 3 further shows the FEC encoder 110 of FIG. 1 , in accordance with an embodiment of the present principles.
  • the FEC encoder 110 includes a QC-LDPC encoder portion 304 (hereinafter “block 304 ) for calculating bit sequence Y, a QC-LDPC encoder portion 308 (hereinafter “block 308 ”) for calculating bit sequence Z, recursive operation 312 (hereinafter “block 312 ”) for generating parity bits P, and an output organizer 314 .
  • the FEC encoder 110 can also include an output organizer 314 (hereinafter “block 314 ”).
  • the FEC encoder 100 receives an input bit sequence 104 and provides an encoded bit sequence output 112 .
  • FIG. 4 shows an exemplary method 400 for encoding quasi-cyclic LDPC code, in accordance with an embodiment of the present principles.
  • Steps 410 through 430 pertain to FEC pre-processing.
  • Steps 440 through 460 pertain to LDPC encoding.
  • Steps 410 through 430 are executed in pre-processor 106 .
  • H is the input matrix (or structured bit sequence).
  • the first operation in 106 is sequence adjustment (column permutation), as block 204 in FIG. 2 .
  • M from block 204 is passed to FEC encoder 110 , as part of matrixes 108 .
  • the second operation is to generate another matrix Q in block 206 , which has quasi-cyclic form.
  • Q is also part of matrixes 108 outputted to FEC encoder.
  • D and Q are multiplied in block 208 to get matrix I*. From equation (11) ⁇ (13), it can be observed that I* is close to the identity matrix, and the number of non-zero elements depends on the number of linear-dependent columns.
  • step 420 generate quasi-cyclic matrix Q, of size lb ⁇ lb.
  • Q d c (i) T can be obtained by setting the lb-r linearly dependent elements ⁇ q ij ⁇ to zeros (these elements correspond to the lb-r linearly dependent columns of D* T ). Generate other columns in Q T from Q d c (i) T to have Q T in quasi-cyclic mode (with bxb circulants).
  • step 430 can involve the following.
  • An identity matrix can be used as follows:
  • I * [ A 1 , 1 A 1 , 2 ... A 1 , l A 2 , 1 A 2 , 2 ... A 2 , l ⁇ ⁇ ⁇ ⁇ A l , 1 A l , 2 ... A l , l ]
  • both A i,j and A i,j are Toeplitz matrices.
  • the FEC encoding can involve the following. From its (d c (i)+1)- th row, we have the following equation:
  • the calculation of Q ⁇ Y in step 450 is another quasi-cyclic encoding using a similar approach to step 440 .
  • a recursive operation (block 312 ) is performed to recursively calculate parity check bits, with coefficients of Toeplitz sub-matrixes.
  • the preceding blocks 304 , 308 , and 312 form a 3-stage encoder.
  • the output is made up of information bits (input sequence 104 ) and generated parity bits, and can be re-arranged in any sequence by the output organizer (block 314 ) before being output ( 112 ).
  • Embodiments described herein may be entirely hardware, entirely software or including both hardware and software elements.
  • the present invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
  • Embodiments may include a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.
  • a computer-usable or computer readable medium may include any apparatus that stores, communicates, propagates, or transports the program for use by or in connection with the instruction execution system, apparatus, or device.
  • the medium can be magnetic, optical, electronic, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium.
  • the medium may include a computer-readable medium such as a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (RUM), a rigid magnetic disk and an optical disk, etc.
  • such phrasing is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of the third listed option (C) only, or the selection of the first and the second listed options (A and B) only, or the selection of the first and third listed options (A and C) only, or the selection of the second and third listed options (B and C) only, or the selection of all three options (A and B and C).
  • This may be extended, as readily apparent by one of ordinary skill in this and related arts, for as many items listed.
  • Low-Density Parity-Check (LDPC) codes are commonly given in the form of parity check matrix.
  • Generator matrix G is preferred to be in (or close to) systematic form, i.e., the form of [I
  • Most of the existing encoding methods do not provide systematic form. Such methods increase encoding complexity, and also lead to the difficulty in direct extraction of information bits without decoding.
  • the present invention proposes a method to compose a generator matrix in (or close to) systematic form. Based on this generator, the present invention further simplifies the encoding process in three steps, to directly generate the parity bits from pre-calculated matrix.
  • LDPC code a class of linear block code, with row and column weight much lower than the rows and columns respectively.
  • Cyclic code a linear block error-correcting code that have convenient algebraic structure for efficient error detection and correction. It's formally defined as:
  • Quasi-cyclic code A linear block code that can be divided into several blocks, within each block, it is cyclic code.
  • Circulant a special kind of Toeplitz matrix where each row vector is rotated one element to the right relative to the preceding row vector
  • the column or row rank of a matrix is the maximum number of linear independent column or row vectors of the matrix
  • the solution of the present invention reduces LDPC encoder complexity, which leads to faster operation and lower cost.
  • the present invention related system 100 can be divided into two sub-systems: off-line generator-matrix calculation system 106, which is a computer or other computing system running software to calculate the generator matrix based on given input matrix 102 (usually parity check matrix), using the algorithm described in the present invention; encoding sub-system 110 which is either a dedicated hardware or software, to encode the input bit sequence 104 into the output FEC code 112 , using the above mentioned generator matrix 108 .
  • the pre-processor 106 executes once, to obtain 108 .
  • FEC encoder 110 can be activated to process the input sequence 104 .
  • parity check matrix H (which is matrix input 102 in system 100 ) of a QC-LDPC code has the form of H(cb ⁇ tb), where b is dimension of circulants, c is row circulants and t is column circulants. Further assume the rank of H is r where r ⁇ cb. We first find the least number of columns of circulants in H with rank r, say l with c ⁇ l ⁇ t, such that these columns of circulants form a c ⁇ l subarray D, whose rank is equal to the rank r of H. We permute the columns of circulants of H to form a new c ⁇ t array H* of circulants, such that the last (or the rightmost) 1 columns of circulants of H* form the array of D. Let
  • I is (tb ⁇ lb) ⁇ (tb ⁇ lb) identical matrix
  • O is (lb ⁇ r) ⁇ (tb ⁇ lb) matrix of zeros
  • G ⁇ g i., ⁇ , where 1 ⁇ i ⁇ tb ⁇ r, 1 ⁇ j ⁇ lb.
  • j ⁇ k*b+t 1 ⁇ k ⁇ l, 1 ⁇ m ⁇ d c (k) ⁇ (i.e., it is the linear dependent column)
  • G c keeps all the information (bit sequence input 104 in FIG. 1 ) bits which has block length of (tb ⁇ r) and generates r parity bits. These tb bits forms encoded bit sequence output 112 .
  • the following embodiments further describe the matrixes 108 and their generation procedure; the usage of 108 in FEC encoder 110 and the procedure to calculate output sequence 112 .
  • Q d c (i) T is obtained by setting the lb-r linearly dependent elements ⁇ q ij ⁇ to zeros (these elements correspond to the lb-r linearly dependent columns of D* T ). Generate other columns in Q T from Q d c (i) T to have Q T in quasi-cyclic mode (with b ⁇ b circulants), and let
  • I* is of quasi-cyclic form, and can be expressed as
  • I * [ A 1 , 1 A 1 , 2 ... A 1 , l A 2 , 1 A 2 , 2 ... A 2 , l ⁇ ⁇ ⁇ ⁇ A l , 1 A l , 2 ... A l , l ] ( 11 )
  • a i , i [ 1 a ii , 1 ... a ii , d c ⁇ ( i ) a ii , d c ⁇ ( i ) 1 ⁇ ⁇ ⁇ ⁇ 1 0 a ii , 1 a ii , 1 ⁇ ⁇ ⁇ ⁇ 1 ⁇ ⁇ 1 0 a ii , 1 ... a ii , d c ⁇ ( i ) 1 ] ⁇ ⁇ and ( 12 )
  • a i , j [ 0 a ij , 1 ... a ij , d c ⁇ ( i ) a ij , d c ⁇ ( i ) ⁇ ⁇ ⁇ a ij , 1 a ij , 1 ⁇ 0 ⁇ ⁇ ⁇ ⁇ 0 a ij , 1 ... a ij , d d
  • Both A i,j and A i,j are Toeplitz matrix.
  • C [X ⁇
  • Q d c (i) T can be obtained by setting the lb-r linearly dependent elements ⁇ q ij ⁇ to zeros (these elements correspond to the lb-r linearly dependent columns of D* T ). Generate other columns in Q T from Q d c (i) T to have Q T in quasi-cyclic mode (with b ⁇ b circulants)
  • I * [ A 1 , 1 A 1 , 2 ... A 1 , l A 2 , 1 A 2 , 2 ... A 2 , l ⁇ ⁇ ⁇ ⁇ A l , 1 A l , 2 ... A l , l ]
  • a i , i [ 1 a ii , 1 ... a ii , d c ⁇ ( i ) a ii , d c ⁇ ( i ) 1 ⁇ ⁇ ⁇ ⁇ 1 0 a ii , 1 a ii , 1 ⁇ ⁇ ⁇ 1 ⁇ 0 a ii , 1 ... a ii , d c ⁇ ( i ) 1 ] ⁇ ⁇ ⁇ and
  • a i , j [ 0 a ij , 1 ... a ij , d c ⁇ ( i ) a ij ]
  • Both A i,j and A i,j are Toeplitz matrix.
  • H is the input matrix (or structured bit sequence); the first operation in 106 is sequence adjustment (column permutation), as block 204 in FIG. 2 .
  • M from 204 is passed to FEC encoder 110 , as part of matrixes 108 ; second operation is to generate another matrix Q in 206 , which has quasi-cyclic form.
  • Q is also part of matrixes 108 outputted to FEC encoder. D and Q are multiplied in 208 to get matrix I* which is close to identical matrix.
  • the second step Q ⁇ Y ( 308 ) is another quasi-cyclic encoder using similar approach.
  • the third step ( 312 ) is to recursively calculate parity check bits, with coefficients of Toeplitz sub-matrixes. So it makes a 3-stage encoder.
  • the output is made up of information bits (input sequence 104 ) and generated parity bits, and can be re-arranged in any sequence ( 314 ) before output ( 112 ).
  • a method to generate parity check encoded data the parity check matrix His QC-LDPC code; the rank r of H is less than its row number.
  • I * [ A 1 , 1 A 1 , 2 ... A 1 , l A 2 , 1 A 2 , 2 ... A 2 , l ⁇ ⁇ ⁇ ⁇ A l , 1 A l , 2 ... A l , l ] ,
  • a i , j [ 0 a ij , 1 ... a ij , d c ⁇ ( i ) a ij , d c ⁇ ( i ) ⁇ ⁇ ⁇ a ij , 1 a ij , 1 ⁇ 0 ⁇ ⁇ ⁇ ⁇ 0 a ij , 1 ... a
  • the generator has the form of
  • I is (tb ⁇ lb) ⁇ (tb ⁇ lb) identical matrix
  • O is (lb ⁇ r) ⁇ (tb ⁇ lb) matrix of zeros
  • G ⁇ g ij ⁇ , where 1 ⁇ i ⁇ tb ⁇ r, 1 ⁇ j ⁇ lb. (t is the number of column circulants in H, b is the matrix size of each circulant)
  • D matrix is obtained by: finding the least number of columns of circulants in H with rank r, say l with c ⁇ t ⁇ t, such that these columns of circulants form a c ⁇ l subarray D, whose rank is equal to the rank r of H
  • the advantage is obtained from the fact that the first step multiplication is with quasi-cyclic sparse matrix which has low complexity, and the second step is the multiplication with cb ⁇ cb matrix which has much lower size than other solutions, and the third step of solving P from Toeplitz matrix.

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

A method and system are provided. The method includes applying a quasi-cyclic matrix M to an input vector X of encoded data to generate a vector Y. The method further includes applying a matrix Q to the vector Y to generate a vector Z. The method also includes recursively generating, using a processor, parity check bits P for the encoded data from the vector Z and an identity matrix variant I. The encoded data includes quasi-cyclic low-density parity-check code. The identity matrix variant t is composed of Toeplitz sub-matrices.

Description

    RELATED APPLICATION INFORMATION
  • This application claims priority to provisional application Ser. No. 61/864,743 filed on Aug. 12, 2013, incorporated herein by reference.
  • BACKGROUND
  • 1. Technical Field
  • The present invention relates to signal processing, and more particularly to an encoding method and system for quasi low-density parity-check (LDPC) code.
  • 2. Description of the Related Art
  • Low-Density-Parity-Check (LDPC) codes are commonly given in the form of a parity check matrix H. The generator matrix G is required to be orthogonal with parity the check matrix H, such that H·GT=[O], where [O] is zero matrix. Generator matrix G is preferred to be in (or close to) systematic form, i.e., the form of [I|G′] where I is an identity matrix, so that the encoded data will be composed of direct information bits and parity check bits. Most of the existing encoding methods do not provide systematic form. Such methods increase encoding complexity, and also lead to the difficulty in direct extraction of information bits without decoding.
  • SUMMARY
  • These and other drawbacks and disadvantages of the prior art are addressed by the present principles, which are directed to an encoding method and system for quasi low-density parity-check (LDPC) code.
  • According to an aspect of the present principles, a method is provided. The method includes applying a quasi-cyclic matrix M to an input vector X of encoded data to generate a vector Y The method further includes applying a matrix Q to the vector Y to generate a vector Z. The method also includes recursively generating, using a processor, parity check bits P for the encoded data from the vector Z and an identity matrix variant I*. The encoded data includes quasi-cyclic low-density parity-check code. The identity matrix variant I* is composed of Toeplitz sub-matrices.
  • According to another aspect of the present principles, a computer program product is provided that includes a computer readable storage medium having computer readable program code embodied therein for performing a method. The method includes applying a quasi-cyclic matrix M to an input vector X of encoded data to generate a vector Y. The method further includes applying a matrix Q to the vector Y to generate a vector Z. The method also includes recursively generating parity check bits P for the encoded data from the vector Z and an identity matrix variant I*. The encoded data includes quasi-cyclic low-density parity-check code. The identity matrix variant I* is composed of Toeplitz sub-matrices.
  • According to yet another aspect of the present principles, a system is provided. The system includes an encoder, having a processor, for applying a quasi-cyclic matrix M to an input vector X of encoded data to generate a vector Y, applying a matrix Q to the vector Y to generate a vector Z, and recursively generating, using a processor, parity check bits P for the encoded data from the vector Z and an identity matrix variant I*. The encoded data includes quasi-cyclic low-density parity-check code. The identity matrix variant I* is composed of Toeplitz sub-matrices.
  • These and other features and advantages will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings.
  • BRIEF DESCRIPTION OF DRAWINGS
  • The disclosure will provide details in the following description of preferred embodiments with reference to the following figures wherein:
  • FIG. 1 shows a low-density parity-check (LDPC) code encoding system 100, in accordance with an embodiment of the present principles;
  • FIG. 2 further shows the FEC pre-processor sub-system 106 of FIG. 1, in accordance with an embodiment of the present principles;
  • FIG. 3 further shows the FEC encoder 110 of FIG. 1, in accordance with an embodiment of the present principles; and
  • FIG. 4 shows an exemplary method 400 for encoding quasi-cyclic LDPC code, in accordance with an embodiment of the present principles.
  • DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
  • The present principles are directed to an encoding method and system for quasi low-density parity-check (LDPC) code.
  • In an embodiment, the present principles provide a method to compose a generator matrix in (or close to) systematic form. Based on this generator, the present principles further simplify the encoding process in three steps, to directly generate the parity bits from pre-calculated matrix.
  • The following term definitions are provided.
  • LDPC code: a class of linear block code, with row and column weight much lower than the rows and columns respectively.
  • Cyclic code: a linear block error-correcting code that have convenient algebraic structure for efficient error detection and correction. It can be formally defined as: “Let C be a linear code over a finite field GF(q) of block length n. C is called a cyclic code, if for every codeword c=(c1, . . . , cn) from C , the word (cn,c1, . . . ,cn-1) in GF(q″) obtained by a cyclic right shift of components is again a codeword”
  • Quasi-cyclic code: A linear block code that can be divided into several blocks, within each block, it is cyclic code.
  • Circulant: a special kind of Toeplitz matrix where each row vector is rotated one element to the right relative to the preceding row vector
  • Rank: the column or row rank of a matrix is the maximum number of linear independent column or row vectors of the matrix
  • Advantageously, the solution provided by the present principles reduces LDPC encoder complexity, which leads to faster operation and lower cost.
  • FIG. 1 shows an exemplary low-density parity-check (LDPC) code encoding system 100, in accordance with an embodiment of the present principles. The system 100 can be divided into two sub-systems: an off-line generator-matrix calculation sub-system 106; and encoding sub-system 110.
  • The off-line generator-matrix calculation sub-system 106 is a computer or other computing system running software to calculate the generator matrix based on given input matrix 102 (usually parity check matrix), using the algorithm described herein.
  • The encoding sub-system 110 encodes the input bit sequence 104 into the output forward error correction (FEC) code 112, using the above mentioned generator matrix 108. With given matrix 102, the pre-processor 106 executes once, to obtain the generator matrix 108. After the generator matrix 108 is calculated, FEC encoder 110 can be activated to process the input sequence 104.
  • In an embodiment, encoding sub-system 110 includes a processor 111. In another embodiment, encoding sub-system 110 can use a processor in another element, such as pre-processor 106. These and other variations of system 100 are readily determined by one of ordinary skill in the art given the teachings of the present principles provided herein, while maintaining the spirit of the present principles.
  • A description will now be given of an encoding algorithm, in accordance with an embodiment of the present principles. The encoding algorithm will be initially described generally, and then further described in additional detail.
  • The present principles involve an FEC pre-processing stage and an FEC encoding stage. As mentioned herein, the FEC encoding stage can be considered to include three steps.
  • In the first stage, i.e., the FEC pre-processing stage, generate M, D, Q, and I* matrix (pre-generated). The first stage can involve the following:
  • (1) D matrix is obtained by: finding the least number of columns of circulants in H with rank r, say l with c≦l≦t, such that these columns of circulants form a c×l sub-array D, whose rank is equal to the rank r of H.
    (2) M matrix is obtained by: permuting the columns of circulants of H to form a new c×t array H* of circulants, such that the last (or the rightmost) l columns of circulants of H* form the array of D, then H*=[M|D].
    (3) Q matrix is obtained by: removing the linearly dependent rows Ddc(i,j)T·QT (1≦i≦l, 1≦j≦dc(i)) from DT·QT=I*; for each column of circulant in QT, choose the dc(i)+1)- th column (name as Qd c (i)T={qi1,qi2, . . . , qi(lb)}) and generate equation D*T·Qd c (i) T={1,0, . . . ,0}T, where D*T is DT with linear dependent rows removed. Setting the lb-r linearly dependent elements {qij} to zeros to have Qd c (i) T. Generate other columns in QT from Qd c (i) T to have QT in quasi-cyclic mode.
    (4) I* calculated from DT·QT
  • In the second stage, encoding is performed as follows:
  • (1) Calculate Y=M·X. (2) Calculate Z=Q·Y.
  • (3) Solve P from (Q·D)·P+=Z.
  • An advantage is obtained from the fact that the first step multiplication is with quasi-cyclic sparse matrix which has low complexity, and the second step is the multiplication with cb×cb matrix which has much lower size than other solutions, and the third step of solving P from Toeplitz matrix.
  • A more detailed description of the encoding algorithm will now be given, in accordance with an embodiment of the present principles.
  • Assume parity check matrix H (which is matrix input 102 in system 100) of a QC-LDPC code has the form of H(cb×tb), where b is dimension of circulants, c is row circulants and t is column circulants. Further assume the rank of H is r where r<cb
  • We first find the least number of columns of circulants in H with rank r, say l with c≦l≦t, such that these columns of circulants form a c×l sub-array D, whose rank is equal to the rank r of H. We permute the columns of circulants of H to form a new c×t array H* of circulants, such that the last (or the rightmost) l columns of circulants of H* form the array of D.

  • Let H*=[M|D]  (1)
  • In one embodiment, we use the left-most consecutive columns (if any) of each circulant in D as the linear dependent columns. The following description uses this embodiment as an example, although it is to be appreciated that other columns can be taken in a more general case. Name these columns (from left to right) as Ddc(i,j), where i (1≦i≦l) is the column of circulant, and j (1≦j<b) is the column inside that circulant. Set the number of independent columns in each column of circulant as dc(i) 1≦i≦l), then 1≦j≦dc(i).
  • Consider the generator matrix in the following form:
  • G c = [ - I O | G ] , ( 2 )
  • where I is (tb−lb)×(tb−lb) identity matrix; O is (lb−r)×(tb−lb) matrix of zeros; G={gi,j}, where 1≦i≦tb−r, 1≦j≦lb. For j∈{k*b+t, 1≦k≦l, 1≦m≦dc(k)} (i.e., it is the linear dependent column), gi,j=1 when i=j and gi,j=0 when j≠i. Let generated code be as follows:

  • C=G c ·X=[X |P +],   (3)
  • where Xis the first (tb−lb) of encoded data, and P+=[p1, p2, . . . , plb] is parity bits plus the remaining of X. The form of Gc keeps all the information (bit sequence input 104 in FIG. 1) bits which has block length of (tb−r) and generates r parity bits. These tb bits forms encoded bit sequence output 112.
  • The following embodiments further describe the matrixes 108 and their generation procedure; the usage of 108 in FEC encoder 110 and the procedure to calculate output sequence 112.
  • Applying H* to C, we have the following:

  • [M|D]·[X |P + ]=M·X +D·P +=0,   (4)
  • Thus, we have the following:

  • M·X =D·P +  (5)
  • Consider quasi-cyclic matrix Q of dimension lb×lb, and apply it to Equation (5), we get the following:

  • (M·X )=Q·(D·P +),   (6)

  • which is,

  • (Q·D)·P + =Q·(M·X )   (7)
  • In one embodiment, we look for Q to have (Q·D) close to as follows:

  • D T ·Q T ˜l   (8)
  • We removing the linear dependent rows (Ddc(i,j)T·QT, with 1≦i≦l, 1≦j≦dc(i)) in (8) to solve Q. For each column of circulant in QT, choose the (dc(i)+1)-th column (name as Qd c (i) T={qi1, qi2, . . . , qi(lb)}) and generate the following equation:

  • D* T ·Q d c (i) T={1,0, . . . , ,0}T   (9)
  • where D*T is DT with linear dependent rows removed. Qd c (i)hu T is obtained by setting the lb-r linearly dependent elements {qij} to zeros (these elements correspond to the lb-r linearly dependent columns of D*T). Generate other columns in QT from Qd c (i) T to have QT in quasi-cyclic mode (with b×b circulants), and let the following:

  • Q·D=I*   (10)
  • Then I* is of quasi-cyclic form, and can be expressed as follows:
  • I * = [ A 1 , 1 A 1 , 2 A 1 , l A 2 , 1 A 2 , 2 A 2 , l A l , 1 A l , 2 A l , l ] ( 11 )
  • From the way Q is obtained, we have the following:
  • A i , i = [ 1 a ii , 1 a ii , d c ( i ) a ii , d c ( i ) 1 1 0 a ii , 1 a ii , 1 1 1 0 a ii , 1 a ii , d c ( i ) 1 ] and ( 12 ) A i , j = [ 0 a ij , 1 a ij , d c ( i ) a ij , d c ( i ) a ij , 1 a ij , 1 0 0 a ij , 1 a ij , d c ( i ) 1 ] ( j i ) ( 13 )
  • Both Ai,i and Ai,j are a Toeplitz matrices. Q, M, and I* (=Q·D) are the matrices 108 which are generated in 106 and used in 110.
  • From Equation (7), let

  • (Q·D)P + =Q·(M·X )   (7)

  • (M·X )=[z 1 , z 2 , z lb]  (14)
  • For each row of circulants in I*, from its (dc(i)+1)-th row, we have the following equation:

  • Σi l=1Σj=1 d c (i) a ik,j ·p i*b+j +p k*b+d c (k)+1 =z k*b+d c (k)+1(1≦k≦l)   (15)
  • from which we can have pk*b+d c (k)+1 (1≦k≦l). For each row below (say u-th row below dc(i)+1, 1≦u≦b−(dc(i)+1)), we have the following:

  • Σi=1 lΣj=1 d c (i) a ik,j ·p i*b+(j+u)%A(b+1) +p k*b+(d c (k)+1+u)A%(b+1) =z k*b+(d c (k)+1+u)%(b+1)   (16)
  • where “%” is modulus operation. So each parity bit can be obtained from the result of previous row.
  • As from equation (3), C=[X|P+] farms the output bit sequence 112 in FIG. 1.
  • FIG. 2 further shows the FEC pre-processor sub-system 106 of FIG. 1, in accordance with an embodiment of the present principles. The FEC pre-processor sub-system 106 includes an input matrix permutation block 204 (hereinafter “block 204”), a quasi-cyclic matrix Q calculation (calculator) block 206 (hereinafter “block 206”), and a multiplication block 208 (hereinafter “block 208”). A parity check matrix H 202 is input to the sub-system 106.
  • FIG. 3 further shows the FEC encoder 110 of FIG. 1, in accordance with an embodiment of the present principles. The FEC encoder 110 includes a QC-LDPC encoder portion 304 (hereinafter “block 304) for calculating bit sequence Y, a QC-LDPC encoder portion 308 (hereinafter “block 308”) for calculating bit sequence Z, recursive operation 312 (hereinafter “block 312”) for generating parity bits P, and an output organizer 314. The FEC encoder 110 can also include an output organizer 314 (hereinafter “block 314”). The FEC encoder 100 receives an input bit sequence 104 and provides an encoded bit sequence output 112.
  • FIG. 4 shows an exemplary method 400 for encoding quasi-cyclic LDPC code, in accordance with an embodiment of the present principles. Steps 410 through 430 pertain to FEC pre-processing. Steps 440 through 460 pertain to LDPC encoding.
  • Steps 410 through 430 are executed in pre-processor 106. From the system point of view, H is the input matrix (or structured bit sequence). Referring to FIGS. 1, 2, and 4, the first operation in 106 is sequence adjustment (column permutation), as block 204 in FIG. 2. M from block 204 is passed to FEC encoder 110, as part of matrixes 108. The second operation is to generate another matrix Q in block 206, which has quasi-cyclic form. Q is also part of matrixes 108 outputted to FEC encoder. D and Q are multiplied in block 208 to get matrix I*. From equation (11)˜(13), it can be observed that I* is close to the identity matrix, and the number of non-zero elements depends on the number of linear-dependent columns.
  • We now describe the FEC pre-processing procedure with respect to steps 410 through 430.
  • At step 410, extract M and D matrices.
  • In an embodiment, step 410 involves the following. We first find the least number of columns of circulants in H with rank r, say with c≦l≦t, such that these columns of circulants form a c×l sub-array D, whose rank is equal to the rank r of H. We permute the columns of circulants of II to form a new ext array H* of circulants, such that the last (or the rightmost) l columns of circulants of H* form the array of D. Let H*=[M|D].
  • At step 420, generate quasi-cyclic matrix Q, of size lb−lb.
  • In an embodiment step 420 involves the following. For each column of circulant in QT(i.e., the transposed matrix Q), choose the (dc(i)+1)th column (name as Qd c (i) T={qi1, qi2. . . , qi(lb)}) and generate the following equation:

  • D* T ·Q d c (i) T={1,0, . . . , 0}T
  • where D*T is DT with linear dependent rows removed. Qd c (i) T can be obtained by setting the lb-r linearly dependent elements {qij} to zeros (these elements correspond to the lb-r linearly dependent columns of D*T). Generate other columns in QT from Qd c (i) T to have QT in quasi-cyclic mode (with bxb circulants).
  • At step 430, calculate Q·D.
  • In an embodiment, step 430 can involve the following. An identity matrix can be used as follows:
  • I * = [ A 1 , 1 A 1 , 2 A 1 , l A 2 , 1 A 2 , 2 A 2 , l A l , 1 A l , 2 A l , l ] where A i , i = [ 1 a ii , 1 a ii , d c ( i ) a ii , d c ( i ) 1 1 0 a ii , 1 a ii , 1 1 1 0 a ii , 1 a ii , d c ( i ) 1 ] for i = j , and and A i , j = [ 0 a ij , 1 a ij , d c ( i ) a ij , d c ( i ) a ij , 1 a ij , 1 0 0 a ij , 1 a ij , d c ( i ) 1 ] for j i .
  • It is to be appreciated that both Ai,j and Ai,j are Toeplitz matrices.
  • We now describe the FEC encoding procedure with respect to steps 440 through 460.
  • At step 440, calculate Y=M·X.
  • At step 450, calculate Z=Q·Y.
  • At step 460, solve P from (Q·D)·P+=Z.
  • Thus, steps 440 through 460 involve calculating Y=M·X, Z=Q·Y, and solving P from (Q·D)·P+=Z.
  • In an embodiment, the FEC encoding can involve the following. From its (dc(i)+1)-th row, we have the following equation:

  • Σi=1 lΣj=1 d c (i) a ik,j ·p i*b+j +p k*b+d c (k)+1 =z k*b+d c (k)+1(1≦k≦l),
  • from which we can have pk*b+d c (k)+1(1≦k≦l). For each row below (say u-th row below dc(i)+1, 1≦u≦b−(dc(i)+1), we have the following:

  • Σi=1 lΣj=1 d c (i) a ik,j ·p i*b+(j+u)%(b+1) +p k*b+(d c (k)+1+u)%(b+1) =z k*b+(d c (k)+1+u)%(b+1)
  • where “%” is modulus operation. So each parity bit can be obtained from the result of the previous row.
  • For the first operation (block 304 in FIG. 3), Y=M·X, because M is low-density quasi-cyclic matrix, either serial or parallel QC-LDPC encoding method can be applied.
  • In an embodiment, the calculation of Q·Y in step 450 is another quasi-cyclic encoding using a similar approach to step 440.
  • Regarding 460, a recursive operation (block 312) is performed to recursively calculate parity check bits, with coefficients of Toeplitz sub-matrixes. Thus, the preceding blocks 304, 308, and 312 form a 3-stage encoder. The output is made up of information bits (input sequence 104) and generated parity bits, and can be re-arranged in any sequence by the output organizer (block 314) before being output (112).
  • Embodiments described herein may be entirely hardware, entirely software or including both hardware and software elements. In a preferred embodiment, the present invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
  • Embodiments may include a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. A computer-usable or computer readable medium may include any apparatus that stores, communicates, propagates, or transports the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be magnetic, optical, electronic, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. The medium may include a computer-readable medium such as a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (RUM), a rigid magnetic disk and an optical disk, etc.
  • It is to be appreciated that the use of any of the following “l”, “and/or”, and “at least one of”, for example, in the cases of “AB”, “A andor B” and “at least one of A and B”, is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of both options (A and B). As a further example, in the cases of “A, B, andor C” and “at least one of A, B, and C”, such phrasing is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of the third listed option (C) only, or the selection of the first and the second listed options (A and B) only, or the selection of the first and third listed options (A and C) only, or the selection of the second and third listed options (B and C) only, or the selection of all three options (A and B and C). This may be extended, as readily apparent by one of ordinary skill in this and related arts, for as many items listed.
  • The foregoing is to be understood as being in every respect illustrative and exemplary, but not restrictive, and the scope of the invention disclosed herein is not to be determined from the Detailed Description, but rather from the claims as interpreted according to the full breadth permitted by the patent laws. Additional information is provided in an appendix to the application entitled, “Additional Information”. It is to be understood that the embodiments shown and described herein are only illustrative of the principles of the present invention and that those skilled in the art may implement various modifications without departing from the scope and spirit of the invention. Those skilled in the art could implement various other feature combinations without departing from the scope and spirit of the invention.
  • APPENDIX Additional Information Encoding Method And System For Quasi-Cyclic Low-Density Parity-Check Code
  • A1. Describe the problem that the present invention attempts to solve.
  • Low-Density Parity-Check (LDPC) codes are commonly given in the form of parity check matrix. H. The generator matrix G is required to be orthogonal with parity check matrix H, such that H·GT=[O] where [O] is zero matrix. Generator matrix G is preferred to be in (or close to) systematic form, i.e., the form of [I|G′] where I is identical matrix, so that the encoded data will be composed of direct information bits and parity check bits. Most of the existing encoding methods do not provide systematic form. Such methods increase encoding complexity, and also lead to the difficulty in direct extraction of information bits without decoding.
  • The present invention proposes a method to compose a generator matrix in (or close to) systematic form. Based on this generator, the present invention further simplifies the encoding process in three steps, to directly generate the parity bits from pre-calculated matrix.
  • Terms Definition:
  • LDPC code: a class of linear block code, with row and column weight much lower than the rows and columns respectively.
  • Cyclic code: a linear block error-correcting code that have convenient algebraic structure for efficient error detection and correction. It's formally defined as:
      • “Let C be a linear code over a finite field GF(q) of block length n. C is called a cyclic code, if for every codeword c=(c1, . . . , cn) from C, the word (cn,c1, . . . , cn−1) in GF(q″) obtained by a cyclic right shift of components is again a codeword”
  • Quasi-cyclic code: A linear block code that can be divided into several blocks, within each block, it is cyclic code.
  • Circulant: a special kind of Toeplitz matrix where each row vector is rotated one element to the right relative to the preceding row vector
  • Rank: the column or row rank of a matrix is the maximum number of linear independent column or row vectors of the matrix
  • A2. How have others attempted to solve the problem described in A1?
  • Reference [1] in prior art section gives a method to obtain systematic form of generator matrix, for both full-rank matrix and non-full-rank matrix. It calculates the parity check bits directly from this generator matrix using shift-register-adder-accumulator. However, such direct calculation still requires a lot of computation power, because the size of the generator matrix related to parity check bits is about the size of information bit length. For full-rank parity check matrix, the authors further give a two-stage encoding method, which is first multiplying input vector with matrix M, and then multiplying with another matrix D−1, with Hqc=[M|D], where Hqc is obtained from column circulants permutation of H, and D is a square matrix with the same rank as H. The two-phase method greatly saves computation power, but is only feasible for full-rank parity check matrix.
  • A3. How does the invention solve the problem described in A1?
  • The present invention further reduces computation cost, for non-full-rank parity check matrix, by first generating a quasi-cyclic matrix Q, to have DT·QT˜I (close to identical matrix), where D is generated by finding the least number of columns of circulants in H with rank r, say l with c≦l≦t, such that these columns of circulants form a c×l subarray D. Then we calculate the value of y=M·X where M is the subarray of H with D removed, and X is input vector; then multiply y with Q to have z, and then use Q·D as coefficient to solve parity bits P.
  • B. What is the specific competitive/commercial value of the solution achieved by the present invention (e.g., less complexity, faster operation, lower cost, higher quality, etc.)?
  • The solution of the present invention reduces LDPC encoder complexity, which leads to faster operation and lower cost.
  • System Description
  • As given in FIG. 1, the present invention related system 100 can be divided into two sub-systems: off-line generator-matrix calculation system 106, which is a computer or other computing system running software to calculate the generator matrix based on given input matrix 102 (usually parity check matrix), using the algorithm described in the present invention; encoding sub-system 110 which is either a dedicated hardware or software, to encode the input bit sequence 104 into the output FEC code 112, using the above mentioned generator matrix 108. With given matrix 102, the pre-processor 106 executes once, to obtain 108. After 108 is calculated, FEC encoder 110 can be activated to process the input sequence 104.
  • Assume parity check matrix H (which is matrix input 102 in system 100) of a QC-LDPC code has the form of H(cb×tb), where b is dimension of circulants, c is row circulants and t is column circulants. Further assume the rank of H is r where r<cb. We first find the least number of columns of circulants in H with rank r, say l with c≦l≦t, such that these columns of circulants form a c×l subarray D, whose rank is equal to the rank r of H. We permute the columns of circulants of H to form a new c×t array H* of circulants, such that the last (or the rightmost) 1 columns of circulants of H* form the array of D. Let

  • H*=[M|D],   (1)
  • In one embodiment, we use the left-most consecutive columns (if any) of each circulant in D as the linear dependent columns. The following description uses this embodiment as example, though other columns can be taken in more general case. Name these columns (from left to right) as Ddc(i, j), where i (1≦i≦l) is the column of circulant, and j (1≦j≦b) is the column inside that circulant. Set the number of independent columns in each column of circulant as dc(i) (1≦i≦l), then 1≦j≦dc(i).
  • Consider generator matrix in the form of
  • G c = [ - I O | G ] , ( 2 )
  • where I is (tb−lb)×(tb−lb) identical matrix; O is (lb−r)×(tb−lb) matrix of zeros; G={gi.,}, where 1≦i≦tb−r, 1≦j≦lb. For j∈{k*b+t, 1≦k≦l, 1≦m≦dc(k)} (i.e., it is the linear dependent column), gi,j=1 when i=j and g,j=0 when j≠i. Let generated code

  • C=G c ·X=[X |P +],   (3)
  • where Xis the first (tb−lb) of encoded data, and P+=[p1, p2, . . . , plb] is parity bits plus the remaining of X. The form of Gc keeps all the information (bit sequence input 104 in FIG. 1) bits which has block length of (tb−r) and generates r parity bits. These tb bits forms encoded bit sequence output 112.
  • The following embodiments further describe the matrixes 108 and their generation procedure; the usage of 108 in FEC encoder 110 and the procedure to calculate output sequence 112.
  • Apply H* to C, we have:

  • [M|D]·[X |P+ ]=M·X +D·P +=0,   (4)
  • So,

  • M·X =D·P +  (5)
  • Consider quasi-cyclic matrix Q of dimension lb×lb, and apply to equation (5), we get

  • (M·X)=Q·(D·P +),   (6)
  • which is,

  • (Q·D)·P + =Q·(M·X )   (7)
  • In one embodiment, we look for Q to have (Q·D) close to I:

  • D T Q T ˜l   (8)
  • We removing the linear dependent rows (Ddc(i,j)T·QT, 1≦i≦l, 1≦j≦dc(i)) in (8) to solve Q. For each column of circulant in QT, choose the (dc(i)+1)-th column (name as Qd c (i) T={qi1, qi2, . . . , qi(lb)}) and generate the following equation:

  • D* T ·Q d c (i) T={1,0, . . . , 0}T   (9)
  • where D*T is DT with linear dependent rows removed. Qd c (i) T is obtained by setting the lb-r linearly dependent elements {qij} to zeros (these elements correspond to the lb-r linearly dependent columns of D*T). Generate other columns in QT from Qd c (i) T to have QT in quasi-cyclic mode (with b×b circulants), and let

  • Q·D=I*   (10)
  • Then I* is of quasi-cyclic form, and can be expressed as
  • I * = [ A 1 , 1 A 1 , 2 A 1 , l A 2 , 1 A 2 , 2 A 2 , l A l , 1 A l , 2 A l , l ] ( 11 )
  • From the way Q is obtained, we have
  • A i , i = [ 1 a ii , 1 a ii , d c ( i ) a ii , d c ( i ) 1 1 0 a ii , 1 a ii , 1 1 1 0 a ii , 1 a ii , d c ( i ) 1 ] and ( 12 ) A i , j = [ 0 a ij , 1 a ij , d c ( i ) a ij , d c ( i ) a ij , 1 a ij , 1 0 0 a ij , 1 a ij , d c ( i ) 1 ] ( j i ) ( 13 )
  • Both Ai,j and Ai,j are Toeplitz matrix. Q, M, and I* (=Q·D) are the matrixes 108 which are generated in 106 and used in 110.
  • From equation (7), let

  • (Q·D)·P + =Q·(M·X)   (7)

  • (M·X )=[z 1, z2, . . . , zlb]  (14)
  • For each row of circulants in I*, from its (dc(i)+1)-th row, we have equation

  • Σi=1 lΣj=1 d c (i) a ik,j ·p i*b+j +p k*b+d c (k)+1 =z k*b+d c (k)+1(1≦k≦l)   (15)
  • from which we can have pk*b+d c (k)+1 (1≦k≦l). For each row below (say u-th row below dc(i)+1, 1≦u≦b−(dc(i)+1)), we have

  • Σi=1 lΣj=1 d c (i) a ik,j ·p i*b+(j+u)%(b+1) +p k*b+(d c (k)+1+u)%(b+1) =z k*b+(d c (k)+1+u)%(b+1)   (16)
  • “%” is modulus operation. So each parity bit can be obtained from the result of previous row.
  • As from equation (3), C=[X|P+] forms the output bit sequence 112 in FIG. 1.
  • Procedure Explanation:
  • 1) extract M and D matrix:
  • We first find the least number of columns of circulants in H with rank r, say l
  • with c≦l≦t, such that these columns of circulants form a c×l subarray D, whose rank is equal to the rank r of H. We permute the columns of circulants of H to form a new c×t array H* of circulants, such that the last (or the rightmost) l columns of circulants of H* form the array of D. Let

  • H*=[M|D]
  • 2) Generate quasi-cyclic matrix Q, of size lb×lb:
  • For each column of circulant in QT, choose the (dc(i)+1)-th column (name as Qd c (i) T {qi1, qi2, . . . , qi(lb)}) and generate the following equation:

  • D* T ·Q d c (i) T={1,0, . . . , 0}T
  • where D*T is DT with linear dependent rows removed. Qd c (i) T can be obtained by setting the lb-r linearly dependent elements {qij} to zeros (these elements correspond to the lb-r linearly dependent columns of D*T). Generate other columns in QT from Qd c (i) T to have QT in quasi-cyclic mode (with b×b circulants)
  • 3) Calculate Q·D
  • With the above method, we can have
  • I * = [ A 1 , 1 A 1 , 2 A 1 , l A 2 , 1 A 2 , 2 A 2 , l A l , 1 A l , 2 A l , l ] where A i , i = [ 1 a ii , 1 a ii , d c ( i ) a ii , d c ( i ) 1 1 0 a ii , 1 a ii , 1 1 1 0 a ii , 1 a ii , d c ( i ) 1 ] and A i , j = [ 0 a ij , 1 a ij , d c ( i ) a ij , d c ( i ) a ij , 1 a ij , 1 0 0 a ij , 1 a ij , d c ( i ) 1 ] ( j i )
  • Both Ai,j and Ai,j are Toeplitz matrix.
  • The above steps are executed in pre-processor 106. For system point of view, H is the input matrix (or structured bit sequence); the first operation in 106 is sequence adjustment (column permutation), as block 204 in FIG. 2. M from 204 is passed to FEC encoder 110, as part of matrixes 108; second operation is to generate another matrix Q in 206, which has quasi-cyclic form. Q is also part of matrixes 108 outputted to FEC encoder. D and Q are multiplied in 208 to get matrix I* which is close to identical matrix.
  • Now is the encoding procedure:
  • calculate Y=M·X, Z=Q·Y, and solve P from (Q·D)·P+=Z following the procedure:
      • from its (dc(i)+1)-th row, we have equation

  • Σi=1 lΣj=1 d c (i) a ik,j ·p i*b+j +p k*b+d c (k)+1 =z k*b+d c (k)+1(1≦k≦l)
      • from which we can have n pk*b+d c (k)+1(1≦k≦l). For each row below
      • (say u-th row below dc(i)+1 , 1≦u≦b−(dc(i)+1)), we have

  • Σi=1 lΣj=1 d c (i) a ik,j ·p i*b+(j+u)%(b+1) +p k*b+(d c (k)+1+u)%(b+1) =z k*b+(d c (k)+1+u)%(b+1)
      • “%” is modulus operation. So each parity bit can be obtained from the result of previous row.
  • For the first operation (block 304 in FIG. 3), Y=M·X, because M is low-density quasi-cyclic matrix, either serial or parallel QC-LDPC encoding method can be applied, as from prior art [1]. The second step Q·Y (308) is another quasi-cyclic encoder using similar approach. The third step (312) is to recursively calculate parity check bits, with coefficients of Toeplitz sub-matrixes. So it makes a 3-stage encoder. The output is made up of information bits (input sequence 104) and generated parity bits, and can be re-arranged in any sequence (314) before output (112).
  • 1. A method to generate parity check encoded data; the parity check matrix His QC-LDPC code; the rank r of H is less than its row number.
      • Three steps encoding is applied to generate parity check bits, where the first step is to apply one matrix M to input vector X, to generate vector Y; and the second step to apply a second matrix Q to Y, to generate vector Z; and the third step to solve the equation of parity bits P from Z and a third matrix I*. The first two steps are QC-LDPC encoder that may use feed-back shift registers.
      • 1.1. Matrix A is a subset of H, generated by removing some circulants from H
        • 1.1.1. The removed circulants are named matrix D, generated by: finding the least number of columns of circulants in H with rank r, such that these columns of circulants form subarray D, whose rank is equal to the rank r of H.
      • 1.2. H is reorganized to H* in form of H*=[M|D]
      • 1.3. I* is a matrix close to identical matrix
      • 1.3.1. I* is of quasi-cyclic form
  • I * = [ A 1 , 1 A 1 , 2 A 1 , l A 2 , 1 A 2 , 2 A 2 , l A l , 1 A l , 2 A l , l ] ,
  • where Ai,j(i=1, . . . , l; j=1, . . . , l) is a cyclic circulant, each circulant of the same size as that in H
        • 1.3.1.1. 1 is the least number of columns of circulants in H with rank r
        • 1.3.1.2. Ai,j is Toeplitz matrix, with the form of
  • A i , i = [ 1 a ii , 1 a ii , d c ( i ) a ii , d c ( i ) 1 1 0 a ii , 1 a ii , 1 1 1 0 a ii , 1 a ii , d c ( i ) 1 ] for i = j , and A i , j = [ 0 a ij , 1 a ij , d c ( i ) a ij , d c ( i ) a ij , 1 a ij , 1 0 0 a ij , 1 a ij , d c ( i ) 1 ] for j i .
  • 1.4. Q is the matrix to have Q·D=I*
      • 1.4.1. Q is in quasi-cyclic form
        • 1.4.2. Q is obtained by solving D*T Qk(.)T =t1,0, where D*T is from DT with linear dependent rows removed; Qk(i) T is a selected column of the i-th circulant in Q
        • 1.4.2.1. The linear dependent rows of DT are selected from the first columns of each circulant
        • 1.4.2.2. The selected k is the (dc(i)+1)-th, where dc(i) is the number of linear dependent rows in circulant i of matrix DT
        • 1.4.2.3. Qk(i) T is obtained by setting its linearly dependent elements {qij} to zeros, where these linearly dependent elements correspond to the linearly dependent columns of D* T
  • 1.5. The generator has the form of
  • G c = [ - I O | G ] ,
  • where I is (tb−lb)×(tb−lb) identical matrix; O is (lb−r)×(tb−lb) matrix of zeros; G={gij}, where 1≦i≦tb−r, 1≦j≦lb. (t is the number of column circulants in H, b is the matrix size of each circulant)
      • 1.5.1. For the corresponding linear dependent columns in D, for j∈

  • {k*b+t,1≦k≦l,1≦m≦d c(k)}, gi,j=1 when i=j and gi,j=0 when j≠i
      • 1.5.2. Encoded data is of form [X|P+], where Xis the first (tb-lb) of encoded data, and P+=[p1, p2, . . . , plb] is parity bits plus the remaining of X
      • At least the following parts are new from the prior art:
        • 1) the way to generate Q, to make D·Q close to I (call I*)
        • 2) I* is Toeplitz matrix
        • 3) the three steps approach to obtain P, by first multiplying M with input vector X to get y, then multiplying y with Q to have z, and then solve P from I* ·P=z.
          Step 1: generate M, D, Q, and I* matrix (pre-generated)
  • 1) D matrix is obtained by: finding the least number of columns of circulants in H with rank r, say l with c≦t≦t, such that these columns of circulants form a c×l subarray D, whose rank is equal to the rank r of H
  • 2) M matrix is obtained by: permuting the columns of circulants of H to form a new c×t array H* of circulants, such that the last (or the rightmost) l columns of circulants of H* form the array of D, then H*=[M|D]
  • 3) Q matrix is obtained by: removing the linearly dependent rows from Ddc(i,j)T·QT(1≦i≦l, 1≦j≦dc(i)); for each column of circulant in QT, choose the (dc(i)+1)-th column (name as Qd c (i) T={qi1, qi2, . . . , qi(lb)}) and generate equationD dc(i)T D*T·Qd c (i) T={1,0, . . . , 0}T, where D*T is DT with linear dependent rows removed. Setting the lb-r linearly dependent elements {qij} to zeros to have Qd c (i) T. Generate other columns in QT from Qd c (i) T to have QT in quasi-cyclic mode.
  • 4) I* calculated from DT·QT
  • Step 2: Encoding
  • 1) Calculate Y=M·X
  • 2) Calculate Z=Q·Y
  • 3) Solve P from (Q·D)·P+=Z
  • The advantage is obtained from the fact that the first step multiplication is with quasi-cyclic sparse matrix which has low complexity, and the second step is the multiplication with cb×cb matrix which has much lower size than other solutions, and the third step of solving P from Toeplitz matrix.
  • 2.—Prior Art. List patents, articles, or publications you believe are closest to steps/features in 1c/1d and/or provide a block diagram of what is known with respect to steps/features in 1c/1d.
  • [1] Zongwang Li, et. al., “Efficient Encoding of Quasi-Cyclic Low-Density Parity-Check Codes”, IEEE TRANSACTIONS ON COMMUNICATIONS, VOL. 54, NO. 1, JANUARY 2006

Claims (20)

What is claimed is:
1. A method, comprising:
applying a quasi-cyclic matrix M to an input vector X of encoded data to generate a vector Y;
applying a matrix Q to the vector Y to generate a vector Z; and
recursively generating, using a processor, parity check bits P for the encoded data from the vector Z and an identity matrix variant I*,
wherein the encoded data comprises quasi-cyclic low-density parity-check code, and the identity matrix variant I* is composed of Toeplitz matrices.
2. The method of claim 1, further comprising combining the encoded data with the parity check bits to form one or more encoded output signals.
3. The method of claim 1, wherein said applying steps are performed using feedback shift registers.
4. The method of claim 1, further comprising receiving a parity check matrix H of quasi-cyclic low-density parity-check code, wherein a rank r of the parity check matrix H is less than a number of rows of the parity check matrix H, and wherein the quasi-cyclic matrix M is a subset of the parity check matrix H, generated by removing at least some circulants from the parity check matrix H
5. The method of claim 4, wherein the identify matrix variant t is of a quasi-cyclic form as follows:
I * = [ A 1 , 1 A 1 , 2 A 1 , l A 2 , 1 A 2 , 2 A 2 , l A l , 1 A l , 2 A l , l ] ,
wherein A (i=1, . . . ,l; j=1, . . . , l) is a cyclic circulant of a same size as circulants in the parity check matrix H, and l is a least number of columns of circulants in H with rank r.
6. The method of claim 5, wherein A1,., is a Toeplitz matrix having a form as follows:
A i , i = [ 1 a ii , 1 a ii , d c ( i ) a ii , d c ( i ) 1 1 0 a ii , 1 a ii , 1 1 1 0 a ii , 1 a ii , d c ( i ) 1 ] for i = j , and A i , j = [ 0 a ij , 1 a ij , d c ( i ) a ij , d c ( i ) a ij , 1 a ij , 1 0 0 a ij , 1 a ij , d c ( i ) 1 ] for j i .
7. The method of claim 4, further comprising generating a matrix D from the at least some circulants removed from the parity check matrix H, wherein the at least some circulants that are removed from the parity check matrix H are determined for removal by finding a least number of columns of circulants in the parity check matrix H with the rank r, and wherein the matrix D is generated to have a rank equal to the rank r of the parity check matrix H.
8. The method of claim 7, wherein the identity matrix variant I* is determined as follows: I*=Q·D.
9. The method of claim 1, wherein the matrix Q is a quasi-cyclic matrix.
10. The method of claim 1, wherein the matrix Q is obtained by solving D*TQk(i) T={1,0, . . . ,0}T, where DT is determined from D, D*T is determined from DT with linear dependent rows of DT removed, and wherein Qk(i) T is a selected column of an i-th circulant in the matrix Q.
11. The method of claim 10, wherein the linear dependent rows of DT are selected from first columns of each circulant in DT.
12. The method of claim 10, wherein Qk(i) T is obtained by setting linearly dependent elements {qij} in the matrix Q to zeros, wherein the linearly dependent elements {qij} correspond to linearly dependent columns of D*T.
13. The method of claim 1, wherein said generating step uses a generator function GC having a form of
G c = [ - I O | G ] ,
wherein I is a (tb−lb)×(tb−lb) identity matrix from which the identity matrix variant I* is derived, O is a (lb−r)×(tb−lb) matrix of zeros, G={gij}, 1≦i≦tb−r, t is a number of column circulants in a parity check matrix H having quasi-cyclic low-density parity-check code, l is a number of row circulants in the parity check matrix II, and b is a matrix size.
14. The method of claim 13, wherein said generator function outputs parity check encoded data of a form [X|P+], wherein the vector Xis a first (tb-lb) of encoded data, and P+=[p1, p2, . . . , plb] is parity bits plus a remainder of an input vector X from which the vector Xis derived.
15. A computer program product comprising a computer readable storage medium having computer readable program code embodied therein for performing a method, the method comprising:
applying a quasi-cyclic matrix M to an input vector X of encoded data to generate a vector Y;
applying a matrix Q to the vector Y to generate a vector Z; and
recursively generating parity check bits P for the encoded data from the vector Z and an identity matrix variant I*,
wherein the encoded data comprises quasi-cyclic low-density parity-check code, and the identity matrix variant I* is composed of Toeplitz matrices.
16. The computer program product of claim 15, further comprising combining the encoded data with the parity check bits to form one or more encoded output signals.
17. The computer program product of claim 15, wherein said applying steps are performed using feedback shift registers.
18. The computer program product of claim 15, further comprising receiving a parity check matrix Hof quasi-cyclic low-density parity-check code, wherein a rank r of the parity check matrix H is less than a number of rows of the parity check matrix H, and wherein the quasi-cyclic matrix M is a subset of the parity check matrix H, generated by removing at least some circulants from the parity check matrix H.
19. The computer program product of claim 18, wherein the identify matrix variant I* is of a quasi-cyclic form as follows:
I * = [ A 1 , 1 A 1 , 2 A 1 , l A 2 , 1 A 2 , 2 A 2 , l A l , 1 A l , 2 A l , l ] ,
wherein Ai,j(i=1, . . . , 1; j=1, . . . , l) is a cyclic circulant of a same size as circulants in the parity check matrix H, and l is a least number of columns of circulants in H with rank r.
20. A system, comprising:
an encoder, having a processor, for applying a quasi-cyclic matrix M to an input vector X of encoded data to generate a vector Y, applying a matrix Q to the vector Y to generate a vector Z, and recursively generating, using a processor, parity check bits P for the encoded data from the vector Z and an identity matrix variant I*,
wherein the encoded data comprises quasi-cyclic low-density parity-check code, and the identity matrix variant I* is composed of Toeplitz matrices.
US14/454,996 2013-08-12 2014-08-08 Encoding method and system for quasi-cyclic low-density parity-check code Active 2034-12-27 US9450612B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/454,996 US9450612B2 (en) 2013-08-12 2014-08-08 Encoding method and system for quasi-cyclic low-density parity-check code

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361864743P 2013-08-12 2013-08-12
US14/454,996 US9450612B2 (en) 2013-08-12 2014-08-08 Encoding method and system for quasi-cyclic low-density parity-check code

Publications (2)

Publication Number Publication Date
US20150046768A1 true US20150046768A1 (en) 2015-02-12
US9450612B2 US9450612B2 (en) 2016-09-20

Family

ID=52449692

Family Applications (1)

Application Number Title Priority Date Filing Date
US14/454,996 Active 2034-12-27 US9450612B2 (en) 2013-08-12 2014-08-08 Encoding method and system for quasi-cyclic low-density parity-check code

Country Status (1)

Country Link
US (1) US9450612B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9369151B2 (en) * 2014-09-25 2016-06-14 Ali Misfer ALKATHAMI Apparatus and method for resource allocation
CN112886969A (en) * 2019-11-30 2021-06-01 华为技术有限公司 Polarization code encoding method and device

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9584158B2 (en) * 2015-07-24 2017-02-28 Tidal Systems, Inc. Unified H-encoder for a class of multi-rate LDPC codes
EP3610576B1 (en) 2017-04-14 2022-12-28 Kandou Labs, S.A. Pipelined forward error correction for vector signaling code channel
US10693587B2 (en) * 2017-07-10 2020-06-23 Kandou Labs, S.A. Multi-wire permuted forward error correction
US11502715B2 (en) * 2020-04-29 2022-11-15 Eagle Technology, Llc Radio frequency (RF) system including programmable processing circuit performing block coding computations and related methods
US11411593B2 (en) 2020-04-29 2022-08-09 Eagle Technology, Llc Radio frequency (RF) system including programmable processing circuit performing butterfly computations and related methods
US11263079B2 (en) * 2020-06-30 2022-03-01 Kabushiki Kaisha Toshiba Endurance modulation for flash storage

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080028274A1 (en) * 2006-07-25 2008-01-31 Communications Coding Corporation Universal error control coding scheme for digital communication and data storage systems
US20100257425A1 (en) * 2009-04-06 2010-10-07 Nec Laboratories America, Inc. Systems and methods for constructing the base matrix of quasi-cyclic low-density parity-check codes
US20110264987A1 (en) * 2010-04-26 2011-10-27 Lsi Corporation Systems and Methods for Low Density Parity Check Data Encoding
US8219868B1 (en) * 2007-11-30 2012-07-10 Marvell International Ltd. Quasi-cyclic low-density parity-check (QC-LDPC) encoder
US8473824B1 (en) * 2008-09-08 2013-06-25 Marvell International Ltd. Quasi-cyclic low-density parity-check (QC-LDPC) encoder
US20140281790A1 (en) * 2013-03-13 2014-09-18 Lsi Corporation Systems and Methods for Multi-Stage Encoding Of Concatenated Low Density Parity Check Codes
US9037945B2 (en) * 2013-03-26 2015-05-19 Seagate Technology Llc Generating partially sparse generator matrix for a quasi-cyclic low-density parity-check encoder
US9122625B1 (en) * 2012-12-18 2015-09-01 Western Digital Technologies, Inc. Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080028274A1 (en) * 2006-07-25 2008-01-31 Communications Coding Corporation Universal error control coding scheme for digital communication and data storage systems
US8219868B1 (en) * 2007-11-30 2012-07-10 Marvell International Ltd. Quasi-cyclic low-density parity-check (QC-LDPC) encoder
US8473824B1 (en) * 2008-09-08 2013-06-25 Marvell International Ltd. Quasi-cyclic low-density parity-check (QC-LDPC) encoder
US20100257425A1 (en) * 2009-04-06 2010-10-07 Nec Laboratories America, Inc. Systems and methods for constructing the base matrix of quasi-cyclic low-density parity-check codes
US20110264987A1 (en) * 2010-04-26 2011-10-27 Lsi Corporation Systems and Methods for Low Density Parity Check Data Encoding
US9122625B1 (en) * 2012-12-18 2015-09-01 Western Digital Technologies, Inc. Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems
US20140281790A1 (en) * 2013-03-13 2014-09-18 Lsi Corporation Systems and Methods for Multi-Stage Encoding Of Concatenated Low Density Parity Check Codes
US9037945B2 (en) * 2013-03-26 2015-05-19 Seagate Technology Llc Generating partially sparse generator matrix for a quasi-cyclic low-density parity-check encoder

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9369151B2 (en) * 2014-09-25 2016-06-14 Ali Misfer ALKATHAMI Apparatus and method for resource allocation
CN112886969A (en) * 2019-11-30 2021-06-01 华为技术有限公司 Polarization code encoding method and device
US11870457B2 (en) 2019-11-30 2024-01-09 Huawei Technologies Co., Ltd. Polar code encoding method and apparatus

Also Published As

Publication number Publication date
US9450612B2 (en) 2016-09-20

Similar Documents

Publication Publication Date Title
US9450612B2 (en) Encoding method and system for quasi-cyclic low-density parity-check code
US8352847B2 (en) Matrix vector multiplication for error-correction encoding and the like
US9286154B2 (en) Error correction for entangled quantum states
US9037945B2 (en) Generating partially sparse generator matrix for a quasi-cyclic low-density parity-check encoder
EP2916461B1 (en) Encoding method for qc-ldpc codes
US10084480B1 (en) Systems and methods for decoding cascade LDPC codes
US20180205398A1 (en) Bm-based fast chase decoding of binary bch codes through degenerate list decoding
US10511330B2 (en) Decoding apparatus, decoding method and program
US9584158B2 (en) Unified H-encoder for a class of multi-rate LDPC codes
US10333554B2 (en) Efficient generalized tensor product codes encoding schemes
EP2309650A1 (en) A systematic encoder with arbitrary parity positions
Lacan et al. A construction of matrices with no singular square submatrices
US10727869B1 (en) Efficient method for packing low-density parity-check (LDPC) decode operations
EP3526899B1 (en) Decoding of low-density parity-check convolutional turbo codes
US10120837B2 (en) Matrix application apparatus, matrix application method and program
Zhang et al. Low-complexity transformed encoder architectures for quasi-cyclic nonbinary LDPC codes over subfields
EP3529900B1 (en) Construction of ldpc convolutional turbo codes
CN114257250A (en) LDPC code encoding method, apparatus, network device and storage medium
Wang et al. Codec implementation of QC-LDPC code in CCSDS near-earth standard
Shokrollahi A class of generalized RS-codes with faster encoding and decoding algorithms
Copeland et al. GPU accelerated decoding of high performance error correcting codes
Panteleev Fast systematic encoding of quasi-cyclic codes using the Chinese remainder theorem
Diao et al. A transform approach for computing the ranks of parity-check matrices of quasi-cyclic LDPC codes
CN109936380B (en) QC-LDPC coding method without backward iteration
Revathy et al. Performance analysis of high efficiency low density parity-check code decoder for low power applications

Legal Events

Date Code Title Description
AS Assignment

Owner name: NEC LABORATORIES AMERICA INC., NEW JERSEY

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HU, JUNQIANG;WANG, TING;REEL/FRAME:033494/0395

Effective date: 20140805

AS Assignment

Owner name: NEC CORPORATION, JAPAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NEC LABORATORIES AMERICA, INC.;REEL/FRAME:039435/0820

Effective date: 20160811

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8