Patent Description:
Low density parity check (LDPC) codes are channel codes used in forward error correcting (FEC) schemes. LDPC codes are well known for their good performance and have received a great deal of attention in recent years. This is due to their ability to achieve performance close to the Shannon limit, the ability to design codes which achieve high parallelization in hardware, and their support of high data rates. Consequently, many of the currently active telecommunication standards have LDPC codes in their physical layer FEC scheme. LDPC codes are considered to be the next-generation communication system encoding standard.

Quasi-Cyclic Low-Density Parity-Check (QC-LDPC) code is based on a base matrix of an irregular QC-LDPC matrix, the base matrix being formed by columns and rows, the columns being dividable into one or more columns corresponding to punctured variable nodes (i.e. variable nodes corresponding to information bits which are used by the encoder but are not transmitted to or effectively treated as not received by the decoder) and columns corresponding to not-punctured variable nodes, and the rows being dividable into high-density rows (i.e. rows having a weight which is above a first weight) and low-density rows (i.e. rows having a weight which is below a second weight, wherein the second weight is equal to or smaller than the first weight).

While known approaches to channel coding have proven to perform well for a wide variety of scenarios, there is still an ongoing research to provide sophisticated solutions that achieve high data throughput with decent encoding/decoding resources.

<CIT> describes an apparatus and method for transmitting a signal in a communication system using a Hybrid Automatic Repeat reQuest (HARQ) scheme. <CIT> describes an apparatus and method to encode a block Low Density Parity Check (LDPC) code in a signal transmission apparatus. <CIT> describes an apparatus and method for coding a semi-systematic block low density parity check (LDPC) code.

According to a first aspect of the present invention, there is provided a method, the method comprising providing entries of a base matrix of an irregular QC-LDPC code for encoding a sequence of information bits, wherein the entries represent blocks of an irregular QC-LDPC matrix and each block represents a shifted circulant matrix or a zero matrix, dividing the rows of the base matrix into a first set and a second set, wherein the rows of the first set have a higher weight than the rows of the second set, selecting a number of columns of a matrix formed by the rows of the second set, wherein rows of a submatrix formed by the selected columns are divided into different groups, each group consisting of a maximum number of orthogonal rows, wherein the selecting is based on a number of different groups, and indicating information bits corresponding to not-selected columns as punctured, wherein the base matrix is the base matrix disclosed in <FIG>.

Puncturing the information bits corresponding to one or more a high weight columns of the irregular QC-LDPC matrix allows for layered decoding with regard to the different groups of "remaining" orthogonal subrows (or row-vectors) in combination with flooding decoding with regard to the high weight columns, thereby achieving a high degree of parallelism during decoding while maintaining high quality code. Thus, selecting columns that are not to be punctured strives at keeping the number of different groups of orthogonal subrows (or row-vectors) as high as possible while avoiding that information bits corresponding to too many columns (e.g., more than given by a threshold) are to be punctured.

In this regard, it is noted that the term "circulant matrix" as used throughout the description and claims in particular refers to a quadratic matrix of size N × N, e.g., the identity matrix, where each row vector is shifted one element to the right relative to the preceding row vector. Moreover, the term "circulant size" refers to the size N of the circulant. Furthermore, the term "base matrix" as used throughout the description and claims in particular refers to an array labelled with shift values. Each shift value of the base matrix gives the number of times by which the rows of the circulant, e.g., the identity matrix, are to be cyclically (right-) shifted to generate a corresponding submatrix of the QC-LDPC matrix defined by the base matrix.

