Method and apparatus for encoding and decoding LDPC codes

11265014 · 2022-03-01

Assignee

Inventors

Cpc classification

International classification

Abstract

Certain aspects of the present disclosure provide an efficiently decodable QC-LDPC code which is based on a base matrix, the base matrix being formed by columns and rows, the columns being dividable into one or more columns corresponding to punctured variable nodes and columns corresponding to non-punctured variable nodes. Apparatus at a transmitting side includes a encoder configured to encode a sequence of information bits based on the base matrix. Apparatus at a receiving side configured to receive a codeword in accordance with a radio technology across a wireless channel. The apparatus at the receiving side includes a decoder configured to decode the codeword based on the base matrix.

Claims

1. An apparatus for wireless communication, comprising: at least one processor configured to: obtain a sequence to be decoded; obtain a matrix for decoding the sequence; and decode the sequence using the matrix to produce a decoded sequence, wherein the matrix is determined according to a base matrix, wherein the base matrix comprises a plurality of entries that representing blocks of the matrix, and each block of the matrix represents a shifted circulant matrix or a zero matrix, wherein each entry of the base matrix corresponding to the shifted circulant matrix is indicated by a shift value, wherein the base matrix comprises multiple columns and multiple rows, the multiple rows comprise a first set of rows starting from a first row of the base matrix and a second set of rows following the first set of rows, and the multiple columns comprise at least one punctured column and multiple non-punctured columns, wherein a number of entries indicated by shift values in each row of the first set of rows is larger than a number of entries indicated by shift values in each row of the second set of rows, wherein a number of entries indicated by shift values in each column of the at least one punctured column is larger than a number of entries indicated by shift values in each column of the multiple non-punctured columns, wherein the second set of rows comprises at least one group, each of the at least one group comprising at least two consecutive rows, and wherein in the at least two consecutive rows, at least one column of the at least one punctured column has at least two entries indicated by shift values, and each column of the multiple non-punctured columns has at most one entry indicated by a shift value.

2. The apparatus according to claim 1, wherein each shift value defines a number of times to be cyclically right-shifted for an identity matrix.

3. The apparatus according to claim 1, further comprising a memory configured to store parameters associated with the base matrix.

4. The apparatus according to claim 1, wherein the apparatus for wireless communication is installed in a terminal device.

5. The apparatus according to claim 1, wherein the apparatus for wireless communication is installed in a base station.

6. The apparatus according to claim 1, wherein the at least one processor is configured to obtain the sequence to be decoded in accordance with a signal received through a wireless channel.

7. The apparatus according to claim 1, wherein each row for the multiple non-punctured columns in a last portion of the second set of rows has at most one entry indicated by a shift value.

8. The apparatus according to claim 1, wherein in any adjacent two rows, each column of the multiple non-punctured columns has at most one entry indicated by a shift value.

9. The apparatus according to claim 1, wherein the at least one group is two or more groups, and the two or more groups are consecutive.

10. The apparatus according to claim 1, wherein the base matrix comprises 46 rows and 68 columns.

11. The apparatus according to claim 1, wherein the at least one punctured column is two punctured columns.

12. The apparatus according to claim 11, wherein a first column and a second column of the base matrix are the two punctured columns.

13. The apparatus according to claim 1, wherein a subset of columns of a matrix formed by the first set of rows has a dual diagonal or triangular structure, and wherein a subset of columns of a matrix formed by the second set of rows has a triangular or identity matrix structure.

14. The apparatus according to claim 1, wherein the at least one processor is configured to decode the sequence to be decoded based on a flooding decoding process for variable nodes corresponding to the at least one punctured column and a layered decoding process for nodes corresponding to the multiple non-punctured columns.

15. A method for wireless communication, comprising: obtaining a sequence to be decoded; and obtaining a matrix for decoding the sequence; and decoding the sequence using the matrix to produce a decoded sequence, wherein the matrix is determined according to a base matrix, wherein the base matrix comprises a plurality of entries that representing blocks of the matrix, and each block of the matrix represents a shifted circulant matrix or a zero matrix, wherein each entry of the base matrix corresponding to the shifted circulant matrix is indicated by a shift value, wherein the base matrix comprises multiple columns and multiple rows, the multiple rows comprise a first set of rows starting from a first row of the multiple rows and a second set of rows following the first set of rows, and the multiple columns comprise at least one punctured column and multiple non-punctured columns, wherein a number of entries indicated by shift values in each row of the first set of rows is larger than a number of entries indicated by shift values in each row of the second set of rows, wherein a number of entries indicated by shift values in each column of the at least one punctured column is larger than a number of entries indicated by shift values in each column of the multiple non-punctured columns, wherein the second set of rows comprises at least one group, each of the at least one group comprising at least two consecutive rows, and wherein in the at least two consecutive rows, at least one column of the at least one punctured column has at least two entries indicated by shift values, and each column of the multiple non-punctured columns has at most one entry indicated by a shift value.