Moreover, it is noted that QC-LDPC code and LDPC code are often used alternately, but a person skilled in the art can understand their meanings. The term "weight" as used throughout the description and claims in particular refers to the number of entries in a row or column of the base matrix that are labelled with shift values, i.e. the entries in the rows or columns of the base matrix that do not represent zero matrices, which is equal to the number of "<NUM>" in the corresponding rows and columns of the QC-LDPC matrix. In this regard, it is noted that the term "weight" as used throughout the description and claims can be interchanged by the terms "node degree" or "density" which have the same or a similar meaning. Furthermore, the term "punctured" as used throughout the description and claims in relation to information bits (or the corresponding variable nodes or the corresponding columns) in particular indicates that the information bits are only used by the encoder but are not transmitted to or effectively treated as not received by the decoder. Even further, the term "corresponding" as used throughout the description and claims in relation to columns, nodes, and information bits in particular refers to the mapping between columns and variable nodes/information bits in terms of the Tanner graph representation of the QC-LDPC matrix.

Furthermore, it is to be noted that values forming a "matrix" do not necessarily have to be physically stored or presented in matrix- (or array-) form, or used in matrix algebra throughout a process involving the matrix. Rather the term "matrix" as used throughout the description and claims may equally refer to a set of (integer) values with assigned row and column indices or to a set of (integer) values which are stored in a (logical) memory array. Moreover, if not involving matrix algebra or if respective matrix algebra routines are suitably redefined, the notion of rows and columns may even be changed or freely chosen. However, throughout the description and claims, it is adhered to the mathematical concepts and notations regularly used in the art and they shall be understood as encompassing equivalent mathematical concepts and notations.

In the first implementation form of the method according to the first aspect, the number of not-selected columns is two.

Hence, there may be a relatively small number of not-selected columns which, however, have a relatively high weight (e.g., more than two times or three times the mean weight of the selected columns) thereby providing good "connectivity" of the groups of orthogonal subrows (or row vectors) while effectively allowing for a high degree of parallelism during decoding due to the relatively small number of columns which have to be "separated" (or divided into non-overlapping sets or groups) to achieve orthogonality within the groups of remaining (selected) subrows (or row vectors).

In a second possible implementation form of the method according to the first aspect as such or according to the first implementation form of the first aspect, selecting the number of columns of the matrix formed by the rows of the second set comprises ordering or grouping the columns of the matrix formed by the rows of the second set by weight and selecting columns having weights below a threshold.

Thus, groups with a large number of orthogonal subrows (or row vectors) can be achieved, which allows for a higher degree of parallelism during decoding.

According to any one of the first or second implementation form of the first aspect, a matrix consisting of a subset of columns of a matrix formed by the rows of the first set has a dual diagonal or triangular structure.

Hence, the high-density part of the irregular QC-LDPC matrix facilitates encoding by having a parity part with a dual diagonal or triangular structure. This also improves the susceptibility of the code to rate-adaptiveness as the number of rows (and corresponding columns if, for example, removing a row would leave an empty column) removed from the low-density part allows to change the rate of the code without, however, effectively touching on the encoding/decoding properties of the high-density part. In this regard, the method may also comprise removing a number of rows (and corresponding columns) of the second set of the irregular QC-LDPC matrix to adapt a rate of the irregular QC-LDPC code.

According to any one of the first or second implementation forms of the first aspect, a matrix consisting of a subset of columns of the matrix formed by the rows of the second set has a triangular or identity matrix structure.

Thus, encoding may be performed in a two-step procedure comprising encoding an input sequence based on subcolumns (or column vectors) of the high-density part and encoding the encoded output sequence based on subcolumns (or column vectors) of the low-density part, thereby utilizing a raptor-like encoding process.

According to any one of the first implementation forms of the first aspect, rows of a matrix formed by columns of the matrix formed by the rows of the first set which correspond to non-punctured information bits are divided into different groups, each group consisting of orthogonal rows.

Hence, groups (or subsets) of orthogonal subrows (or row vectors) can be formed in the high-density set and in the low-density set which allows for an even higher degree of parallelism during decoding.

In a third possible implementation form of the method according to the first aspect as such or according to any one of the first or second implementation forms of the first aspect, the method further comprises determining a codeword corresponding to the sequence of information bits based on the provided entries of the base matrix and transmitting the codeword except for information bits that are indicated as punctured.

Thus, a rate of the QC-LDPC code can be increased.

In an aspect not forming part of the invention as claimed, the method further comprises decoding a received sequence of information bits based on the provided entries of the base matrix and information about which information bits are punctured, wherein the decoding comprises flooding and layered decoding operations, wherein layers correspond to the different groups.

Thus, decoding convergence can be improved while maintaining high parallelism of the decoding process. In this regard, it is noted that the term "layered decoding" as used throughout the description and claims in particular refers to a decoding process where rows of a layer are processed in parallel but layers are processed (substantially) consecutively.

According to an aspect not forming part of the invention as claimed, there is provided a decoder, the decoder comprising a non-transient memory storing entries of a base matrix of an irregular QC-LDPC code, wherein columns of the base matrix are divided into a first set and a second set, the first set comprising one or more columns and the columns of the second set forming a matrix comprising groups of orthogonal rows, wherein the decoder is configured to decode a received sequence of information bits based on a flooding decoding process for variable nodes corresponding to the one or more columns of the first set and a layered decoding process for nodes corresponding to the columns of the second set.

Thus, decoding convergence can be improved while allowing to maintain code quality and high parallelism of the decoding process, thereby enabling high throughput at a low error rate.

In a first possible implementation form of the decoder according to an aspect not forming part of the invention as claimed, the variable nodes corresponding to the one or more columns of the first set are indicated as punctured.

Thus, a rate of the irregular QC-LDPC code can be increased.

In a second possible implementation form of the decoder according to an aspect not forming part of the invention as claimed, the number of columns in the first set is one or two.

Hence, there may be a relatively small number of columns in the first set which, however, may have a relatively high weight (e.g., more than two times or three times the mean weight of the columns of the second set) thereby improving the "connectivity" of the layers.

In a third possible implementation form of the decoder according to an aspect not forming part of the invention as claimed, rows of the base matrix are divided into a first set and a second set, wherein the rows of the first set have a higher weight than the rows of the second set.

This makes the code even more susceptible to rate adaption by removing (or disregarding) rows of the second set (and corresponding columns of the second set) without substantially deteriorating quality of the code.

In a fourth possible implementation form of the decoder according to an aspect not forming part of the invention as claimed, a matrix consisting of a subset of columns of a matrix formed by the rows of the first set has a dual diagonal or triangular structure.

Hence, the high-density part of the irregular QC-LDPC matrix facilitates encoding by having a parity part with a dual diagonal or triangular structure.

In a fifth possible implementation form of the decoder according to an aspect not forming part of the invention as claimed, a matrix consisting of a subset of columns of the matrix formed by the rows of the second set has a triangular or identity matrix structure.

Thus, encoding may be performed utilizing a raptor-like encoding process which reduces or obviates the need for requesting retransmissions by the decoder.

In a sixth possible implementation form of the decoder according to an aspect not forming part of the invention as claimed, rows of a matrix formed by overlapping entries of the columns of the second set and the rows of the first set are divided into different groups, each group consisting of orthogonal rows.

Hence, a higher degree of parallelism during decoding can be achieved.

According to a third aspect of the present invention, there is provided a non-transient computer-readable medium storing instructions which, when carried out by a computer cause the computer to provide a base matrix of an irregular QC-LDPC 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 not-punctured variable nodes, and the rows being dividable into first rows having a weight which is above a first weight and second rows having a weight which is below a second weight, wherein the second weight is equal to or smaller than the first weight, wherein an overlap of the second rows and the columns corresponding to the not-punctured variable nodes is dividable into groups of orthogonal row-vectors, wherein the base matrix is the base matrix disclosed in <FIG>.

Puncturing the variable nodes corresponding to one or more a high weight columns of the base matrix of the irregular QC-LDPC matrix allows for layered decoding with regard to the different groups of "remaining" orthogonal subrows (or row-vectors) in combination with flooding decoding with regard to the high weight columns, thereby achieving a high degree of parallelism during decoding while maintaining high quality code.