16. The method according to claim 15, wherein each shift value defines a number of times to be cyclically right-shifted for an identity matrix.

17. The method according to claim 15, wherein the decoding the sequence using the matrix to produce a decoded sequence comprises decoding the sequence based on a flooding decoding process for variable nodes corresponding to the at least one punctured column and a layered decoding process for nodes corresponding to the non-punctured columns.

18. The method according to claim 15, further comprising storing parameters associated with the base matrix.

19. A non-transitory computer-readable storage medium storing instructions, which when run on a computer, cause the computer to perform steps comprising: obtaining a sequence to be decoded; obtaining a matrix for decoding the sequence; and decoding the sequence using the matrix to produce a decoded sequence, wherein wherein the matrix is determined according to a base matrix, wherein the base matrix comprises a plurality of entries that representing blocks of the matrix, and each block of the matrix represents a shifted circulant matrix or a zero matrix, wherein each entry of the base matrix corresponding to the shifted circulant matrix is indicated by a shift value, wherein the base matrix comprises multiple columns and multiple rows, the multiple rows comprise a first set of rows starting from a first row of the base matrix and a second set of rows following the first set of rows, and the multiple columns comprise at least one punctured column and multiple non-punctured columns, wherein a number of entries indicated by shift values in each row of the first set of rows is larger than a number of entries indicated by shift values in each row of the second set of rows, wherein a number of entries indicated by shift values in each column of the at least one punctured column is larger than a number of entries indicated by shift values in each column of the multiple non-punctured columns, wherein the second set of rows comprises at least one group, each of the at least one group comprising at least two consecutive rows, and wherein in the at least two consecutive rows, at least one column of the at least one punctured column has at least two entries indicated by shift values, and each column of the multiple non-punctured columns has at most one entry indicated by a shift value.

20. The non-transitory computer-readable storage medium according to claim 19, wherein the decoding the sequence using the matrix to produce a decoded sequence comprises: decoding the sequence based on a flooding decoding process for variable nodes corresponding to the at least one punctured column and a layered decoding process for nodes corresponding to the non-punctured columns.

Description

BRIEF DESCRIPTION OF THE DRAWINGS

(1) FIG. 1 shows a schematic diagram of a possible application scenario according to embodiments of the present disclosure;

(2) FIG. 2 shows a schematic illustration of a digital communication system;

(3) FIG. 3 shows a flow chart of a process of providing an irregular QC-LDPC code for encoding or decoding a sequence of information bits;

(4) FIG. 4 shows a structure of a base matrix of an irregular QC-LDPC code;

(5) FIG. 5 shows a base matrix of an irregular QC-LDPC code;

(6) FIG. 5a shows another base matrix of an irregular QC-LDPC code;

(7) FIG. 6 is a base graph of a base matrix;

(8) FIG. 7 is another base graph of a base matrix;

(9) FIG. 8 shows a first part of a flow chart of a decoding process;

(10) FIG. 9 shows a second part of the flow chart of the decoding process;

(11) FIG. 10 shows a third part of the flow chart of the decoding process;

(12) FIG. 11 shows a schedule of a first hardware implementation of the decoding process; and

(13) FIG. 12 shows a schedule of a second hardware implementation of the decoding process.

DETAILED DESCRIPTION

(14) FIG. 1 shows a possible application scenario according to the present disclosure. As As shown in FIG. 1, at least one of terminal (such as, user equipment, UE) is connected to a radio access network (RAN) and a core network (CN). The technology described in the present disclosure may be applied to 5G communication system, or other wireless communications systems that use various radio access technologies, for example, systems that use Code Division Multiple Access, Frequency Division Multiple Access, Time Division Multiple Access, orthogonal frequency division multiple access, single carrier frequency division multiple access, and other radio access technologies. In addition, the technology described in the present disclosure may be further applied to an evolved communication system. In a possible implementation, the terminal can connect to an IP multimedia subsystem network through the radio access network and the core network.

(15) The term “terminal” involved in embodiments of the present disclosure may include a hand device, an in-vehicle device, a wearable device, a computing device, or another processing device connected to a wireless modem, where the device has a wireless communication function, and various forms of user equipments (UE), mobile stations (MS), terminals, terminal equipment, and the like.

(16) The radio access network comprising at least one base station. A base station (BS) is an apparatus that is deployed in a radio access network and that is configured to provide a wireless communication function for UE. The base station may include various forms of macro base stations, micro base stations, relay stations, access points, and the like. For different radio access technologies, names of a device having a function of a base station may be different.

(17) FIG. 2 shows a block diagram illustrating a digital communications system 10 in which processes of the present disclosure may be implemented. The digital communications system 10 includes a transmitting side comprising an encoder 12 and a receiving side comprising a decoder 14. The encoder or the decoder may be implemented by at least one processor, for example, implemented by a chipset. The at last one processor or the chipset can be installed in a base station or a terminal. The input of the encoder 12 at the transmitting side is, for example, an information sequence IS.sub.1 of k bits to which a redundancy sequence of r bits is added in an encoding operation performed by the encoder 12, thereby producing an encoded information sequence IS.sub.2 of k+r=n bits which may be forwarded to a modulator 16.