<FIG> shows a possible application scenario according to the present disclosure. As As shown in <FIG>, at least one of terminal (such as, user equipment, UE for short) is connected to a radio access network (RAN for short) and a core network (CN for short). The technology described in the present disclosure may be applied to <NUM> 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.

The term "terminal" involved in the present invention 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 (User Equipment, UE for short), mobile stations (Mobile station, MS for short), terminals (terminal), terminal equipment (Terminal Equipment), and the like. The radio access network comprising at least one base station. A base station (base station, BS for short) 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.

<FIG> shows a block diagram illustrating a digital communications system <NUM> in which processes of the present disclosure may be implemented. The digital communications system <NUM> includes a transmitting side comprising an encoder <NUM> and a receiving side comprising a decoder <NUM>. 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 <NUM> at the transmitting side is, for example, an information sequence IS<NUM> of k bits to which a redundancy sequence of r bits is added in an encoding operation performed by the encoder <NUM>, thereby producing an encoded information sequence IS<NUM> of k + r = n bits which may be forwarded to a modulator <NUM>.

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

At the receiving side, the channel output vector CH_OUT may be processed by a demodulator <NUM> which produces some likelihood ratio. The decoder <NUM> may use the redundancy in the received information sequence IS<NUM> in a decoding operation performed by the decoder <NUM> to correct errors in the received information sequence IS<NUM> and produce a decoded information sequence IS<NUM> (cf. <NPL>, and <NPL>). The decoded information sequence IS<NUM> is an estimate of the encoded information sequence IS<NUM> from which (an estimate of) the information sequence IS<NUM> can be extracted.

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 <NUM> and a parity-check matrix H for the decoding operation performed by the decoder <NUM>. For an LDPC code with an information sequence IS<NUM> of size <NUM>×k, a codeword IS<NUM> of size <NUM>×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.

The parity-check matrix Hr×n and the generator matrix Gk×n enjoy the orthogonality property, which states that for any generator matrix Gk×n with k linearly independent rows there exists a parity-check matrix Hr×n with r=(n-k) linearly independent rows. Thus, any row of the generator matrix Gk×n, is orthogonal to the rows of the parity-check matrix Hr×n such that the following equation is satisfied: <MAT>.

The encoding operation can be performed by means of a multiplication between the information sequence IS<NUM> and the generator matrix Gk×n, wherein the result of the multiplication is the encoded information sequence IS<NUM>: <MAT>.

At the receiving side, due to the orthogonality property between the generator matrix Gk×n and the parity-check matrix Hr×n, the following equation should be satisfied: <MAT> where IS<NUM> is the decoded received information sequence of size <NUM>×n. If the above equation is verified, the information sequence estimate IS<NUM> may be assumed to be correct.

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