(18) The modulator 16 may transform the encoded sequence IS.sub.2 into a modulated signal vector CH_IN which is in turn transmitted through a wired or wireless channel 18 such as, for example, a conductive wire, an optical fiber, a radio channel, a microwave channel or an infrared channel. Since the channel 18 is usually subject to noisy disturbances, the channel output CH_OUT may differ from the channel input CH_IN.

(19) At the receiving side, the channel output vector CH_OUT may be processed by a demodulator 20 which produces some likelihood ratio. The decoder 14 may use the redundancy in the received information sequence IS.sub.3 in a decoding operation performed by the decoder 14 to correct errors in the received information sequence IS.sub.3 and produce a decoded information sequence IS.sub.4 (cf. M. P. C. Fossorier et al., “Reduced Complexity Iterative Decoding of Low-Density Parity Check Codes Based on Belief Propagation”, IEEE TRANSACTIONS ON COMMUNICATIONS, May 1999, Volume 47, Number 5, Pages 673-680, and J. Chen et al., “Improved min-sum decoding algorithms for irregular LDPC codes”, PROCEEDINGS OF THE 2005 IEEE INTERNATIONAL SYMPOSIUM ON INFORMATION THEORY, Pages 449-453, September 2005). The decoded information sequence IS.sub.4 is an estimate of the encoded information sequence IS.sub.2 from which (an estimate of) the information sequence IS.sub.1 can be extracted.

(20) The encoding operation and the decoding operation may be governed by an LDPC code. In the general formulation of channel coding, an LDPC code may employ a generator matrix G for the encoding operation performed by the encoder 12 and a parity-check matrix H for the decoding operation performed by the decoder 14. For an LDPC code with an information sequence IS.sub.1 of size 1×k, a codeword IS.sub.2 of size 1×n, and a redundancy (parity) sequence of r=(n−k) bits, the generator matrix G has size k×n and the parity-check matrix H has size r×n=(n−k)×n.

(21) The parity-check matrix H.sub.r×n and the generator matrix G.sub.k×n enjoy the orthogonality property, which states that for any generator matrix G.sub.k×n with k linearly independent rows there exists a parity-check matrix H.sub.r×n with r=(n−k) linearly independent rows. Thus, any row of the generator matrix G.sub.k×n is orthogonal to the rows of the parity-check matrix H.sub.r×n such that the following equation is satisfied:
G.sub.k×n.Math.HT.sub.n×r.sup.T=0   (1)

(22) The encoding operation can be performed by means of a multiplication between the information sequence IS.sub.1 and the generator matrix G.sub.k×n, wherein the result of the multiplication is the encoded information sequence IS.sub.2:
IS.sub.2=IS.sub.1.Math.G.sub.k×n  (2)

(23) At the receiving side, due to the orthogonality property between the generator matrix G.sub.k×n and the parity-check matrix H.sub.r×n, the following equation should be satisfied:
H.sub.r×n.Math.IS.sub.4.sup.T=0  (3)
where IS.sub.4 is the decoded received information sequence of size 1×n. If the above equation is verified, the information sequence estimate IS.sub.4 may be assumed to be correct.

(24) Once the parity-check matrix H.sub.r×n is generated, it is possible to obtain the generator matrix G.sub.k×n and vice versa. Accordingly, any process of determining a parity-check matrix H.sub.r×n may be mapped to an equivalent process of obtaining a generator matrix G.sub.k×n and vice versa, so that any process disclosed throughout the description and claims in relation to determining a parity-check matrix H.sub.r×n shall be understood as encompassing the equivalent process of obtaining a generator matrix G.sub.k×n and vice versa.

(25) Moreover, it should be noted that LDPC codes having a parity-check matrix H.sub.r×n of a particular structure such as, for example, a parity-check matrix H.sub.r×n having a parity part of dual diagonal structure allow the encoding of the information sequence IS.sub.1 using (only) the parity-check matrix H.sub.r×n so that obtaining the generator matrix G.sub.k×n may not be required (cf. T. J. Richardson and R. L. Urbanke, “Efficient encoding of low-density parity-check codes”, IEEE TRANSACTIONS ON INFORMATION THEORY, Volume 47, Issue 2, Pages 638-656, August 2002).

(26) A particular form of the parity-check matrix H.sub.r×n is a regular QC-LDPC matrix .sup.regH.sub.r×n.sup.QC which can be divided into quadratic submatrices I(p.sub.j,l), i.e. circulant matrices (or “circulants” for short), which may, for example, be obtained from cyclically right-shifting an N×N identity matrix I(0) by p.sub.j,l positions:

(27) H r × n QC reg = [ I ( p 0 , 0 ) I ( p 0 , 1 ) .Math. I ( p 0 , L - 1 ) I ( p 1 , 0 ) I ( p 1 , 1 ) I ( p 1 , L - 1 ) M M O M I ( p J - 1 , 0 ) I ( p J - 1 , 1 ) .Math. I ( p J - 1 , L - 1 ) ] ( 4 )
with N=n/L (cf M. P. C. Fossorier, “Quasi-Cyclic Low-Density Parity-Check Codes from Circulant Permutation Matrices”, IEEE TRANSACTIONS ON INFORMATION THEORY, Volume 50, Issue 8, Pages 1788-1793, August 2004). Thus, a regular QC-LDPC matrix .sup.regH.sub.r×n.sup.QC may be defined by a base matrix B which satisfies:

(28) B = [ p 0 , 0 p 0 , 1 .Math. p 0 , L - 1 p 1 , 0 p 1 , 1 p 1 , L - 1 M M O M p J - 1 , 0 p J - 1 , 1 .Math. p J - 1 , L - 1 ] ( 5 )

(29) Moreover, a base matrix B of an irregular QC-LDPC matrix .sup.irregH.sub.r×n.sup.QC may be obtained by .sup.irregH.sub.r×n.sup.QC=B oM.sub.mask where “o” denotes the Hadamard product and

(30) M mask = [ m 0 , 0 m 0 , 1 .Math. m 0 , L - 1 m 1 , 0 m 1 , 1 m 1 , L - 1 M M O M m J - 1 , 0 m J - 1 , 1 .Math. m J - 1 , L - 1 ] ( 6 )
denotes a mask matrix with m.sub.j,l ∈{0,1}. Alternatively, the base matrix B of an irregular QC-LDPC matrix .sup.irregH.sub.r×n.sup.QC may be obtained by (only) partially labelling the base matrix B with shift values p.sub.j,l ∈{0 . . . N} with not labelled entries (which are sometimes represented by a value of “−1” or an asterisk “*”) representing zero matrices of size N×N.

(31) Thus, for employing a QC-LDPC code in the encoder 12 and the decoder 14, the encoder 12 and the decoder 14 may be provided with a circulant, shift values, i.e., values corresponding to the labelled entries of the base matrix B, and (optionally) a mask matrix M.sub.mask. For instance, an apparatus configured to choose shift values for determining a QC-LDPC matrix H.sub.r×n.sup.QC may provide the shift values to the encoder 12 and/or the decoder 14. Moreover, the encoder 12 and the decoder 14 may also be provided with a mask matrix M.sub.mask to generate one or more irregular QC-LDPC matrices .sup.irregH.sub.r×n.sup.QC.

(32) Furthermore, it is to note that a QC-LDPC matrix H.sup.QC (and more generally any LDPC code) can also be described by its equivalent bipartite graph (“Tanner graph”), wherein each edge of the Tanner graph connects one variable node of a plurality of variable nodes to one check node of a plurality of check nodes. For example, a QC-LDPC matrix H.sub.r×n.sup.QC of r rows and n columns can be represented by its equivalent bipartite graph with r check nodes and n variable nodes which has edges between the check nodes and the variable nodes if there are corresponding “1s” in the QC-LDPC matrix H.sub.r×n.sup.QC (cf. R. Tanner, “A Recursive Approach to Low Complexity Codes”, IEEE TRANSACTIONS IN INFORMATION THEORY, Volume 27, Issue 5, Pages 533-547, September 1981). In this regard, it is to note that the variable nodes represent codeword bits and the check nodes represent parity-check equations.

(33) FIG. 3 shows a flow chart of a process 22 of providing an irregular QC-LDPC code for encoding or decoding a sequence of information bits, such as information sequence IS.sub.1 and IS.sub.3, respectively. The process 22 may, for example, be computer-implemented. For instance, the process 22 may be implemented by persistently stored computer-readable instructions which, if executed by a computer, cause the computer to perform the process 22. The provided base matrix B of the irregular QC-LDPC code may, for example, be provided to the encoder 12 and the decoder 14 of the digital communication system 10 and used for encoding or decoding operations performed by the encoder 12 and the decoder 14, respectively, i.e., for encoding or decoding the sequence of information bits.

(34) The process 22 of providing an irregular QC-LDPC code for encoding or decoding a sequence of information bits may start at step 24 with providing entries of a base matrix B of an irregular QC-LDPC code, wherein the entries represent blocks of an irregular QC-LDPC matrix and each block represents a shifted circulant matrix or a zero matrix. A possible structure of the base matrix B is shown in FIG. 4. It comprises a “core” base matrix in the high-density part (indicated in grey on the upper left of FIG. 4). The core base matrix has a parity part with a dual diagonal structure for easy encoding. If a highest rate is required, an information sequence will be encoded using only the shift values of the core base matrix. If lower rates are acceptable, additional rows and columns can be appended to the base matrix. As shown in FIG. 4, an overlap between the additional rows and columns may form an identity matrix although a lower triangular form would also be possible. The additional rows typically have a lower weight than the rows of the core base matrix and provide (in combination with the added ‘corresponding’ columns) for additional parity bits in the codeword to be transmitted.