Moreover, it should be noted that LDPC codes having a parity-check matrix Hr×n of a particular structure such as, for example, a parity-check matrix Hr×n having a parity part of dual diagonal structure allow the encoding of the information sequence IS<NUM> using (only) the parity-check matrix Hr×n so that obtaining the generator matrix Gk×n may not be required (cf.

A particular form of the parity-check matrix Hr×n is a regular QC-LDPC matrix <MAT> which can be divided into quadratic submatrices I(pj,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(<NUM>) by pj,l positions: <MAT> with N = n / L (cf. Thus, a regular QC-LDPC matrix <MAT> may be defined by a base matrix B which satisfies: <MAT>.

Moreover, a base matrix B of an irregular QC-LDPC matrix <MAT> may be obtained by <MAT> where " C" denotes the Hadamard product and <MAT> denotes a mask matrix with mj,l ∈ {<NUM>,<NUM>}. Alternatively, the base matrix B of an irregular QC-LDPC matrix <MAT> may be obtained by (only) partially labelling the base matrix B with shift values pj,l ∈ {<NUM>. N} with not labelled entries (which are sometimes represented by a value of "-<NUM>" or an asterisk "*") representing zero matrices of size N×N.

Thus, for employing a QC-LDPC code in the encoder <NUM> and the decoder <NUM>, the encoder <NUM> and the decoder <NUM> 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 Mmask. For instance, an apparatus configured to choose shift values for determining a QC-LDPC matrix <MAT> may provide the shift values to the encoder <NUM> and/or the decoder <NUM>. Moreover, the encoder <NUM> and the decoder <NUM> may also be provided with a mask matrix Mmask to generate one or more irregular QC-LDPC matrices <MAT>.

Furthermore, it is to note that a QC-LDPC matrix HQC (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 <MAT> 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 "<NUM>" in the QC-LDPC matrix <MAT> (cf. In this regard, it is to note that the variable nodes represent codeword bits and the check nodes represent parity-check equations.

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

The process <NUM> of providing an irregular QC-LDPC code for encoding or decoding a sequence of information bits may start at step <NUM> 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>. It comprises a "core" base matrix in the high-density part (indicated in grey on the upper left of <FIG>). 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>, 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.

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 <NUM> rows and <NUM> columns, or the base matrix B is a matrix with <NUM> rows and <NUM> columns, etc. The present disclosure does not limit the size of base matrix.

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>, 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).

<FIG> shows a numeric example of provided entries of a base matrix B of size 19x35 (<NUM> rows and <NUM> 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>, the rows of the base matrix B can be divided into an upper part having a weight of above <NUM> and a lower part having a weight of below <NUM>, i.e. less than half the weight of the rows of the upper part. Thus, the base matrix B shown in <FIG> can be divided into a high-density part comprising rows <NUM> to <NUM> and a low-density part comprising rows <NUM> to <NUM> as indicated at step <NUM> of the process <NUM> shown in <FIG>.

Moreover, as shown in <FIG>, the rows of the submatrix formed by the overlap of columns <NUM> to <NUM> 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.

<FIG> shows the numeric example of the claimed invention providing the entries of a base matrix B of size 46x68 (<NUM> rows and <NUM> columns). In <FIG>, clolumn <NUM> and <NUM> are punctured. For column <NUM> to <NUM>, starting from row <NUM>, there are multiple group of orthogonal rows. The orthogonal rows are the rows not overlapped from columnwise point of view. For example, rows <NUM> and <NUM> are orthogonal, and rows <NUM> and <NUM> are orthogonal.

<FIG> and <FIG> show different designs of base graphs of base matrices not falling under the invention as claimed. 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 parity check matrix is represented by a marked box. Each marked box is associated with a shift value in the base matrix. In <FIG> and <FIG>, columns <NUM> and <NUM> are punctured columns. It should be noted that the punctured column can be one or more columns.

Specifically, <FIG> shows an example of a base graph of a base matrix with <NUM> rows and <NUM> columns. For the not-punctured columns (i. e, except for columns <NUM> and <NUM>), starting from row <NUM>, i. from rows <NUM> to <NUM>, such rows are non-conflict quasi-row orthogonal. In particular, starting from row <NUM>, each group of rows (for example, each two adjacent rows) is non-conflict quasi-row orthogonal. As can be seen form <FIG>, the marked boxes are not overlapped. For example, rows <NUM> and <NUM> are orthogonal, rows <NUM> and <NUM> are orthogonal, rows <NUM> and <NUM> are orthogonal, and rows <NUM> and <NUM> are orthogonal. Those rows, rows (<NUM>, <NUM>), (<NUM>, <NUM>) and (<NUM>, <NUM>) 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.

In this example not falling under the scope of the invention as claimed, the rows of the first set are from rows <NUM> to <NUM>, and the rows of the second set are starting from rows <NUM> to row <NUM>. In this design, if rows <NUM> to <NUM> are considered as rows of core base matrix, and rows <NUM> to <NUM> are considered as rows of the extension part, all the rows of extension part are non-conflict quasi-row orthogonal. If rows <NUM> to <NUM> are considered as rows of core base matrix, and rows <NUM> to <NUM> 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.

It should be noted that the orthogonal group in <FIG> 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.

<FIG> shows a base graph of a base matrix with <NUM> rows and <NUM> columns. In <FIG>, orthogonal groups of rows extension starting from row <NUM>. For example, rows <NUM> and <NUM> are orthogonal, rows <NUM> and <NUM> are orthogonal, and rows <NUM> and <NUM> are orthogonal. The orthogonal groups in <FIG> comprise adjacent two orthogonal rows, i.e. rows <NUM> and <NUM>, rows <NUM> and <NUM>, and rows <NUM> and <NUM>. 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.

As further indicated at step <NUM> of the process <NUM> illustrated in <FIG>, column <NUM> of the base matrix B is punctured. After encoding a sequence of information bits by the encoder <NUM> 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 <NUM> to the decoder <NUM>, the encoder <NUM> 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>, <FIG>, and <FIG>. 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>) 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).

As indicated by step A shown in <FIG>, the log-likelihood-ratios (llr-s) of the punctured columns are calculated using the following formulas with llr, sg0j, sgj, minj, subminj, colj, v2cj, csgj, c2vj, nsg0j, cminj, psgj, pminj, psubminj, pcolj, nsgj, nminj, nsubminj, ncolj, and nc2vj being vectors of length N and alpha denoting the scale parameter of the normalized Min-Sum decoding process:.

First, csgj, |c2vj|, and c2v are calculated for <NUM> < = < = n by:.

Then, nsg0j, cminj, and v2cj, are calculated by:.

Now, as indicated by step B shown in <FIG>, 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 <NUM> < = j < = n by:.

These values are stored in memory where sgj, minj, subminj, colj, and sg0j replace the currently stored values for the next decoding iteration.

Finally, psum, c2vsum, and the new llr-s of the punctured node are calculated as indicated by step C shown in <FIG> by:.

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 <NUM> 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 sgj, minj, subminj, colj are loaded to registers before the <NUM>st clock cycle begins.

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:.

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:.

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 column which performs operations 1b), 2b), 3b). If the QC-LDPC matrix has m groups of orthogonal subrows, <NUM>*m Clocks per iteration may be required. Every sub-processor 1a), 2a), 3a), 1b), 2b), 3b) will have a stall for <NUM> clocks from <NUM> available.

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

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:.