(35) It should be noted that the base matrix B is a matrix with m rows and n columns, where m and n are integers. The base matrix B can be extended by including more columns and rows. For example, the base matrix B is a matrix with 46 rows and 68 columns, or the base matrix B is a matrix with 90 rows and 112 columns, etc. The present disclosure does not limit the size of base matrix.

(36) The extension part comprises one, two, three, or more high-weight columns which typically have a substantially higher weight than all other columns of the extension part. For example, one, two, or all high-weight columns may have no empty cells, i.e. no entries representing the zero matrix. As shown in FIG. 4, the variable nodes corresponding to two high-weight columns are indicated as punctured and the “remaining” subrows are grouped into (non-overlapping) layers of orthogonal subrows (or row vectors).

(37) FIG. 5 shows a numeric example of provided entries of a base matrix B of size 19×35 (19 rows and 35 columns) wherein labelled entries (cells) of the base matrix B are indicated by the corresponding shift values and not-labelled entries (corresponding to zero matrices) are left blank. As shown in FIG. 5, the rows of the base matrix B can be divided into an upper part having a weight of above 17 and a lower part having a weight of below 9, i.e. less than half the weight of the rows of the upper part. Thus, the base matrix B shown in FIG. 5 can be divided into a high-density part comprising rows 1 to 3 and a low-density part comprising rows 4 to 19 as indicated at step 26 of the process 22 shown in FIG. 3.

(38) Moreover, as shown in FIG. 5, the rows of the submatrix formed by the overlap of columns 2 to 35 and the low density-part can be divided into layers (or groups) of orthogonal rows, wherein each layer comprises about the same number of cells. Furthermore, the high-density part comprises a dual diagonal submatrix allowing to easily encode a sequence of information bits based on the non-zero columns of the high-density part. Moreover, the low-density part provides a raptor-like extension with a parity part which has a lower triangular form which allows for easy encoding of the codeword.

(39) FIG. 5a shows a numeric example of provided entries of a base matrix B of size 46×68 (46 rows and 68 columns). In FIG. 5a, labelled entries of the base matrix B are indicated by the corresponding shift values, and not-labelled entries (corresponding to zero matrices) are represented as “−1”. In FIG. 5a, column 1 and 2 are punctured. For column 3 to 68, starting from row 9, there are multiple groups of orthogonal rows. The orthogonal rows are the rows not overlapped (i.e. labelled entries are not overlapped) from columnwise point of view. For example, rows 9 and 10 are orthogonal, and rows 11 and 12 are orthogonal.

(40) FIG. 6 and FIG. 7 show different designs of base graphs of base matrices. The term “base graph” of this disclosure includes a number of square boxes, with each square box representing an element in the base parity check matrix. Each non-zero element of the base graph is represented by a marked box (represented as “1”). Each marked box is associated with a shift value in the base matrix. In FIGS. 6 and 7, columns 1 and 2 are punctured columns. It should be noted that the punctured column can be one or more columns.

(41) Specifically, FIG. 6 shows an example of a base graph of a base matrix with 14 rows and 36 columns. For the not-punctured (non-punctured) columns (i.e., except for columns 1 and 2), starting from row 7, i.e., from rows 7 to 14, such rows are non-conflict quasi-row orthogonal. In particular, starting from row 7, each group of rows (for example, each two adjacent rows) is non-conflict quasi-row orthogonal. As can be seen form FIG. 6, the marked boxes are not overlapped. For example, rows 7 and 8 are orthogonal, rows 9 and 10 are orthogonal, rows 11 and 12 are orthogonal, and rows 13 and 14 are orthogonal. Those rows, rows (7, 8), (9, 10) and (11, 12) are called as orthogonal rows. For the orthogonal rows, the marked box of each row are not overlapped from columnwise point of view. The group can also be called as orthogonal group.

(42) In this embodiment, the rows of the first set are from rows 1 to 6, and the rows of the second set are starting from rows 7 to row 14. In this design, if rows 1 to 6 are considered as rows of core base matrix, and rows 7 to 14 are considered as rows of the extension part, all the rows of extension part are non-conflict quasi-row orthogonal. If rows 1 to 5 are considered as rows of core base matrix, and rows 6 to 14 are considered as rows of the extension part, most rows of the extension part away from the core base matrix are non-conflict quasi-row orthogonal.

(43) It should be noted that the orthogonal group in FIG. 6 includes two rows. The orthogonal group can also include more than two rows. Different orthogonal groups may have identical number of rows or different number of rows.

(44) FIG. 7 shows a base graph of a base matrix with 13 rows and 35 columns. In FIG. 7, orthogonal groups of rows extension starting from row 8. For example, rows 8 and 9 are orthogonal, rows 10 and 11 are orthogonal, and rows 12 and 13 are orthogonal. The orthogonal groups in FIG. 7 comprise adjacent two orthogonal rows, i.e. rows 8 and 9, rows 10 and 11, and rows 12 and 13. In this embodiment, each group has two orthogonal rows. It can also be modified to make each group have different number of rows., for example, three orthogonal rows, or four orthogonal rows and so on.