Moreover, it is to be noted that in addition to enabling the encoder <NUM> and the decoder <NUM> to perform encoding and decoding operations on basis of the provided base matrix B, the encoder <NUM> and the decoder <NUM> 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.

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 the present invention 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 the present invention. 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.

The steps of the method or algorithm described with reference to the content disclosed in the present invention 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.

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.

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 invention 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.

Claim 1:
A method for wireless communication, comprising:
obtaining a sequence of information bits to be encoded;
encoding the sequence of information bits based on a base matrix of an irregular QC-LDPC code;
the base matrix having <NUM> rows and <NUM> columns, the <NUM> columns comprising two punctured columns and multiple non-punctured columns, wherein the two punctured columns are the first and the second columns of the base matrix corresponding to information bits,
the <NUM> rows comprising a first set of rows and a second set of rows,
rows of the second set comprising at least one group, each group comprising at least two consecutive rows, the at least two consecutive rows consisting of a first part and a second part,
the first part being the two punctured columns and rows of the first part being non-orthogonal, and
the second part being the non-punctured columns, and rows of the second part being orthogonal;
each entry in the base matrix is either labelled or not-labelled;
each labelled entry in the base matrix having a shift value and corresponding to a shifted circulant matrix;
each not-labelled entry in the base matrix corresponding to a zero matrix;
and the base matrix is
<IMG>
wherein "-<NUM>" in the base matrix represents a not-labelled entry, and an integer greater than or equal to <NUM> in the base matrix represents a shift value of a labelled entry.