(45) As further indicated at step 28 of the process 22 illustrated in FIG. 3, column 1 of the base matrix B is punctured. After encoding a sequence of information bits by the encoder 12 based on the provided entries of the base matrix B and transmitting the corresponding codeword (except for the information bits corresponding to the punctured nodes) via the channel 18 to the decoder 14, the encoder 14 may iteratively decode the received information bits using a normalized Min-Sum decoding process combining flooding and layered decoding steps as illustrated by steps A, B, and C of FIG. 8, FIG. 9, and FIG. 10. Moreover, in the decoding process, it can be taken advantage of the fact that the shift values of the punctured column that correspond to the extended part of the matrix (shown in dark grey in FIG. 5) can be set to zeros using row and column shifting operations. Furthermore, parallelism of the decoding operation can be increased by providing for groups of orthogonal rows in the portion of the dense part to which layered decoding steps are applied (i.e., the part corresponding to the not-punctured columns).

(46) As indicated by step A shown in FIG. 8, the log-likelihood-ratios (llr-s) of the punctured columns are calculated using the following formulas with llr, sg0.sub.j, sg.sub.j, min.sub.j, submin.sub.j, col.sub.j, v2c.sub.j, csg.sub.j, c2v.sub.j, nsg0.sub.j, cmin.sub.j, psg.sub.j, pmin.sub.j, psubmin.sub.j, pcol.sub.j, nsg.sub.j, nmin.sub.j, nsubmin.sub.j, ncol.sub.j, and nc2v.sub.j being vectors of length N and alpha denoting the scale parameter of the normalized Min-Sum decoding process: llr denotes the vector of llr-s of the punctured node, which may be stored in application-specific integrated circuit (ASIC) registers. sg0.sub.j denotes the signs of the variable to check messages (v2c) of the punctured nodes and the j-th row inside a group, which may be stored in random access memory (RAM). sg.sub.j, min.sub.j, submin.sub.j, col.sub.j denote multiplications of signs, minimums, sub-minimums and zero-based argMinimums in the j-th row of the given orthogonality group with I<=j<=n. All these values may be calculated before starting the decoding process and stored in memory. psg.sub.j, pmin.sub.j, psubmin.sub.j, pcol.sub.j denote updated multiplications of signs, minimums, sub-minimums and argMinimums in the j-th row of current orthogonality group. These values are to be determined for each column but the punctured one.
First, csg.sub.j, c2v.sub.1, and c2v are calculated for 1<=j<=n by:
csg.sub.j=sg.sub.j*sg0.sub.j,
|c2v.sub.j|=(col.sub.j==0)? submin.sub.j: min.sub.j, and
c2v=csg*|c2v|.
Then, nsg0.sub.j, cmin.sub.j, and v2c.sub.j, are calculated by:
nsg0.sub.j=sign(v2c.sub.j),
cmin.sub.j=|v2c.sub.j|*alpha,
v2c.sub.j=llr−c2v.sub.j.

(47) Now, as indicated by step B shown in FIG. 9, new minimums, sub-minimums and argMinimums, as well as signs of the punctured column in each row of the current orthogonality group are calculated for 1<=j<=n by:
sg0.sub.j=nsg0.sub.j
nsg.sub.j=nsg0.sub.j*psg.sub.j,
ncol.sub.j=(cmin.sub.j>pmin.sub.j)? pcol.sub.j: 0,
nmin.sub.j=(cmin.sub.j>pmin.sub.j)? pmin.sub.j: cmin.sub.j, and
nsubmin.sub.j=(cmin.sub.j>pmin.sub.j)? ((cmin.sub.j>psubmin.sub.j)? psubmin.sub.j: cmin.sub.j): pmin.sub.j.
These values are stored in memory where sg.sub.j, min.sub.j, submin.sub.j, col.sub.j, and sg0.sub.j replace the currently stored values for the next decoding iteration.

(48) Finally, psum, c2vsum, and the new llr-s of the punctured node are calculated as indicated by step C shown in FIG. 10 by:
psum=psg.sub.1*pmin.sub.j+ . . . +psg.sub.n*pmin.sub.n,
c2vsum=c2v.sub.1+ . . . +c2v.sub.n, and
llr=llr−c2vsum+psum.

(49) Moreover, the proposed scheme can be efficiently implemented in hardware as will become apparent from the following example in which each group of orthogonal rows is processed in 3 clock cycles, all llr-s are stored in registers, the number of available processors equals the number of columns of the QC-LDPC matrix and sg.sub.j, min.sub.j, submin.sub.j, col.sub.j are loaded to registers before the 1.sup.st clock cycle begins.

(50) Processing of the non-punctured columns is done using the same scheme, and processing of the punctured column is done according to the above described formulas:

(51) Clock cycle 1. For all columns but the punctured one, c2v messages are calculated. The calculated c2v messages are subtracted from llr-s, so that v2c messages are obtained which are stored in the same registers in which the llr-s were stored. The obtained v2c messages are used to determine nsg0 and cmin which are used for determining partial minimums. Also, at the clock cycle 1, llr-s of the punctured columns of the previous group are obtained according. After that, these llr-s are shifted and stored on registers. As a result, llr-s of the punctured columns are calculated 1 clock cycle later that llr-s of other columns, but they are also used 1 clock cycle later (at the second clock cycle).

(52) Clock cycle 2. Minimums (i.e. psg.sub.j, pmin.sub.j, psubmin.sub.j, pcol.sub.j) are calculated from the partial minimums. Also, nsg0, cmin and c2v are calculated for the punctured column. After that, values of nsg.sub.j, nmin.sub.j, nsubmin.sub.j, ncol.sub.j are calculated and stored in memory.

(53) Clock cycle 3. From the obtained values of nsg.sub.j, nmin.sub.j, nsubmin.sub.j, ncol.sub.j for all columns but the punctured ones, new c2v messages can be calculated. After that, these values are summed up with v2c-messages and llr-s of all non-punctured columns are obtained. The obtained llr-s are then stored in registers. Also, at this clock cycle, psum and c2vsum are calculated.

(54) If more than one column of the base matrix is indicated as punctured, the above modified Min-Sum decoding process is to be extended accordingly. For example, processing of two punctured columns can be done according to the following scheme:

(55) Clock cycle 1a) For all non-punctured columns c2v messages are calculated. c2v messages are subtracted from llr-s. As a result, v2c messages are obtained that can be stored on the same registers as llr-s. These v2c messages can be used to get values of nsg0 and cmin. These values are used to get partial minimums.

(56) Clock cycle 1b) Also at the 1.sup.st clock cycle llr-s of the 2 punctured columns can be obtained for the previous orthogonality group. After that, these llr-s can be shifted and stored in registers. As a result, llr-s for the punctured columns can be obtained 1 clock later but causes no problem because they are needed 1 clock later.

(57) Clock cycle 2a) Minimums are collected from partial minimums, i.e. values for psg.sub.j pmin.sub.j, psubmin.sub.j, and pcol.sub.j are obtained.

(58) Clock cycle 2b) At this clock cycle nsg0, cmin and c2v are calculated for 2 punctured columns. After that, the values of nsg.sub.j, nmin.sub.j, nsubmin.sub.j, and ncol.sub.j are calculated and stored in memory.

(59) Clock cycle 3a) From the obtained values of nsg.sub.j, nmin.sub.j, nsubmin.sub.j, ncol.sub.j for all non-punctured columns, messages c2v are calculated, which after being summed up with v2c messages, llr-s of all non-punctured columns are given. The llr-s are shifted and stored in registers.

(60) Clock cycle 3b). At this clock cycle, messages nc2v and sums c2vsum and nc2vsum are calculated.

(61) If using above described scheme, a special processor for puncture nodes may be needed for steps 1a), 2a), 3a), and also a processor may be needed for each not-punctured (non-punctured) column which performs operations 1b), 2b), 3b). If the QC-LDPC matrix has m groups of orthogonal subrows, 3*m Clocks per iteration may be required. Every sub-processor 1a), 2a), 3a), 1b), 2b), 3b) will have a stall for 2 clocks from 3 available.

(62) Another even more memory efficient scheme may be used with 4 clocks per processor but less processors (1 processor for the punctured columns and one processors for four not-punctured columns).

(63) Clock Ia) Calculations from 1a) are performed for a first quarter of the non-punctured columns.

(64) Clock Ib) llr-s of punctured columns of the first row of the previous group are calculated. After that, the llr-s are shifted and stored in registers.

(65) Clock IIa) Actions of 2a) are performed for the non-punctured columns and actions of 1a) are performed for a second quarter of the non-punctured columns.

(66) Clock IIb) nsg0, cmin and c2v are calculated for the punctured columns and nsg.sub.j, nmin.sub.j, nsubmin.sub.j, and ncol.sub.j are obtained and stored in registers.

(67) Clock Ma) Actions of 3a) are performed for the first quarter of not-punctured (non-punctured). Actions of 2a) are performed for the second quarter of the not-punctured (non-punctured) columns. Actions of 1a) are performed for a third quarter of not-punctured (non-punctured) columns.

(68) Clock IIIb) Values of nsg.sub.j, nmin.sub.j, nsubmin.sub.j, and ncol.sub.j are determined and stored in memory. Also, c2vsum sums are calculated.

(69) Clock IVa) Actions of 3a) are performed for the second quarter of the non-punctured columns. Actions of 2a) are performed for the third quarter of the non-punctured columns. Actions of 1a) are performed for the fourth quarter of the non-punctured columns.

(70) Clock IVb) Messages nc2v and sums nc2vsum are calculated. A generalization of this approach is possible, if, for example, the number of processors is decreased and the throughput is decreased correspondingly. When denoting the processing steps with letters A-I: A—Calculating c2v for non-punctured nodes. Determining and storing v2c in registers replacing llr-s. Calculating nsg0 and cmin. Calculating partial minimums. B—Getting minimums from partial minimums, i.e. psg.sub.j, pmin.sub.j, psubmin.sub.j, C—Calculating new c2v from nsg.sub.j, nmin.sub.j, nsubmin.sub.j, ncol.sub.j for all non-punctured nodes, summing them up with v2c to obtain llr-s of these columns, shifting them and storing in registers. D—Calculating nsg0, cmin and c2v for punctured nodes. E—Determining nsg.sub.j, nmin.sub.j, nsubmin.sub.j, and ncol.sub.j. F—Calculating c2vsum. G—Calculating nc2vsum. H—Calculating nc2v. I—Calculating llr-s of punctured columns. Shifting and storing them in registers.
and having, for example, three groups of orthogonal subrows (in the high-density and the low-density part) each comprising two orthogonal rows which are denoted as: 1-2—1.sup.st group 3-4—2.sup.nd group 5-6—3.sup.rd group
and twelve not-punctured (non-punctured) columns with: j.1—first half of non-empty cells in the j-th row, 1<=j<=6 and j.2—second half of non-empty cells of the j-th row, 1<=j<=6,
wherein actions A, B, and C are performed for non-punctured columns and actions D, E, F, G, H, and I are performed for punctured columns, FIGS. 11 and 12 depict the schedule for the 3-clock cycle scheme and the schedule for the 4-clock cycle scheme. As can be seen from FIGS. 11 and 12, high parallelism can be achieved.

(71) Moreover, it is to be noted that in addition to enabling the encoder 12 and the decoder 14 to perform encoding and decoding operations on basis of the provided base matrix B, the encoder 12 and the decoder 14 may also use the provided base matrix B to derive irregular QC-LDPC child codes of different rates in accordance with different transmission scenarios, e.g., transmission scenarios which differ from each other in view channel quality and/or throughput requirements, by, for instance, removing (or neglecting) rows of the low-density part and/or columns of the parity part of the provided base matrix B.

(72) The at least one processor configured to perform functions of the encoder or decoder, or base station, the terminal, or the core network apparatus in embodiments of the present disclosure may be a central processing unit (CPU), a general purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA) or another programmable logical device, a transistor logical device, a hardware component, or any combination thereof. The controller/processor may implement or execute various example logical blocks, modules, and circuits described with reference to content disclosed in embodiments of the present disclosure. Alternatively, the processor may be a combination of processors implementing a computing function, for example, a combination of one or more microprocessors, or a combination of the DSP and a microprocessor.

(73) The steps of the method or algorithm described with reference to the content disclosed in embodiments of the present disclosure may be directly implemented by using hardware, a software module executed by a processor, or a combination thereof. The software module may be located in a RAM memory, a flash memory, a ROM memory, an EPROM memory, an EEPROM memory, a register, a hard disk, a portable disk, a CD-ROM, or any other form of storage mediums known in the art. For example, a storage medium is coupled to a processor, so that the processor can read information from the storage medium or write information into the storage medium. Certainly, the storage medium may also be a component of the processor. The processor and the storage medium may be located in the ASIC. In addition, the ASIC may be located in user equipment. Certainly, the processor and the storage medium may exist in the user equipment as discrete components.

(74) The parameters associated with the base matrix, the base matrix, or a matrix extended based on the base matrix can be stored in a memory. The memory can be independent with the at least one processor. The memory can also be integrated in the at least one processor. The memory is one kind of a computer-readable storage medium.

(75) All or some of the foregoing embodiments may be implemented by means of software, hardware, firmware, or any combination thereof. When a software program is used to implement the embodiments, the embodiments may be implemented completely or partially in a form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on the computer, the procedure or functions according to the embodiments of the present disclosure are all or partially generated. The computer may be a general-purpose computer, a dedicated computer, a computer network, or other programmable apparatuses. The computer instructions may be stored in a computer-readable storage medium or may be transmitted from a computer-readable storage medium to another computer-readable storage medium. For example, the computer instructions may be transmitted from a website, computer, server, or data center to another website, computer, server, or data center in a wired (for example, a coaxial cable, an optical fiber, or a digital subscriber line (DSL)) or wireless (for example, infrared, radio, and microwave, or the like) manner. The computer-readable storage medium may be any usable medium accessible by a computer, or a data storage device, such as a server or a data center, integrating one or more usable media. The usable medium may be a magnetic medium (for example, a soft disk, a hard disk, or a magnetic tape), an optical medium (for example, a digital versatile disc (DVD)), a semiconductor medium (for example, a Solid State Disk (SSD)), or the like.

(76) The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the spirit or scope of the disclosure. Thus, the disclosure is not intended to be limited to the examples and designs described herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.