Encoding and decoding method and apparatus for structured low density parity check (LDPC) codes

By optimizing the design of the fundamental matrix Hb and the extension factor Z, the problems of insufficient flexibility and incremental redundancy HARQ in the LDPC encoder and decoder are solved, achieving high-performance LDPC encoding and decoding, which meets the ultra-high throughput and low latency requirements of 5G New Radio.

CN116827357BActive Publication Date: 2026-06-12ZTE CORP

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
ZTE CORP
Filing Date
2016-10-10
Publication Date
2026-06-12

AI Technical Summary

Technical Problem

Existing LDPC codecs cannot support incrementally redundant HARQ and lack flexibility, failing to meet the ultra-high throughput and low processing latency requirements of 5G New Radio.

Method used

A structured LDPC coding method is designed. By defining the basic matrix Hb as a block A consisting of Mb×Kb and a block B consisting of Mb×Mb, and combining it with the expansion factor Z, the coding and decoding processes are optimized to ensure high performance and flexibility under different code lengths and code rates.

🎯Benefits of technology

It achieves ultra-high-speed LDPC encoding and decoding, approaching turbo code performance, and supports incremental redundancy HARQ and flexibility to meet the requirements of 5G New Radio.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116827357B_ABST
    Figure CN116827357B_ABST
Patent Text Reader

Abstract

This invention provides an encoding and decoding method and apparatus for Structured Low-Density Parity-Check (LDPC) codes. The encoding method includes: determining a base matrix for encoding, the base matrix comprising one or more submatrices, the submatrices including a top-left submatrix Hb1 and a top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2; performing LDPC encoding operations on the source information bit sequence based on the base matrix and the corresponding extension factor Z to obtain a codeword sequence, where Z is a positive integer greater than or equal to 1. The above technical solution provided by this invention solves the problems of insufficient flexibility and inability to support incremental redundancy HARQ in related technologies for LDPC encoders and decoders.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of Chinese patent application No. 201610884876.6, filed on October 10, 2016, entitled “Encoding and Decoding Method and Apparatus for Structured LDPC”. Technical Field

[0002] This invention relates to the field of communications, and more specifically, to a method and apparatus for encoding and decoding structured low-density parity check codes (LDPC). Background Technology

[0003] With the development of wireless digital communication and the emergence of various high-speed, bursty services, people have placed increasingly higher demands on error correction coding technology. Figure 1 LDPC is a typical digital communication system. It is a class of linear block codes that can be defined using a very sparse parity-check matrix or a bipartite graph. Originally discovered by Gallager, it is called Gallager code. After decades of dormancy, with the development of computer hardware and related theories, MacKay and Neal rediscovered it and proved that it has performance approaching the Shannon limit. Recent research shows that LDPC codes have the following characteristics: low decoding complexity, linear-time encoding capability, performance approaching the Shannon limit, parallel decoding capability, and superior performance compared to Turbo codes under long code length conditions.

[0004] LDPC codes are a special type of linear block code. In communication, each transmitted codeword with a block length of N bits requires M parity bits to ensure a certain level of error correction capability. Each codeword must satisfy Hx T =0 T , where H is an M×N dimensional parity check matrix over a binary field. All operations are performed over the binary field GF(2), where addition and subtraction are XOR operations, and multiplication is AND operations.

[0005] LDPC codes are linear block codes based on sparse parity-check matrices. It is precisely the sparsity of their parity-check matrix that enables low-complexity encoding and decoding, thus making LDPC codes practical. The Gallager code mentioned earlier is a regular LDPC code, while Luby and Mitzenmacher et al. generalized Gallager codes, proposing irregular LDPC codes. Gallager's initial code had a regular code structure, with a sparse parity-check matrix where each row and column had the same number of 1s. MGLuby argued that if the number of non-zero elements in the rows or columns of the parity-check matrix could vary while maintaining the matrix's sparsity, the encoding and decoding algorithms would still be applicable, but the encoding performance could be greatly improved, reaching or even exceeding the performance of Turbo codes. This is because in this coding structure, if the left and right nodes of the corresponding bipartite graph have a suitable degree distribution, a waveform effect will occur during decoding, which will greatly improve decoding performance. Non-regular codes are low-density codes that allow the same type of node to have different degrees, while the coding originally proposed by Gallager is called a regular code.

[0006] The graphical representation of the LDPC parity check matrix is ​​a bipartite graph. There is a one-to-one correspondence between the bipartite graph and the parity check matrix. An M*N parity check matrix H defines that each codeword with N bits satisfies the constraints of M parity check sets. A bipartite graph consists of N variable nodes and M parity check nodes. When the m-th check involves the n-th bit, i.e., the element Hm in the m-th row and n-th column of H, where n=1, a connection will be established between the check node m and the variable node n. In the bipartite graph, there are no connections between nodes of the same type, and the total number of edges in the bipartite graph is equal to the number of non-zero elements in the parity check matrix.

[0007] The concept of girth is used to quantitatively describe short cycles in a bipartite graph. In graph theory, the girth of a bipartite graph refers to the length of the shortest cycle in the graph. For example, if a bipartite graph has cycles of length 6, 8, 10, 12, and longer cycles, then the girth of the bipartite graph is 6. The girth of a variable node refers to the length of the shortest cycle passing through that node. Since a variable node uniquely corresponds to a codeword bit, the girth of a codeword bit is the same as the girth of a variable node. (Structured LDPC codes)

[0008] Structured LDPC codes are the most popular type of LDPC codes in the industry and have the widest range of applications. They are currently found in international standards such as IEEE 802.11n / ad and IEEE 802.16e. In academia, this type of LDPC code is often referred to as quasi-cyclic LDPC code or multilateral LDPC code.

[0009] In this type of structured LDPC code, the parity check matrix H is denoted as an (M×z)×(N×z) matrix, which consists of M×N block matrices. Each block matrix is ​​a different power of the z×z fundamental permutation matrix. When the fundamental permutation matrix is ​​an identity matrix, they are all cyclic shift matrices of the identity matrix (right shift is assumed in this text). Each block matrix can be uniquely identified by such a power j. The power of the identity matrix can be represented by 0, and the zero matrix is ​​generally represented by -1. Thus, if each block matrix of H is replaced by its power, an M×N power matrix Hb is obtained. Here, Hb is defined as the fundamental matrix of H, and H is called the extension matrix of Hb. In actual encoding, z = code length / number of columns of the fundamental matrix N, called the extension factor.

[0010] For example, matrix

[0011]

[0012] It can be obtained by expanding the following parameter z and a 2×4 fundamental matrix Hb:

[0013] z=3 and

[0014] The precise definition is as follows: An (N,K) structured LDPC code is defined by a parity check matrix H of size (mb×z)×(nb×z), where the parity check matrix H is determined by three variables: the fundamental matrix Hb of size mb×nb, the expansion factor z, and the basic permutation matrix P. The information sequence length K = (nb-mb)×z, the codeword length N = nb×z, and the code rate r = k / n. All elements in the fundamental matrix Hb are permuted into a square matrix of all zeros or the hb of the basic permutation matrix P. ij The power matrix is ​​used to obtain the expanded parity check matrix H, where hb ij These are elements in Hb. The definition of the fundamental matrix Hb is as follows:

[0015]

[0016] The extended parity check matrix H is defined as follows:

[0017]

[0018] Therefore, it can be said that the encoder of an LDPC code is uniquely generated by the fundamental matrix Hb, the spread factor z, and the chosen basic permutation matrix. Based on the definition of the fundamental matrix above, it can be seen that, given the spread factor (an integer z greater than 1), the fundamental matrix and the parity check matrix are essentially the same thing.

[0019] LDPC code encoding

[0020] The direct encoding method of the system block code is as follows: A codeword x is divided into NM information bits s and M parity bits c. Correspondingly, the M×N parity check matrix H is divided into two blocks of size M×(NM) and M×M, corresponding to the information bits and parity bits respectively, i.e., H = [A|B]. Based on H×x = 0, we can obtain:

[0021]

[0022] Therefore, we can obtain A×s+B×c=0, and further deduce that c=B -1 As. When block B adopts a special matrix structure, such as a strict lower triangular structure (semi-random matrix), a double lower triangular structure, etc., then B -1 It has a very simple form, and the check bit part c in the codeword can be directly calculated according to the above formula, and the encoder can be guaranteed to have linear complexity.

[0023] Alternatively, the Richardson linear-time coding algorithm can be used: the parity check matrix H has a quasi-lower triangular structure, and H is assumed to have the following form:

[0024]

[0025] Let the encoded codeword be x = (s, p1, p2), where s is the systematic bit part of the encoded codeword, p1 and p2 are the parity bit parts of the codeword, p1 has a length of g, and p2 has a length of (mg). In the above formula, the dimension of A is (mg) × (nm), B is (mg) × g, T is (mg) × (mg), C is g × (nm), D is g × g, and E is g × (mg). All these matrices are sparse matrices, and T is a lower triangular matrix with all elements on the main diagonal being 1. The parity bit part can be obtained by the following formula:

[0026]

[0027] in,

[0028] Considering the vector characteristics of structured LDPC codes, vector decoding can also be considered. If the parity part of a structured LDPC code is a strict lower triangular matrix, it can be encoded in the following vector manner, which is very mature and simple.

[0029] The encoded codeword of the (n,k) structured LDPC code is c=(x,b), where x=(x0,x1,,x2,b2,b3,b4,b5,b6,b7,b8,b9 ... k-1 ) is an information sequence, b = (b0, b1, ..., b) n-k-1 ) is the check sequence.

[0030] LDPC encoding is performed on the input k-bit information sequence x to generate a check sequence b containing nk bits. The LDPC codeword c = [x, b], where n = nb × z, k = kb × z, kb = nb - mb, and z is the spread factor. The information sequence x can be divided into kb subsequences of length z:

[0031] x = [x(0), x(1), x(2), ..., x(kb-1)]

[0032] Each subsequence is as follows:

[0033] x(i)=[x i×z ,x i×z+1 ,x i×z+2 ,,x i×z+z-1 ]

[0034] The verification sequence b is divided into mb subsequences of length z:

[0035] b = [b(0), b(1), b(2), ..., b(mb-1)]

[0036] Each subsequence is as follows:

[0037] b(i) = [b i×z ,b i×z+1 ,b i×z+2 ,,b i×z+z-1 ]

[0038] Define an intermediate variable sequence v, where v is divided into mb subsequences of length z:

[0039] v = [v(0), v(1), v(2), v(mb-1)]

[0040] Each subsequence is as follows:

[0041] v(i) = [v i×z ,v i×z+1 ,v i×z+2 ,,v i×z+z-1 ]

[0042] The LDPC encoding steps are as follows:

[0043] Calculate the intermediate variable sequence v:

[0044]

[0045] Calculate the check sequence b:

[0046]

[0047]

[0048] Calculate the LDPC codeword c = [x, b].

[0049] In summary, the encoder of an LDPC code can be uniquely described by the LDPC parity check matrix H. The specific encoding method is already very mature and simple, so it will not be elaborated upon here. Furthermore, the parity check matrix of an LDPC code not only determines the performance of the LDPC code decoder, but also the complexity, storage space, and processing latency of the encoder and decoder. It also determines what can support incremental redundancy HARQ and whether it is flexible enough. Therefore, finding a suitable parity check matrix structure for LDPC codes is crucial and determines the future application prospects of LDPC codes.

[0050] In practical implementation, the above-mentioned direct method, the Richardson method, or other methods can be used to complete the encoding function of obtaining an N-bit codeword from NM-bit source data. In fact, this encoder uses software or hardware to implement the multiplication and addition operations of sparse matrices in the formula. For LDPC codes based on identity matrices and their cyclic shift matrices, the multiplication operation of sparse matrices can be composed of multiple z-bit (z is the expansion factor) cyclic shift registers and multiple z-bit adders, while the addition operation of sparse matrices is completed by the aforementioned multiple z-bit adders. These multiple z-bit cyclic shift registers and multiple z-bit adders construct a hardware circuit-implemented LDPC encoder.

[0051] LDPC decoding

[0052] The graphical representation of the LDPC parity check matrix is ​​a bipartite graph. There is a one-to-one correspondence between the bipartite graph and the parity check matrix. An M*N parity check matrix H defines that each codeword with N bits satisfies the constraints of M parity check sets. A bipartite graph consists of N variable nodes and M parity check nodes. When the m-th check involves the n-th bit, i.e., the element Hm in the m-th row and n-th column of H, where n=1, a connection will be established between the check node m and the variable node n. In the bipartite graph, there are no connections between nodes of the same type, and the total number of edges in the bipartite graph is equal to the number of non-zero elements in the parity check matrix.

[0053] The information passing decoding algorithm for LDPC codes assumes that the variable nodes are independent. The existence of short cycles inevitably violates this assumption, leading to a significant decrease in decoding performance. In fact, the longer the shortest cycle length of the bipartite graph corresponding to the LDPC parity check matrix (i.e., the larger the girth value), the smaller the positive feedback information transmitted from the variable node to itself, resulting in better decoding performance. A correlation exists between the girth of the parity check matrix H and the fundamental matrix Hb, a conclusion confirmed through mathematical reasoning and computer simulation.

[0054] The following explains the girth of a bipartite graph, the girth of a node, and the girth of an edge. To quantitatively describe short cycles in a bipartite graph, the concept of girth is introduced. The girth of a bipartite graph refers to the length of the shortest cycle in the graph. For example, if a bipartite graph has cycles of length 6, 8, 10, 12, and longer cycles, then the girth of the bipartite graph is 6. The girth of a node u in a bipartite graph refers to the length of the shortest cycle passing through node u. For example, if there are cycles of length 8, 10, 12, and longer cycles passing through node u, then the girth of node u is 8. The girth of an edge e in a bipartite graph refers to the length of the shortest cycle passing through edge e. For example, if there are cycles of length 8, 10, 12, and longer cycles passing through node e, then the girth of node u is 8.

[0055] The girth of a variable node refers to the length of the shortest path, which is equivalent to the minimum number of iterations required for information originating from that node to be transmitted back to it. Before the actual number of iterations reaches this minimum, the information associated with that node can be optimally transmitted to the remainder of the bipartite graph. If the girth of a variable node is larger, the positive feedback information transmitted back to it will be smaller, resulting in better decoding performance. Therefore, maximizing the girth of variable nodes is beneficial for improving code performance. In summary, the principles for constructing high-performance LDPC codes are as follows: First, the length (girth) of the shortest cycle of the selected code should be as large as possible; second, for codes with the same girth, the number of shortest cycles in the selected code should be as small as possible.

[0056] In practical applications, the base matrix is ​​expanded into a parity check matrix, which can also be called an extended matrix or a binary matrix. Analysis of the topology of the parity check matrix reveals that the elements of the z×z block matrices in the extended matrix and the base matrix are uniquely corresponding. If some elements in the base matrix do not form short cycles, then the block matrices corresponding to these elements will also not form short cycles in the extended matrix. Therefore, to study short cycles in the extended matrix, it is only necessary to study the extended matrix when short cycles appear in the base matrix.

[0057] Analyze the parity-check matrix and the topology of the bipartite graph, when the fundamental matrix H... b When a short loop of length 4 appears in H, b Only an extended matrix H can produce short cycles of length 4 or greater, as shown below: There are four z×z block matrices P. i ,P j ,P k ,P l The corresponding power elements i, j, k, l in H b The middle forms a short loop of length 4. If mod(i-j+kl,z)=0, then P i ,P j ,P k ,P l In H, a short loop of length 4 is formed; if mod(i-j+kl,z)=z / 2, then Pi,Pj,Pk,Pl form a short loop of length 8 in H. In other cases, P... i ,P j ,P k ,P l In H, a short loop of length 12 is formed or no short loop is formed.

[0058] Analyzing the parity-check matrix and the topology of the bipartite graph, when a short cycle of length 6 appears in the fundamental matrix Hb, H... b Only an extended matrix H can produce short cycles of length 6 or greater, as shown below: There are six z×z block matrices P. i ,P j ,P k ,P l ,P m ,P n The corresponding power elements i, j, k, l, m, n in H b The middle forms a short loop of length 6. If mod(i-j+k-l+mn,z)=0, then P i ,P j ,P k ,P l ,P m ,P nA short loop of length 6 is formed in H; if mod(i-j+k-l+mn,z)=z / 2, then P i ,P j ,P k ,P l ,P m ,P n In H, a short loop of length 10 is formed. In other cases, P... i ,P j ,P k ,P l ,P m ,P n In H, it forms a short loop with a length greater than or equal to 12 or does not form a short loop.

[0059] Analyze the parity-check matrix and the topology of the bipartite graph, when the fundamental matrix H... b When a short loop of length 8 appears in H, b Only an extended matrix H can produce short cycles of length 8 or greater, as shown below: There are eight z×z block matrices P. i ,P j ,P k ,P l ,P m ,P n ,,P s ,P t The corresponding power elements i, j, k, l, m, n, s, t in H b The middle forms a short loop of length 8; if mod(i-j+k-l+m-n+st,z)=0, then P i ,P j ,P k ,P l ,P m ,P n ,P s ,P t In H, a short loop of length 8 is formed; otherwise, P i ,P j ,P k ,P l ,P m ,P n ,P s ,P t In H, a short loop of length 12 is formed or no short loop is formed.

[0060] Fundamental matrix correction

[0061] If the same basic matrix cannot be used for each different expansion factor, then for each different code length, the LDPC code encoder and decoder needs to store a basic matrix. When the code length is large, many basic matrices need to be stored, which will occupy a lot of storage space or make the hardware implementation circuit very complex.

[0062] Correction involves using an expansion factor of another code length to adjust the non-negative elements in the fundamental matrix Hb. The corrected element value should be less than the expansion factor value under that code length. Correction algorithms can employ modulo, floor, or rounding. Let Pi,j be the non-negative element in the i-th row and j-th column of the fundamental matrix, and P'i,j be the corrected element. Then:

[0063] For the modulo method:

[0064]

[0065] For the rounding (scale + floor) method:

[0066]

[0067] For rounding (scale + round):

[0068]

[0069] Where N is the number of columns in the basic matrix, and n is the code length of the low-density parity-check code to generate the parity-check matrix. mod is the modulo operation, [] is the floor operation, and Round is the rounding operation. Here, the maximum code length is assumed to be 2304.

[0070] For example, for a low-density parity-check code with a code length of 1152 bits, if a non-negative element of its fundamental matrix is ​​93, then its correction result is:

[0071] For the modulo method:

[0072]

[0073] For the rounding (scale + floor) method:

[0074]

[0075] For rounding (scale + round):

[0076]

[0077] If LDPC codes use the currently popular layered decoding, the reading and writing of log-likelihood ratio information severely impacts the pipeline arrangement. Specifically, at high code rates, for a typical LDPC code structure, the decoder needs to process one row of the basic matrix before starting the next stage of the pipeline. If the first stage of the pipeline is particularly long, it will significantly reduce the decoder's efficiency.

[0078] In the 3GPP standard, the 5G New Radio (NR) project for the 5G mobile communication standard was officially launched. This new radio needs to support ultra-high throughput and low processing latency, so a new coding scheme is needed to replace the current turbo coding scheme. However, the current communication standard's LDPC code cannot support incremental redundancy HARQ well, and does not have sufficient flexibility in code rate and transport block size. Therefore, a new LDPC coding structure needs to be designed to support incremental redundancy HARQ while maintaining performance and flexibility close to turbo codes, and also needs to have much lower complexity and ultra-high-speed processing capabilities than turbo codes. Summary of the Invention

[0079] This invention provides a method and apparatus for encoding and decoding a structured low-density parity-check code (LDPC), which at least solves the problems of existing LDPC encoders and decoders in related technologies that cannot support incremental redundancy HARQ and lack flexibility.

[0080] According to an embodiment of the present invention, an LDPC encoding method is provided, comprising: determining a fundamental matrix Hb for encoding, wherein the fundamental matrix Hb includes a block A of Mb×Kb corresponding to system bits and a block B of Mb×Mb corresponding to parity bits, i.e., Hb=[A,B], where hb ij The elements in the i-th row and j-th column of the base matrix Hb are represented, where i is the row index and j is the column index of the base matrix, Kb = Nb - Mb, Kb is an integer greater than or equal to 4, Nb is an integer, i = 1, ..., Mb, j = 1, ..., Nb; the base matrix Hb includes one or more submatrices, the submatrices include: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2; based on the base matrix and the expansion factor Z corresponding to the base matrix Hb, the source information bit sequence is subjected to LDPC encoding operation to obtain a codeword sequence, where Z is a positive integer greater than or equal to 1.

[0081] According to an embodiment of the present invention, an LDPC decoding method is provided, comprising:

[0082] The fundamental matrix Hb used for decoding is determined, wherein the fundamental matrix Hb includes block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ij The elements in the i-th row and j-th column of the base matrix Hb are represented, where i is the row index and j is the column index of the base matrix, Kb = Nb - Mb, where Kb is an integer greater than or equal to 4, Nb is an integer, i = 1, ..., Mb, j = 1, ..., Nb; the base matrix Hb includes one or more submatrices, the submatrices include: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2;

[0083] Based on the fundamental matrix and the expansion factor Z corresponding to the fundamental matrix Hb, a codeword with a preset number of bits is decoded to obtain the source information bit sequence, where Z is a positive integer greater than or equal to 1.

[0084] According to another embodiment of the present invention, an encoding device for LDPC is provided, comprising:

[0085] The determination module is used to determine the fundamental matrix Hb used for encoding, wherein the fundamental matrix Hb includes block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ij The elements in the i-th row and j-th column of the basic matrix Hb are represented, where i is the row index of the basic matrix and j is the column index of the basic matrix. Kb = Nb - Mb, where Kb is an integer greater than or equal to 4, Nb is an integer, and i = 1, ..., Mb, j = 1, ..., Nb.

[0086] The base matrix Hb includes one or more submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2;

[0087] The encoding module is used to perform LDPC encoding operation on the source information bit sequence according to the basic matrix and the expansion factor Z corresponding to the basic matrix Hb to obtain the codeword sequence, where Z is a positive integer greater than or equal to 1.

[0088] According to another embodiment of the present invention, an LDPC decoding apparatus is provided, comprising: a determining module, configured to determine a fundamental matrix Hb used for decoding, wherein the fundamental matrix Hb includes a block A of Mb×Kb corresponding to system bits and a block B of Mb×Mb corresponding to parity bits, i.e., Hb=[A,B], where hb ij The elements in the i-th row and j-th column of the base matrix Hb are represented, where i is the row index and j is the column index of the base matrix, Kb = Nb - Mb, where Kb is an integer greater than or equal to 4, Nb is an integer, i = 1, ..., Mb, j = 1, ..., Nb; the base matrix Hb includes one or more submatrices, the submatrices include: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2;

[0089] The decoding module is used to perform decoding operations on codewords with a preset number of bits based on the fundamental matrix and the expansion factor Z corresponding to the fundamental matrix Hb, to obtain the source information bit sequence, where Z is a positive integer greater than or equal to 1.

[0090] According to yet another embodiment of the present invention, a storage medium is also provided. The storage medium is configured to store program code for performing the following steps:

[0091] The fundamental matrix Hb used for encoding is determined, wherein the fundamental matrix Hb includes block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ij The elements in the i-th row and j-th column of the base matrix Hb are represented, where i is the row index and j is the column index of the base matrix, Kb = Nb - Mb, Kb is an integer greater than or equal to 4, Nb is an integer, i = 1, ..., Mb, j = 1, ..., Nb; the base matrix Hb includes one or more submatrices, the submatrices include: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2; based on the base matrix and the expansion factor Z corresponding to the base matrix Hb, the source information bit sequence is subjected to LDPC encoding operation to obtain a codeword sequence, where Z is a positive integer greater than or equal to 1.

[0092] According to another embodiment of the present invention, a storage medium is also provided. The storage medium is configured to store program code for performing the following steps:

[0093] The fundamental matrix Hb used for decoding is determined, wherein the fundamental matrix Hb includes block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ij The elements in the i-th row and j-th column of the base matrix Hb are represented, where i is the row index and j is the column index of the base matrix, Kb = Nb - Mb, where Kb is an integer greater than or equal to 4, Nb is an integer, i = 1, ..., Mb, j = 1, ..., Nb; the base matrix Hb includes one or more submatrices, the submatrices include: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2;

[0094] Based on the fundamental matrix and the expansion factor Z corresponding to the fundamental matrix Hb, a codeword with a preset number of bits is decoded to obtain the source information bit sequence, where Z is a positive integer greater than or equal to 1.

[0095] The solution provided by this invention, by designing a suitable base matrix and performing encoding or decoding based on the base matrix and its corresponding expansion factor, achieves ultra-high-speed LDPC encoding and decoding, and achieves encoding and decoding performance close to turbo code. It solves the problems of existing LDPC encoders and decoders being unable to support incremental redundancy HARQ and lacking flexibility. Attached Figure Description

[0096] The accompanying drawings, which are included to provide a further understanding of the invention and form part of this application, illustrate exemplary embodiments of the invention and, together with their description, serve to explain the invention and do not constitute an undue limitation thereof. In the drawings:

[0097] Figure 1 This is a block diagram of the structure of a digital communication system in related technologies;

[0098] Figure 2 This is a schematic diagram of the encoder for the structured LDPC code provided in Embodiment 1 of the present invention;

[0099] Figure 3 This is a schematic diagram of the basic matrix used in Embodiment 1 of the present invention;

[0100] Figure 4 This is a schematic diagram of the structure of a decoder for a structured LDPC code provided in Embodiment 2 of the present invention;

[0101] Figure 5A flowchart illustrating an encoding method for structured LDPC codes provided in Embodiment 3 of the present invention;

[0102] Figure 6 A flowchart of a decoding method for structured LDPC codes provided in Embodiment 4 of the present invention;

[0103] Figure 7 A schematic diagram of the structure of an encoding device for a structured LDPC code provided in Embodiment 5 of the present invention;

[0104] Figure 8 A schematic diagram of a structured LDPC code decoding device provided in Embodiment 5 of the present invention;

[0105] Figure 9 A schematic diagram of a memory storage method provided in Embodiment 8 of the present invention. Figure 1 ;

[0106] Figure 10 A schematic diagram of a memory storage method provided in Embodiment 8 of the present invention. Figure 2 . Detailed Implementation

[0107] The present invention will be described in detail below with reference to the accompanying drawings and embodiments. It should be noted that, unless otherwise specified, the embodiments and features described in the present application can be combined with each other.

[0108] It should be noted that the terms "first," "second," etc., in the specification, claims, and drawings of this invention are used to distinguish similar objects and are not necessarily used to describe a specific order or sequence.

[0109] Traditional structured LDPC codes often cannot support incremental redundancy HARQ schemes, or provide ultra-high throughput, or achieve performance close to turbo codes, or lack flexibility. However, the number of possible structures and composition methods of the fundamental matrix is ​​extremely large, and current technologies do not yet offer a comprehensive and feasible solution, nor can they obtain a fundamental matrix that meets such requirements.

[0110] To address the aforementioned problems, embodiments of the present invention provide an encoding and decoding method and apparatus for structured LDPC codes, as well as an encoder and decoder. From a practical standpoint, embodiments of the present invention use the same fundamental matrix for multiple code rates and code lengths, typically generated corresponding to the maximum code length. This fundamental matrix is ​​modified for different code lengths. By defining the Girth feature of the fundamental matrix for different code lengths, embodiments of the present invention ensure turbo code performance under various code length conditions. However, the present invention is not limited to this and can also be applied to a method using a separate fundamental matrix for each code length.

[0111] It should be noted that the solutions provided in the embodiments of this application are not limited to the matrix structure in the embodiments of this application. For example, the positions of the matrix corresponding to the system bits and the matrix corresponding to the parity bits can be interchanged. All encoding and decoding schemes based on the design ideas in the embodiments of this application fall within the protection scope of this application.

[0112] Example 1

[0113] This invention provides an encoding device for Structured Low-Density Parity-Check (LDPC) codes in digital communication, the structure of which is as follows: Figure 2 As shown, it includes at least a processor 202 and a memory 201.

[0114] The memory 201 is used to store at least the basic matrix used for encoding.

[0115] The fundamental matrix comprises block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ij Let Kb represent the element in the i-th row and j-th column of the fundamental matrix, where i is the row index and j is the column index, and Kb = Nb - Mb, where Nb is an integer and Kb is an integer greater than or equal to 4. i = 1, ..., Mb, j = 1, ..., Nb.

[0116] The base matrix Hb includes one or more submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2.

[0117] Optionally, the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb forms the upper-left submatrix Hb1. The number of elements in the corresponding non-zero Z*Z matrix of each row of the upper-left submatrix Hb1 is less than or equal to Kb+2 and greater than or equal to Kb-2. The last four columns of the upper-left submatrix Hb1 form a lower-left triangular matrix or a quasi-lower-left triangular matrix; and / or

[0118] The upper left sub - matrix Hb2 is formed by the intersection of the first Kb rows and the first 2*Kb columns of the matrix Hb. All elements of the sub - matrix formed by the intersection of the first 4 rows and the last Kb - 4 columns of the upper left sub - matrix Hb2 are elements of the corresponding Z*Z zero square matrix. The sub - matrix formed by the intersection of the last Kb - 4 rows and the last Kb - 4 columns of the upper left sub - matrix Hb2 is a lower left triangular matrix or a quasi - lower left triangular matrix of size (Kb - 4)*(Kb - 4). All elements of the sub - matrix formed by the intersection of the last Kb - 4 rows and the columns from Kb + 1 to Kb + 3 of the upper left sub - matrix Hb2 are elements of the corresponding zero Z*Z square matrix;

[0119] If the square matrix of the last four columns of the upper left sub - matrix Hb1 is a lower triangular matrix, there is only one element corresponding to a non - zero Z*Z square matrix in the Kb + 1 - th column of the upper left sub - matrix Hb2. If the square matrix of the last four columns of the upper left sub - matrix Hb1 is a quasi - lower triangular matrix, all elements of the Kb + 1 - th column of the upper left sub - matrix Hb2 are elements corresponding to the zero Z*Z square matrix;

[0120] The intersection of the last Kb - 4 rows and the first Kb columns of the upper left sub - matrix Hb2 forms a sub - matrix, in which the number of elements corresponding to non - zero Z*Z square matrices in each row is less than or equal to Kb - 2;

[0121] Where Nb is greater than or equal to 2*Kb.

[0122] 2) The expansion factor Z supports a set of definite value sets {z1, z2, z3…, zV}, where z1, z2,…, zV are arranged in ascending order, zr, zs, zt, zu are the expansion factors of four definite values in the set and satisfy z1≤zr≤zs≤zt≤zu≤zV, where V, r, s, t, u are subscripts, 1≤r≤s≤t≤u≤V, and V is an integer greater than or equal to 2;

[0123] When z1≤Z = zi<zr, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, in each LDPC codeword, the girth of at least one bit among all codeword bits with weight greater than 2 is equal to 4. For the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb with the heaviest R columns deleted, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6, where R is less than or equal to Kb / 2;

[0124] When zr≤Z = zi<zs, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6;

[0125] When \(z_s\leq Z = z_i<z_t\), for the LDPC code corresponding to the expansion factor \(Z = z_i\) and the base matrix \(H_b\), the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 6, and the girth of at least one parity bit with weight greater than 2 in each LDPC codeword is greater than or equal to 8;

[0126] When \(z_t\leq Z = z_i<z_u\), for the LDPC code corresponding to the expansion factor \(Z = z_i\) and the base matrix \(H_b\), the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 8;

[0127] When \(z_u\leq Z = z_i<z_V\), for the LDPC code corresponding to the expansion factor \(Z = z_i\) and the base matrix \(H_b\), the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 8, and the girth of at least one parity bit with weight greater than 2 in each LDPC codeword is greater than or equal to 10;

[0128] Wherein, each codeword bit of an LDPC codeword corresponds to each column of the parity check matrix, and the weight of each codeword bit refers to the number of non-zero elements in the corresponding column, and \(i = 1, 2, \cdots, V\).

[0129] Wherein, each codeword bit of an LDPC codeword corresponds to each column of the parity check matrix,

[0130] The weight of each codeword bit refers to the number of non-zero elements in the corresponding column, where \(i = 1, 2, \cdots, V\).

[0131] According to the base matrix and its corresponding expansion factor \(Z\), perform LDPC encoding operation on the source information bit sequence of \((N_b - M_b)*Z\) bits to obtain a codeword sequence of \(N_b*Z\) bits, where \(Z\) is the expansion factor and \(Z\) is a positive integer greater than or equal to 1.

[0132] Optionally, the above base matrix \(H_b\) may further include:

[0133] The upper left submatrix \(H_{b3}\) is formed by the intersection of the first \(2*K_b\) rows and the first \(3*K_b\) columns of the base matrix \(H_b\). The intersection of the last \(K_b\) rows and the last \(K_b\) columns of \(H_{b3}\) forms a submatrix that is an identity matrix or a cyclic shift matrix of the identity matrix with a size of \(K_b*K_b\);

[0134] All elements of the submatrix formed by the intersection of the first \(K_b\) rows and the last \(K_b\) columns of \(H_{b3}\) are elements of the corresponding \(Z*Z\) zero square matrix;

[0135] The Kb+1th column to the 2*Kbth column of Hb3 forms a submatrix. In the L1th column of this submatrix, each column has only one element in the corresponding non-zero square matrix. All elements (entries) in the remaining Kb-L1th columns of this submatrix are elements in the corresponding Z*Z zero square matrix, where L1 is an integer greater than or equal to 0 and less than Kb.

[0136] Where Nb is greater than or equal to 3*Kb.

[0137] Optionally, Nb is a definite positive integer ranging from 2*Kb to 12*Kb.

[0138] Optionally, Kb takes the value of an integer between 2 and 16.

[0139] Optionally, different Kb values ​​are used for Enhanced Mobile Broadband (eMMB) scenarios and Ultra-Reliable and Low Latency Communication (URLLC) scenarios.

[0140] Optionally, the number of elements in the non-zero Z*Z matrix corresponding to the g-th row of the fundamental matrix Hb is less than or equal to the number of elements in the non-zero Z*Z matrix corresponding to the g+1-th row. Where g = 1, 2, ..., Mb-1.

[0141] Optionally, the j-th column of the basic matrix Hb has Lj elements corresponding to all non-zero square matrices, with the first element from top to bottom being 0, and Lj being a positive integer greater than or equal to 1, where j = 1, ..., Nb.

[0142] It should be noted that this invention is not limited to this method; the last element can also be 0, or any element can be 0. All these methods ensure that, if layered decoding is used, a cyclic shift inverse network can be avoided, significantly reducing routing overhead and achieving beneficial results.

[0143] The processor 202 is used to determine the basic matrix and the expansion factor z, and to perform LDPC encoding operation to obtain Nb*z bit codewords from (Nb-Mb)*z bit source data.

[0144] Below is a more concrete example, where the fundamental matrix Hb meets the above requirements, such as... Figure 3 As shown.

[0145] for Figure 3 The base matrix Hb is shown, which corresponds to a code rate of 1 / 3. Matrices Mb = 16 and Nb = 24. Hb1 is a 4x12 matrix, Hb2 is an 8x16 matrix, and Hb3 is a 16x24 matrix. This base matrix corresponds to an expansion factor z = 336. Figure 3 The matrix example simultaneously satisfies the characteristics of Hb1, Hb2, and Hb3. When the Hb1 characteristic is satisfied, the 2 / 3 rate LDPC code has near-turbo code performance. This matrix has only 4 rows, thus meeting the requirements for ultra-high-speed processing. When the Hb2 characteristic is satisfied, it ensures that the LDPC has an optimal frequency distribution. Furthermore, by satisfying the specific girth requirement of TBS = 336*8, the 1 / 2 rate LDPC code achieves near-turbo code performance. This matrix has only 8 rows, thus meeting the requirements for ultra-high-speed processing. Additionally, Hb1 is the top-left submatrix of Hb2, belonging to a nested structure, thus supporting incrementally redundant HARQ. Optionally, satisfying the characteristics of Hb3 ensures that LDPC has an optimal frequency distribution. At the same time, satisfying the specific girth requirement of TBS = 336*8 allows the 1 / 3 code rate LDPC code to have performance close to that of a turbo code. The matrix has only 16 rows, so it meets the needs of ultra-high-speed processing. In addition, Hb1 and Hb2 are the upper left submatrices of Hb, which belong to a nested structure, so they can support incremental redundancy HARQ.

[0146] The intersection of the first 4 rows and the first Kb+4=8 columns of the matrix Hb forms the upper left submatrix Hb1. The number of elements in the corresponding non-zero Z*Z matrix of each row of the upper left submatrix Hb1 is 9, 10, 10 and 10 respectively. These values ​​are all less than or equal to Kb+2=10 and greater than or equal to Kb-2=8. The last four columns of the upper left submatrix Hb1 form a lower left triangular matrix or a quasi-lower left triangular matrix.

[0147] In the matrices given above, part A is the system bit part matrix, and part B is the parity bit part matrix. In these matrices, an element value of -1 corresponds to an all-zero square matrix, and a non-zero square matrix corresponds to the matrix obtained by cyclically shifting the corresponding value. Furthermore, the first element corresponding to the non-zero square matrix in all columns of the fundamental matrix Hb is 0. In this case, the cyclic shift network only needs to perform the cyclic shift difference. Therefore, the LDPC layered decoder with the matrix structure of this invention does not require a cyclic shift inverse network, halving the routing distance compared to traditional schemes.

[0148] Optionally, the encoder may also have the following features: it further includes an extension module for extending the base matrix according to the extension factor and the basic permutation matrix to obtain a parity check matrix of a (M×z)×(N×z) low-density parity check code, and the decoding module performs encoding operations based on the parity check matrix obtained by extending the base matrix.

[0149] This invention employs a proposed fundamental matrix structure to perform LDPC encoding on information bits, generating LDPC codewords. These LDPC codewords are then modulated and transmitted to the channel. The receiving end demodulates the received signal to generate the received LDPC codewords, which are then sent to an LDPC decoder. This LDPC codeword approach improves the pipeline speed of decoding, thus increasing the decoder's processing speed. This effectively enhances the efficiency of LDPC codes and accelerates decoding. Furthermore, the proposed fundamental matrix structure, by allowing the elimination of the inverse cyclic shift network (for write-back storage), reduces the need for a switching network, further decreasing hardware complexity.

[0150] Example 2

[0151] This invention provides a decoding device for Structured Low-Density Parity-Check (LDPC) codes in digital communication, the structure of which is as follows: Figure 4 As shown, it includes at least a processor 402 and a memory 401.

[0152] The memory 401 is used to store at least the fundamental matrix used for encoding. The fundamental parity-check matrix includes the following characteristics:

[0153] The fundamental matrix comprises block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ij Let Kb represent the element in the i-th row and j-th column of the fundamental matrix, where i is the row index and j is the column index, and Kb = Nb - Mb, where Kb is an integer greater than or equal to 4 and Nb is an integer. i = 1, ..., Mb, j = 1, ..., Nb.

[0154] The base matrix Hb includes one or more submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2.

[0155] Optionally, the top-left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z*Z matrix of each row of the top-left submatrix Hb1 is less than or equal to Kb+2 and greater than or equal to Kb-2. The last four columns of the top-left submatrix Hb1 are a lower-left triangular matrix or a quasi-lower-left triangular matrix; and / or

[0156] The upper left sub-matrix Hb2 is formed by the intersection of the first Kb rows and the first 2*Kb columns of the matrix Hb. All elements of the sub-matrix formed by the intersection of the first 4 rows and the last Kb-4 columns of the upper left sub-matrix Hb2 are elements of the corresponding Z*Z zero square matrix. The sub-matrix formed by the intersection of the last Kb-4 rows and the last Kb-4 columns of the upper left sub-matrix Hb2 is a lower left triangular matrix or a quasi-lower left triangular matrix of size (Kb-4)*(Kb-4). All elements of the sub-matrix formed by the intersection of the last Kb-4 rows and the Kb+1 to Kb+3 columns of the upper left sub-matrix Hb2 are elements of the corresponding zero Z*Z square matrix;

[0157] If the square matrix of the last four columns of the upper left sub-matrix Hb1 is a lower triangular matrix, there is only one element corresponding to the non-zero Z*Z square matrix in the Kb+1 column of the upper left sub-matrix Hb2. If the square matrix of the last four columns of the upper left sub-matrix Hb1 is a quasi-lower triangular matrix, all elements of the Kb+1 column of the upper left sub-matrix Hb2 are elements corresponding to the zero Z*Z square matrix;

[0158] The intersection of the last Kb-4 rows and the first Kb columns of the upper left sub-matrix Hb2 forms a sub-matrix, and the number of elements corresponding to the non-zero Z*Z square matrix in each row of this sub-matrix is less than or equal to Kb-2;

[0159] Among them, Nb is greater than or equal to 2*Kb.

[0160] 2) The expansion factor Z supports a set of determined value sets {z1, z2, z3..., zV}, where z1, z2,..., zV are arranged in ascending order, zr, zs, zt, zu are the expansion factors of four determined values in the set and satisfy z1≤zr≤zs≤zt≤zu≤zV, where V, r, s, t, u are subscripts, 1≤r≤s≤t≤u≤V, and V is an integer greater than or equal to 2;

[0161] When z1≤Z = zi<zr, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of at least one bit among all codeword bits with weight greater than 2 in each LDPC codeword is equal to 4; for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb with the heaviest R columns deleted, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6, where R is less than or equal to Kb / 2;

[0162] When zr≤Z = zi<zs, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6;

[0163] When \(z_s\leq Z = z_i<z_t\), for the LDPC code corresponding to the expansion factor \(Z = z_i\) and the base matrix \(H_b\), the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 6, and the girth of at least one parity-check bit with weight greater than 2 in each LDPC codeword is greater than or equal to 8;

[0164] When \(z_t\leq Z = z_i<z_u\), for the LDPC code corresponding to the expansion factor \(Z = z_i\) and the base matrix \(H_b\), the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 8;

[0165] When \(z_u\leq Z = z_i<z_V\), for the LDPC code corresponding to the expansion factor \(Z = z_i\) and the base matrix \(H_b\), the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 8, and the girth of at least one parity-check bit with weight greater than 2 in each LDPC codeword is greater than or equal to 10;

[0166] Wherein, each codeword bit of an LDPC codeword corresponds to each column of the parity-check matrix, and the weight of each codeword bit refers to the number of non-zero elements in the corresponding column, and \(i = 1,2,\cdots,V\).

[0167] Wherein, each codeword bit of an LDPC codeword corresponds to each column of the parity-check matrix, and the weight of each codeword bit refers to the number of non-zero elements in the corresponding column. Here, \(i = 1,2,\cdots,V\).

[0168] According to the base matrix and its corresponding expansion factor \(Z\), perform LDPC encoding operation on the source information bit sequence of \((N_b - M_b)*Z\) bits to obtain a codeword sequence of \(N_b*Z\) bits, where \(Z\) is the expansion factor and \(Z\) is a positive integer greater than or equal to 1.

[0169] Optionally, the base matrix \(H_b\) further includes: an upper left sub-matrix \(H_{b3}\).

[0170] Optionally, the upper left sub-matrix \(H_{b3}\) is formed by the intersection of the first \(2*K_b\) rows and the first \(3*K_b\) columns of the base matrix \(H_b\). The intersection of the last \(K_b\) rows and the last \(K_b\) columns of \(H_{b3}\) forms a sub-matrix that is an identity matrix or a cyclic shift matrix of the identity matrix with a size of \(K_b*K_b\);

[0171] All elements of the sub-matrix formed by the intersection of the first \(K_b\) rows and the last \(K_b\) columns of \(H_{b3}\) are elements of the corresponding \(Z*Z\) zero square matrix;

[0172] The Kb+1th column to the 2*Kbth column of Hb3 forms a submatrix. In the L1th column of this submatrix, each column has only one element in the corresponding non-zero square matrix. All elements (entries) in the remaining Kb-L1th columns of this submatrix are elements in the corresponding Z*Z zero square matrix, where L1 is an integer greater than or equal to 0 and less than Kb.

[0173] Where Nb is greater than or equal to 3*Kb.

[0174] Optionally, Nb is a definite positive integer ranging from 2*Kb to 12*Kb.

[0175] Optionally, Kb takes the value of an integer between 2 and 16.

[0176] Furthermore, eMMB and URLLC scenarios use different Kb values.

[0177] Optionally, the number of elements in the non-zero Z*Z matrix corresponding to the g-th row of the fundamental matrix Hb is less than or equal to the number of elements in the non-zero Z*Z matrix corresponding to the g+1-th row. Where g = 1, 2, ..., Mb-1.

[0178] Optionally, the j-th column of the basic matrix Hb has Lj elements corresponding to all non-zero square matrices, with the first element from top to bottom being 0, and Lj being a positive integer greater than or equal to 1, where j = 1, ..., Nb.

[0179] The j-th column of the fundamental matrix Hb has Lj elements corresponding to all non-zero square matrices. The first element from top to bottom is 0, and Lj is a positive integer greater than or equal to 1, where j = 0, 1, ..., Nb-1.

[0180] The processor 402 is used to perform LDPC decoding operations to obtain (Nb-Mb)*z bits of information data from an Nb*z bit codeword based on the fundamental matrix and the expansion factor z.

[0181] Below is a more concrete example, where the fundamental matrix Hb meets the above requirements, such as... Figure 3 As shown.

[0182] for Figure 3 The base matrix Hb is shown, which corresponds to a code rate of 1 / 3. Matrices Mb = 16 and Nb = 24. Hb1 is a 4x12 matrix, Hb2 is an 8x16 matrix, and Hb3 is a 16x24 matrix. This base matrix corresponds to an expansion factor z = 336. Figure 3The matrix example simultaneously satisfies the characteristics of Hb1, Hb2, and Hb3. When the Hb1 characteristic is satisfied, the 2 / 3 rate LDPC code has near-turbo code performance. This matrix has only 4 rows, thus meeting the requirements for ultra-high-speed processing. When the Hb2 characteristic is satisfied, it ensures that the LDPC has an optimal frequency distribution. Furthermore, by satisfying the specific girth requirement of TBS = 336*8, the 1 / 2 rate LDPC code achieves near-turbo code performance. This matrix has only 8 rows, thus meeting the requirements for ultra-high-speed processing. Additionally, Hb1 is the top-left submatrix of Hb2, belonging to a nested structure, thus supporting incrementally redundant HARQ. Optionally, satisfying the characteristics of Hb3 ensures that LDPC has an optimal frequency distribution. At the same time, satisfying the specific girth requirement of TBS = 336*8 allows the 1 / 3 code rate LDPC code to have performance close to that of a turbo code. The matrix has only 16 rows, so it meets the needs of ultra-high-speed processing. In addition, Hb1 and Hb2 are the upper left submatrices of Hb, which belong to a nested structure, so they can support incremental redundancy HARQ.

[0183] Therefore, the structure of this invention can support very high or relatively flexible parallelism, meeting the requirements for ultra-high-speed decoding, thereby achieving Gbps decoding speeds. This embodiment uses the proposed fundamental matrix structure to perform LDPC decoding on information bits, with the LDPC decoder receiving the LDPC codewords. Because the number of rows in the fundamental matrix is ​​very small, the LDPC decoder can ensure an improved pipeline speed, i.e., an increased decoder processing speed. This effectively improves the efficiency of LDPC codes and accelerates the decoding speed. Furthermore, the fundamental matrix structure proposed in this invention allows for the elimination of the inverse cyclic shift network (for write-back storage), thus reducing the switching network and further reducing hardware complexity.

[0184] Example 3

[0185] This invention provides an encoding method for structured LDPC codes. The process of using this method to complete LDPC encoding is as follows: Figure 5 As shown, it includes:

[0186] Step 501: Determine the underlying matrix Hb used for encoding;

[0187] Optionally, the underlying parity check matrix includes the following features:

[0188] The fundamental matrix comprises block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ijLet Kb represent the element in the i-th row and j-th column of the fundamental matrix, where i is the row index and j is the column index, and Kb = Nb - Mb, where Kb is an integer greater than or equal to 4 and Nb is an integer. i = 1, ..., Mb, j = 1, ..., Nb.

[0189] Optionally, the base matrix Hb further includes at least the following characteristics: the base matrix Hb comprises one or more submatrices, the submatrices including: a top-left submatrix Hb1 and a top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2. Optionally, the above characteristics can be implemented in the following ways, but are not limited to:

[0190] The top-left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z*Z matrix of each row of the top-left submatrix Hb1 is less than or equal to Kb+2 and greater than or equal to Kb-2. The last four columns of the top-left submatrix Hb1 are a lower-left triangular matrix or a quasi-lower-left triangular matrix; and / or

[0191] The top-left submatrix Hb2 is formed by the intersection of the first Kb rows and the first 2*Kb columns of the matrix Hb. All elements of the submatrix formed by the intersection of the first 4 rows and the last Kb-4 columns of the top-left submatrix Hb2 are elements of the corresponding Z*Z zero matrix. The submatrix formed by the intersection of the last Kb-4 rows and the last Kb-4 columns of the top-left submatrix Hb2 is a lower-left triangular matrix or a quasi-lower-left triangular matrix of size (Kb-4)*(Kb-4). All elements of the submatrix formed by the intersection of the last Kb-4 rows and the Kb+1 to Kb+3 columns of the top-left submatrix Hb2 are elements of the corresponding zero Z*Z matrix.

[0192] If the last four columns of the top-left submatrix Hb1 are a lower triangular matrix, then the Kb+1th column of the top-left submatrix Hb2 has only one element corresponding to a non-zero Z*Z matrix. If the last four columns of the top-left submatrix Hb1 are a quasi-lower triangular matrix, then all elements in the Kb+1th column of the top-left submatrix Hb2 are elements corresponding to a zero Z*Z matrix.

[0193] The intersection of the last Kb-4 rows and the first Kb columns of the upper left submatrix Hb2 forms a submatrix, in which the number of elements of the corresponding non-zero Z*Z square matrix in each row is less than or equal to Kb-2.

[0194] Where Nb is greater than or equal to 2*Kb.

[0195] 2) The expansion factor Z supports a set of determined values {z1, z2, z3…, zV}, where z1, z2,…, zV are arranged in ascending order, zr, zs, zt, zu are the expansion factors of four determined values in the set and satisfy z1 ≤ zr ≤ zs ≤ zt ≤ zu ≤ zV, where V, r, s, t, u are subscripts, 1 ≤ r ≤ s ≤ t ≤ u ≤ V, and V is an integer greater than or equal to 2;

[0196] When z1 ≤ Z = zi < zr, for the LDPC code with the corresponding expansion factor Z = zi and the base matrix Hb, in each LDPC codeword, the girth of at least one bit among all codeword bits with weight greater than 2 is equal to 4; for the LDPC code with the corresponding expansion factor Z = zi and the base matrix Hb after deleting the heaviest R columns, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6, where R is less than or equal to Kb / 2;

[0197] When zr ≤ Z = zi < zs, for the LDPC code with the corresponding expansion factor Z = zi and the base matrix Hb, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6;

[0198] When zs ≤ Z = zi < zt, for the LDPC code with the corresponding expansion factor Z = zi and the base matrix Hb, the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 6, and the girth of at least one parity-check bit with weight greater than 2 in each LDPC codeword is greater than or equal to 8;

[0199] When zt ≤ Z = zi < zu, for the LDPC code with the corresponding expansion factor Z = zi and the base matrix Hb, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 8;

[0200] When zu ≤ Z = zi < zV, for the LDPC code with the corresponding expansion factor Z = zi and the base matrix Hb, the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 8, and the girth of at least one parity-check bit with weight greater than 2 in each LDPC codeword is greater than or equal to 10;

[0201] Wherein, each codeword bit of an LDPC codeword corresponds to each column of the parity-check matrix, and the weight of each codeword bit refers to the number of non-zero elements in the corresponding column, and i = 1, 2,…, V.

[0202] Based on the base matrix and its corresponding expansion factor Z, perform LDPC encoding operation on the source information bit sequence of (Nb - Mb)×Z bits to obtain a codeword sequence of Nb×Z bits, where Z is the expansion factor and Z is a positive integer greater than or equal to 1.

[0203] For 2), there is a more specific example as follows:

[0204] The base matrix Hb of a 1 / 3 rate structured LDPC code is defined as follows:

[0205]

[0206] The expansion factor of this LDPC code supports a set of determined values {z1, z2, z3…, zV} = {13, 50, 125, 250, 500, 750, 1000}, where V = 7 and Zmax = 1000. The base matrix Hb(zi) corresponding to each expansion factor is obtained by the scale + floor algorithm in the background art.

[0207] Here, r = 2. When z1 = 13 ≤ Z = zi < z2 = 50, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, among all the codeword bits with weight greater than 2 in each LDPC codeword, the girth of 13×5 = 65 bits is equal to 4; for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb after deleting the heaviest R = 8 columns, the girth of all the codeword bits with weight greater than 2 in each LDPC codeword is equal to 6, where R is less than or equal to Kb / 2.

[0208] Here, s = 3. When z2 ≤ Z = zi < z3, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of all the codeword bits with weight greater than 2 in each LDPC codeword is equal to 6.

[0209] Here, t = 4. When zs ≤ Z = zi < zt, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of all the systematic bits with weight greater than 2 in each LDPC codeword is equal to 6, and the girth of 125 check bits with weight greater than 2 in each LDPC codeword is greater than or equal to 8.

[0210] Here, u = 7. When zt ≤ Z = zi < zu, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of all the codeword bits with weight greater than 2 in each LDPC codeword is equal to 8.

[0211] Here, u = 7, V = 7, and zu ≤ Z = zi < zV is empty, indicating that this situation does not exist.

[0212] Furthermore, the basic matrix also has the following characteristics: the upper left submatrix Hb3 is formed by the intersection of the first 2*Kb rows and the first 3*Kb columns of the basic matrix Hb, and the intersection of the last Kb rows and the last Kb columns of Hb3 forms a submatrix that is an identity matrix of size Kb*Kb or a cyclic shift matrix of the identity matrix.

[0213] All elements of the submatrix formed by the intersection of the first Kb rows and the last Kb columns of Hb3 are elements of the corresponding Z*Z zero matrix;

[0214] The Kb+1th column to the 2*Kbth column of Hb3 forms a submatrix. In the L1th column of this submatrix, each column has only one element in the corresponding non-zero square matrix. All elements (entries) in the remaining Kb-L1th columns of this submatrix are elements in the corresponding Z*Z zero square matrix, where L1 is an integer greater than or equal to 0 and less than Kb.

[0215] Where Nb is greater than or equal to 3*Kb.

[0216] Optionally, Nb is a definite positive integer ranging from 2*Kb to 12*Kb.

[0217] Optionally, Kb takes the value of an integer between 2 and 16.

[0218] Furthermore, eMMB and URLLC scenarios use different Kb values.

[0219] Optionally, the number of elements in the non-zero Z*Z matrix corresponding to the g-th row of the fundamental matrix Hb is less than or equal to the number of elements in the non-zero Z*Z matrix corresponding to the g+1-th row. Where g = 1, 2, ..., Mb-1.

[0220] Optionally, the j-th column of the basic matrix Hb has Lj elements corresponding to all non-zero square matrices, with the first element from top to bottom being 0, and Lj being a positive integer greater than or equal to 1, where j = 1, ..., Nb.

[0221] The j-th column of the fundamental matrix Hb has Lj elements corresponding to all non-zero square matrices. The first element from top to bottom is 0, and Lj is a positive integer greater than or equal to 1, where j = 0, 1, ..., Nb-1.

[0222] Step 502: Based on the fundamental matrix and its corresponding expansion factor, complete the LDPC encoding operation to obtain Nb×z bit codewords from (Nb-Mb)×z bit source data;

[0223] Where z is the expansion factor, and z is a positive integer greater than or equal to 1.

[0224] Example 4

[0225] This invention provides a decoding method for structured LDPC codes. The process of using this method to complete LPDC encoding is as follows: Figure 6 As shown, it includes:

[0226] Step 601: Determine the fundamental matrix used for decoding;

[0227] The base matrix Hb includes one or more submatrices, including: top-left submatrix Hb1 and top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2;

[0228] That is, the fundamental matrix includes the following characteristics:

[0229] Based on the fundamental matrix and the expansion factor Z corresponding to the fundamental matrix Hb, a codeword with a preset number of bits is decoded to obtain the source information bit sequence, where Z is a positive integer greater than or equal to 1. The fundamental matrix includes block A of Mb×Kb corresponding to system bits and block B of Mb×Mb corresponding to parity bits, i.e., Hb=[A,B], where hb ij Let Kb represent the element in the i-th row and j-th column of the fundamental matrix, where i is the row index and j is the column index, and Kb = Nb - Mb, where Kb is an integer greater than or equal to 4. Nb is an integer, i = 1, ..., Mb, j = 1, ..., Nb.

[0230] The fundamental matrix Hb shall include at least one of the following features:

[0231] The top-left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z*Z matrix of each row of the top-left submatrix Hb1 is less than or equal to Kb+2 and greater than or equal to Kb-2. The last four columns of the top-left submatrix Hb1 are a lower-left triangular matrix or a quasi-lower-left triangular matrix; and / or

[0232] The upper left sub - matrix Hb2 is formed by the intersection of the first Kb rows and the first 2*Kb columns of the matrix Hb. All elements of the sub - matrix formed by the intersection of the first 4 rows and the last Kb - 4 columns of the upper left sub - matrix Hb2 are elements of the corresponding Z*Z zero square matrix. The sub - matrix formed by the intersection of the last Kb - 4 rows and the last Kb - 4 columns of the upper left sub - matrix Hb2 is a lower left triangular matrix or a quasi - lower left triangular matrix of size (Kb - 4)*(Kb - 4). All elements of the sub - matrix formed by the intersection of the last Kb - 4 rows and the (Kb + 1) - th to (Kb + 3) - th columns of the upper left sub - matrix Hb2 are elements of the corresponding zero Z*Z square matrix;

[0233] If the square matrix of the last four columns of the upper left sub - matrix Hb1 is a lower triangular matrix, there is only one element corresponding to the non - zero Z*Z square matrix in the (Kb + 1) - th column of the upper left sub - matrix Hb2. If the square matrix of the last four columns of the upper left sub - matrix Hb1 is a quasi - lower triangular matrix, all elements of the (Kb + 1) - th column of the upper left sub - matrix Hb2 are elements corresponding to the zero Z*Z square matrix;

[0234] The intersection of the last Kb - 4 rows and the first Kb columns of the upper left sub - matrix Hb2 forms a sub - matrix, in which the number of elements corresponding to the non - zero Z*Z square matrix in each row is less than or equal to Kb - 2;

[0235] Where, Nb is greater than or equal to 2*Kb.

[0236] 2) The expansion factor Z supports a set of determined value sets {z1, z2, z3…, zV}, where z1, z2,…, zV are arranged in ascending order, zr, zs, zt, zu are the expansion factors of four determined values in the set and satisfy z1≤zr≤zs≤zt≤zu≤zV, where V, r, s, t, u are subscripts, 1≤r≤s≤t≤u≤V, and V is an integer greater than or equal to 2;

[0237] When z1≤Z = zi<zr, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, at least one bit of the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 4; for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb with the heaviest R columns deleted, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6, where R is less than or equal to Kb / 2;

[0238] When zr≤Z = zi<zs, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6;

[0239] When \(z_s\leq Z = z_i<z_t\), for the LDPC code corresponding to the expansion factor \(Z = z_i\) and the base matrix \(H_b\), the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 6, and the girth of at least one parity bit with weight greater than 2 in each LDPC codeword is greater than or equal to 8;

[0240] When \(z_t\leq Z = z_i<z_u\), for the LDPC code corresponding to the expansion factor \(Z = z_i\) and the base matrix \(H_b\), the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 8;

[0241] When \(z_u\leq Z = z_i<z_V\), for the LDPC code corresponding to the expansion factor \(Z = z_i\) and the base matrix \(H_b\), the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 8, and the girth of at least one parity bit with weight greater than 2 in each LDPC codeword is greater than or equal to 10;

[0242] Wherein, each codeword bit of an LDPC codeword corresponds to each column of the parity check matrix, and the weight of each codeword bit refers to the number of non-zero elements in the corresponding column, and \(i = 1,2,\cdots,V\).

[0243] According to the base matrix and its corresponding expansion factor \(Z\), perform LDPC encoding operation on the source information bit sequence of \((N_b - M_b)\times Z\) bits to obtain a codeword sequence of \(N_b\times Z\) bits, where \(Z\) is the expansion factor and \(Z\) is a positive integer greater than or equal to 1.

[0244] Optionally, the technical features of the encoding method of the structured LDPC code further include:

[0245] The upper left submatrix \(H_{b3}\) is formed by the intersection of the first \(2\times K_b\) rows and the first \(3\times K_b\) columns of the base matrix \(H_b\). The intersection of the last \(K_b\) rows and the last \(K_b\) columns of \(H_{b3}\) forms a submatrix that is an identity matrix or a cyclic shift matrix of the identity matrix with a size of \(K_b\times K_b\);

[0246] All elements of the submatrix formed by the intersection of the first \(K_b\) rows and the last \(K_b\) columns of \(H_{b3}\) are elements of the corresponding \(Z\times Z\) zero square matrix;

[0247] The \(K_b + 1\)th to \(2\times K_b\)th columns of \(H_{b3}\) form a submatrix. In each column of the \(L_1\)th column of this submatrix, there is only 1 corresponding non-zero square matrix element, and all elements (entries) of the remaining \(K_b - L_1\) columns of this submatrix are elements of the corresponding \(Z\times Z\) zero square matrix, where \(L_1\) is an integer greater than or equal to 0 and less than \(K_b\);

[0248] Wherein, \(N_b\) is greater than or equal to \(3\times K_b\).

[0249] Optionally, Nb is a definite positive integer ranging from 2*Kb to 12*Kb.

[0250] Optionally, Kb takes the value of an integer between 2 and 16.

[0251] Furthermore, eMMB and URLLC scenarios use different Kb values.

[0252] Optionally, the number of elements in the non-zero Z*Z matrix corresponding to the g-th row of the fundamental matrix Hb is less than or equal to the number of elements in the non-zero Z*Z matrix corresponding to the g+1-th row. Where g = 1, 2, ..., Mb-1.

[0253] Optionally, the j-th column of the basic matrix Hb has Lj elements corresponding to all non-zero square matrices, with the first element from top to bottom being 0, and Lj being a positive integer greater than or equal to 1, where j = 1, ..., Nb.

[0254] The j-th column of the fundamental matrix Hb has Lj elements corresponding to all non-zero square matrices. The first element from top to bottom is 0, and Lj is a positive integer greater than or equal to 1, where j = 0, 1, ..., Nb-1.

[0255] Step 602: Based on the fundamental matrix and the corresponding expansion factor, complete the LDPC decoding operation to obtain (Nb-Mb)×z bit information data from the Nb×z bit codeword;

[0256] Where z is the expansion factor, and z is a positive integer greater than or equal to 1.

[0257] Example 5

[0258] This invention provides an encoding device for structured LDPC codes, the structure of which is as follows: Figure 7 As shown, it includes:

[0259] Module 701 is used to determine the underlying matrix used for encoding, wherein the underlying parity check matrix includes the following characteristics:

[0260] The fundamental matrix comprises block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ij Let Kb represent the element in the i-th row and j-th column of the fundamental matrix, where i is the row index and j is the column index, and Kb = Nb - Mb, where Nb is an integer and Kb is an integer greater than or equal to 4. i = 1, ..., Mb, j = 1, ..., Nb.

[0261] The base matrix Hb comprises one or more submatrices, including a top-left submatrix Hb1 and a top-left submatrix Hb2. The number of rows and columns of both top-left submatrix Hb1 and Hb2 are less than the number of rows and columns of the base matrix Hb, and top-left submatrix Hb1 is the top-left submatrix of top-left submatrix Hb2. That is, the base matrix Hb includes at least one of the following characteristics:

[0262] The top-left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z*Z matrix of each row of the top-left submatrix Hb1 is less than or equal to Kb+2 and greater than or equal to Kb-2. The last four columns of the top-left submatrix Hb1 are a lower-left triangular matrix or a quasi-lower-left triangular matrix; and / or

[0263] The top-left submatrix Hb2 is formed by the intersection of the first Kb rows and the first 2*Kb columns of the matrix Hb. All elements of the submatrix formed by the intersection of the first 4 rows and the last Kb-4 columns of the top-left submatrix Hb2 are elements of the corresponding Z*Z zero matrix. The submatrix formed by the intersection of the last Kb-4 rows and the last Kb-4 columns of the top-left submatrix Hb2 is a lower-left triangular matrix or a quasi-lower-left triangular matrix of size (Kb-4)*(Kb-4). All elements of the submatrix formed by the intersection of the last Kb-4 rows and the Kb+1 to Kb+3 columns of the top-left submatrix Hb2 are elements of the corresponding zero Z*Z matrix.

[0264] If the last four columns of the top-left submatrix Hb1 are a lower triangular matrix, then the Kb+1th column of the top-left submatrix Hb2 has only one element corresponding to a non-zero Z*Z matrix. If the last four columns of the top-left submatrix Hb1 are a quasi-lower triangular matrix, then all elements in the Kb+1th column of the top-left submatrix Hb2 are elements corresponding to a zero Z*Z matrix.

[0265] The intersection of the last Kb-4 rows and the first Kb columns of the upper left submatrix Hb2 forms a submatrix, in which the number of elements of the corresponding non-zero Z*Z square matrix in each row is less than or equal to Kb-2.

[0266] Where Nb is greater than or equal to 2*Kb.

[0267] 2) The expansion factor Z supports a set of definite values ​​{z1, z2, z3, ..., z}. V}, where z1, z2, ..., z V They are arranged in ascending order, z r z s z t z uis the expansion factor of four determined values in the set and satisfies z1 ≤ z r ≤ z s ≤ z t ≤ z u ≤ z V , where V, r, s, t, u are subscripts, 1 ≤ r ≤ s ≤ t ≤ u ≤ V, and V is an integer greater than or equal to 2;

[0268] When z1 ≤ Z = z i < z r , for the LDPC code corresponding to the expansion factor Z = z i and the base matrix Hb, for each LDPC codeword, the girth of at least one bit among all codeword bits with weight greater than 2 is equal to 4. For the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb with the heaviest R columns deleted, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6, where R is less than or equal to Kb / 2;

[0269] When zr ≤ Z = zi < zs, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6;

[0270] When z s ≤ Z = z i < z t , for the LDPC code corresponding to the expansion factor Z = z i and the base matrix Hb, the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 6, and the girth of at least one parity bit with weight greater than 2 in each LDPC codeword is greater than or equal to 8; When z t ≤ Z = z i < z u , for the LDPC code corresponding to the expansion factor Z = z i and the base matrix Hb, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 8;

[0271] When z u ≤ Z = z i < z V , for the LDPC code corresponding to the expansion factor Z = z i and the base matrix Hb, the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 8, and the girth of at least one parity bit with weight greater than 2 in each LDPC codeword is greater than or equal to 10;

[0272] In this context, each codeword bit of an LDPC codeword corresponds to each column of the parity check matrix, and the weight of each codeword bit refers to the number of non-zero elements in the corresponding column, where i = 1, 2, ..., V.

[0273] Based on the fundamental matrix and its corresponding expansion factor Z, perform LDPC encoding on the (Nb-Mb)×Z bit source information bit sequence to obtain an Nb×Z bit codeword sequence, where Z is the expansion factor and Z is a positive integer greater than or equal to 1.

[0274] Optionally, the encoding method of the structured LDPC code further includes:

[0275] The top-left submatrix Hb3 is formed by the intersection of the first 2*Kb rows and the first 3*Kb columns of the base matrix Hb. The intersection of the last Kb rows and the last Kb columns of Hb3 forms a submatrix that is an identity matrix of size Kb*Kb or a cyclic shift matrix of the identity matrix.

[0276] All elements of the submatrix formed by the intersection of the first Kb rows and the last Kb columns of Hb3 are elements of the corresponding Z*Z zero matrix;

[0277] The Kb+1th column to the 2*Kbth column of Hb3 forms a submatrix. In the L1th column of this submatrix, each column has only one element in the corresponding non-zero square matrix. All elements (entries) in the remaining Kb-L1th columns of this submatrix are elements in the corresponding Z*Z zero square matrix, where L1 is an integer greater than or equal to 0 and less than Kb.

[0278] Where Nb is greater than or equal to 3*Kb.

[0279] Optionally, Nb is a definite positive integer ranging from 2*Kb to 12*Kb.

[0280] Optionally, Kb takes the value of an integer between 2 and 16.

[0281] Furthermore, eMMB and URLLC scenarios use different Kb values.

[0282] Optionally, the number of elements in the non-zero Z*Z matrix corresponding to the g-th row of the fundamental matrix Hb is less than or equal to the number of elements in the non-zero Z*Z matrix corresponding to the g+1-th row. Where g = 1, 2, ..., Mb-1.

[0283] Optionally, the j-th column of the basic matrix Hb has Lj elements corresponding to all non-zero square matrices, with the first element from top to bottom being 0, and Lj being a positive integer greater than or equal to 1, where j = 1, ..., Nb.

[0284] The j-th column of the fundamental matrix Hb has Lj elements corresponding to all non-zero square matrices. The first element from top to bottom is 0, and Lj is a positive integer greater than or equal to 1, where j = 0, 1, ..., Nb-1.

[0285] The encoding module 702 is used to perform LDPC encoding operation to obtain Nb×z bit codewords from (Nb-Mb)×z bit source data according to the basic matrix and its corresponding expansion factor, where z is the expansion factor and z is a positive integer greater than or equal to 1.

[0286] This invention also provides a decoding apparatus for structured LDPC codes, the structure of which is as follows: Figure 8 As shown, it includes:

[0287] The determination module 801 is used to determine the underlying matrix used for decoding, wherein the underlying parity-check matrix includes the following characteristics:

[0288] The fundamental matrix comprises block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ij Let Kb represent the element in the i-th row and j-th column of the fundamental matrix, where i is the row index and j is the column index, and Kb = Nb - Mb, where Nb is an integer and Kb is an integer greater than or equal to 4. i = 1, ..., Mb, j = 1, ..., Nb.

[0289] The fundamental matrix Hb shall include at least one of the following features:

[0290] The top-left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z*Z matrix of each row of the top-left submatrix Hb1 is less than or equal to Kb+2 and greater than or equal to Kb-2. The last four columns of the top-left submatrix Hb1 are a lower-left triangular matrix or a quasi-lower-left triangular matrix; and / or

[0291] The top-left submatrix Hb2 is formed by the intersection of the first Kb rows and the first 2*Kb columns of the matrix Hb. All elements of the submatrix formed by the intersection of the first 4 rows and the last Kb-4 columns of the top-left submatrix Hb2 are elements of the corresponding Z*Z zero matrix. The submatrix formed by the intersection of the last Kb-4 rows and the last Kb-4 columns of the top-left submatrix Hb2 is a lower-left triangular matrix or a quasi-lower-left triangular matrix of size (Kb-4)*(Kb-4). All elements of the submatrix formed by the intersection of the last Kb-4 rows and the Kb+1 to Kb+3 columns of the top-left submatrix Hb2 are elements of the corresponding zero Z*Z matrix.

[0292] If the square matrix of the last four columns of the upper left sub-matrix Hb1 is a lower triangular matrix, and there is only one element corresponding to the non-zero Z×Z square matrix in the (Kb + 1)-th column of the upper left sub-matrix Hb2; if the square matrix of the last four columns of the upper left sub-matrix Hb1 is a quasi-lower triangular matrix, all elements in the (Kb + 1)-th column of the upper left sub-matrix Hb2 are elements corresponding to the zero Z×Z square matrix;

[0293] The intersection of the last Kb - 4 rows and the first Kb columns of the upper left sub-matrix Hb2 forms a sub-matrix, and the number of elements corresponding to the non-zero Z×Z square matrix in each row of this sub-matrix is less than or equal to Kb - 2;

[0294] Among them, Nb is greater than or equal to 2×Kb.

[0295] 2) The expansion factor Z supports a set of determined value sets {z1, z2, z3…, zV}, where z1, z2,…, zV are arranged in ascending order, zr, zs, zt, zu are the expansion factors of four determined values in the set and satisfy z1 ≤ zr ≤ zs ≤ zt ≤ zu ≤ zV, where V, r, s, t, u are subscripts, 1 ≤ r ≤ s ≤ t ≤ u ≤ V, and V is an integer greater than or equal to 2;

[0296] When z1 ≤ Z = zi < zr, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of at least one bit among all codeword bits with weight greater than 2 in each LDPC codeword is equal to 4; for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb after deleting the heaviest R columns, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6, where R is less than or equal to Kb / 2;

[0297] When zr ≤ Z = zi < zs, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 6;

[0298] When zs ≤ Z = zi < zt, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 6, and the girth of at least one parity bit with weight greater than 2 in each LDPC codeword is greater than or equal to 8;

[0299] When zt ≤ Z = zi < zu, for the LDPC code corresponding to the expansion factor Z = zi and the base matrix Hb, the girth of all codeword bits with weight greater than 2 in each LDPC codeword is equal to 8;

[0300] When zu ≤ Z = zi < zV, for the LDPC code corresponding to the extended factor Z = zi and the base matrix Hb, the girth of all systematic bits with weight greater than 2 in each LDPC codeword is equal to 8, and the girth of at least one parity bit with weight greater than 2 in each LDPC codeword is greater than or equal to 10;

[0301] Wherein, each codeword bit of an LDPC codeword corresponds to each column of the parity check matrix, and the weight of each codeword bit refers to the number of non-zero elements in the corresponding column, and i = 1, 2,..., V. According to the base matrix and its corresponding extended factor Z, perform LDPC encoding operation on the source information bit sequence of (Nb - Mb) × Z bits to obtain a codeword sequence of Nb × Z bits, where Z is the extended factor and Z is a positive integer greater than or equal to 1.

[0302] Optionally, the base matrix Hb further has the following characteristics:

[0303] The upper left sub-matrix Hb3 is formed by the intersection of the first 2*Kb rows and the first 3*Kb columns of the base matrix Hb. The intersection of the last Kb rows and the last Kb columns of Hb3 forms a sub-matrix that is an identity matrix or a cyclic shift matrix of the identity matrix with a size of Kb*Kb;

[0304] All elements of the sub-matrix formed by the intersection of the first Kb rows and the last Kb columns of Hb3 are elements of the corresponding Z*Z zero square matrix;

[0305] The Kb+1 column to the 2*Kb column of Hb3 form a sub-matrix. In each column of the L1 column of this sub-matrix, there is only 1 corresponding non-zero element of the square matrix, and all elements (entries) of the remaining Kb - L1 columns of this sub-matrix are elements of the corresponding Z*Z zero square matrix, where L1 is an integer greater than or equal to 0 and less than Kb;

[0306] Wherein, Nb is greater than or equal to 3*Kb.

[0307] Optionally, Nb is a definite positive integer between 2*Kb and 12*Kb.

[0308] Optionally, Kb takes an integer value between 2 and 16.

[0309] Furthermore, different Kb values are used in the eMMB scenario and the URLLC scenario.

[0310] Optionally, the number of corresponding non-zero Z*Z square matrix elements in the g-th row of the base matrix Hb is less than or equal to the number of corresponding non-zero Z*Z square matrix elements in the g+1-th row. Wherein, g = 1, 2,..., Mb - 1.

[0311] Optionally, the j-th column of the basic matrix Hb has Lj elements corresponding to all non-zero square matrices, with the first element from top to bottom being 0, and Lj being a positive integer greater than or equal to 1, where j = 1, ..., Nb.

[0312] The j-th column of the fundamental matrix Hb has Lj elements corresponding to all non-zero square matrices. The first element from top to bottom is 0, and Lj is a positive integer greater than or equal to 1, where j = 0, 1, ..., Nb-1.

[0313] The decoding module 802 is used to perform LDPC decoding operation to obtain (Nb-Mb)×z bit information data from an Nb×z bit codeword based on the basic matrix and the corresponding expansion factor, where z is the expansion factor and z is a positive integer greater than or equal to 1.

[0314] Preferably, the decoding module 802 includes:

[0315] The row update unit 8021 of the basic matrix is ​​used to perform row updates on the basic matrix using a hierarchical BP algorithm or a modified minimum sum algorithm, including:

[0316] The edge information is the information from the verification node to the variable node;

[0317] The decoding decision unit 8022 is used to calculate the codeword log-likelihood ratio using the edge information, perform hard judgment, and check whether it is correct. If it is correct, the correct codeword is output; if it is incorrect, the decoding process continues.

[0318] In summary, embodiments of the present invention provide an encoding method, decoding method, encoding apparatus, and decoding apparatus for structured LDPC codes. By determining a fundamental matrix containing K0 adjacent pairs used for encoding or decoding, and based on the fundamental matrix and its corresponding expansion factor, encoding or decoding is completed, achieving high pipeline speed LDPC encoding and decoding, and solving the problem of low efficiency in existing encoders and decoders. The technical solution provided by the embodiments of the present invention can be applied to error correction coding technology for data transmission in digital communication systems, resulting in an LDPC code with improved efficiency or reduced complexity, particularly suitable for ultra-high-speed scenarios.

[0319] Example 6

[0320] Embodiments of the present invention also provide a storage medium. Optionally, in this embodiment, the storage medium may be configured to store program code for performing the following steps:

[0321] The fundamental matrix Hb used for encoding is determined, wherein the fundamental matrix Hb includes block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ijThe elements in the i-th row and j-th column of the base matrix Hb are represented, where i is the row index and j is the column index of the base matrix. Kb = Nb - Mb, where Kb is an integer greater than or equal to 4 and Nb is an integer. i = 1, ..., Mb, j = 1, ..., Nb. The base matrix Hb includes one or more submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2. Based on the base matrix and the expansion factor Z corresponding to the base matrix Hb, the source information bit sequence is subjected to LDPC encoding to obtain a codeword sequence, where Z is a positive integer greater than or equal to 1.

[0322] Optionally, in this embodiment, the storage medium may include, but is not limited to, various media capable of storing program code, such as USB flash drives, read-only memory (ROM), random access memory (RAM), portable hard drives, magnetic disks, or optical disks.

[0323] Example 7

[0324] Embodiments of the present invention also provide another storage medium. Optionally, in this embodiment, the storage medium may be configured to store program code for performing the following steps:

[0325] The fundamental matrix Hb used for decoding is determined, wherein the fundamental matrix Hb includes block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb=[A,B], where hb ij This represents the element in the i-th row and j-th column of the basic matrix Hb, where i is the row index and j is the column index of the basic matrix. Kb = Nb - Mb, where Kb is an integer greater than or equal to 4. Nb is an integer, i = 1, ..., Mb, j = 1, ..., Nb. The basic matrix Hb includes one or more submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the basic matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2.

[0326] Based on the fundamental matrix and the expansion factor Z corresponding to the fundamental matrix Hb, a codeword with a preset number of bits is decoded to obtain the source information bit sequence, where Z is a positive integer greater than or equal to 1.

[0327] Optionally, specific examples in this embodiment can refer to the examples described in the above embodiments and optional implementations, and will not be repeated here.

[0328] Example 8

[0329] The LDPC codes support V code lengths, each with a fundamental matrix Hb of the same size Mb*nb. For each code length, the corresponding non-zero matrix elements in the fundamental matrix occupy the same or at most three different positions (i.e., for each code length, at most three non-zero matrix elements occupy different positions). The expansion factor Z supports a defined set {z1, z2, z3, ..., z...}. Vmax The expansion factor for each code length is an element in the set of expansion factors. The value of the corresponding non-zero square matrix element for each code length is calculated using the corresponding non-zero square matrix element for the largest code length, and includes at least one of the following methods:

[0330] Method 1: For the modulo method:

[0331]

[0332] Method 2: Rounding (scale + floor) method:

[0333]

[0334] Method 3: Rounding (scale + round) method:

[0335]

[0336] Where α = Pmax / Pl, v = 1,2,….,Vmax,z1,z2,z3,…,z Vmax It is arranged from smallest to largest, z vmax It is the expansion factor of the maximum code length, z v It is the expansion factor of the v-th code length. h is the corresponding non-zero square matrix element in the i-th row and j-th column of the maximum code length. ij v The corresponding non-zero square matrix elements in the i-th row and j-th column of the v-th code length. `mod` is the modulo operation, `[]` is the floor function, and `Round` is the rounding operation. The expansion factor z... v All are multiples of a positive integer value pl, i.e., z = pl * n. Here, the positive integer value pl is an element of the subset Pset, which is a subset of the set of all positive integer factors of Pmax, where n is a natural number and Pmax is an integer greater than or equal to 4.

[0337] Here is a more specific example.

[0338] The Pset is {256, 32}, and the nset is {1, 3, 5}, i.e., Pmax = 256. We know there are 6 expansion factors. The expansion factor Z supports a definite set of sizes 6, i.e., Vmax = 6. A set of expansion factors is {32, 96, 160, 256, 768, 1280}, corresponding to a code length set of {128, 384, 640, 1024, 3072, 5120}, corresponding to the maximum expansion factor z. vmax =1280, its maximum expansion factor z vmax =1280 corresponds to the fundamental matrix Hb 6 for:

[0339]

[0340] The values ​​of the non-zero square matrix elements in the fundamental matrix corresponding to each code length described above are calculated using the non-zero square matrix elements of the fundamental matrix corresponding to the maximum code length, including three methods. Specifically, if the fundamental matrix for other expansion factors is obtained using method 1, it involves two steps:

[0341] Step 1. The first part of the calculation formula for Method 1 is as follows:

[0342]

[0343] in, It is the maximum expansion factor z vmax =1280 (vmax=6) corresponds to the fundamental matrix Hb 6 The elements in the i-th row and j-th column of the matrix; α = Pmax / pl, so α has two values: 1 corresponds to the first element 256 of Pset, with an expansion factor of {256, 768, 1280}; 8 corresponds to the second element 32 of Pset, with an expansion factor of {32, 96, 160}; v = 1, 2, 3, 4, 5. Therefore, the basic matrix calculated according to the method described in step 1 above includes the following:

[0344] The fundamental matrix corresponding to the three expansion factors with α equal to 8: Hb' 1 Hb' 2 Hb' 3 (The expansion factors are {32, 96, 160}) are as follows:

[0345]

[0346] The fundamental matrix corresponding to the other two expansion factors where α equals 1: Hb' 4 Hb' 5 (The expansion factors are {256, 768} respectively) are as follows:

[0347]

[0348] Since α equals 1, the fundamental matrix Hb' 4 and Hb' 5 All are equal to the base matrix with the maximum expansion factor.

[0349] Step 2. The latter part of the calculation formula according to method 1 is as follows:

[0350] h ij v =(h' ij v modz v

[0351] Where, v = 1, 2, 3, 4, 5; h' ij v It is the fundamental matrix Hb' corresponding to the expansion factor zv v The elements in the i-th row and j-th column of the matrix, zv, have values ​​of {32, 96, 160, 256, 768}. Therefore, based on the calculation method in step 2, the remaining five basic matrices (with corresponding expansion factors of {32, 96, 160, 256, 768}) can be calculated as follows:

[0352] The fundamental matrix Hb corresponding to the expansion factor of 32 1 :

[0353]

[0354] The fundamental matrix Hb corresponding to the expansion factor of 96 2 :

[0355]

[0356] The fundamental matrix Hb corresponding to the expansion factor 160 3 :

[0357]

[0358] The fundamental matrix Hb corresponding to the expansion factor 256 4 :

[0359]

[0360] The fundamental matrix Hb corresponding to the expansion factor 768 5 :

[0361]

[0362] The beneficial effects of the method described in Method 1 are as follows: it allows multiple code lengths to use the same decoder, which can be achieved with only a small amount of additional control circuitry. In other words, the scheme enables LDPC codes to support very flexible code length design, solving the problem of the lack of flexible code length in existing LDPC codes; and it can ensure that the matrix characteristics of LDPC codes do not change much when changing from a large expansion factor to a small expansion factor, thereby ensuring that LDPC codes maintain relatively high decoding performance over a large code length range.

[0363] For example, based on the fundamental matrix and expansion factor design methods described above, in the design of a receiver decoder, we can adopt methods such as... Figure 9 The memory design scheme shown is an example. Figure 9 The diagram shows the information storage method corresponding to a column in the LDPC code's fundamental matrix, including the storage methods for external information and channel demodulation information. The maximum value of n is 5, so 5 words are required, as shown below. Figure 9 Words 0 to 4 are represented in the code. Since Pmax equals 256, the size of each word is 256. The Pl value corresponding to the spread factor z used in LDPC encoding corresponds to its size in each word in the actual decoder. For example, if Pl is 32 of Pset = {256, 32}, it means that each word occupies 32 positions in the actual decoder. If it equals 256, it means that each word occupies 256 positions in the actual decoder (since it equals Pmax, it fills the entire word). The n value corresponding to the spread factor z used in LDPC encoding corresponds to the size of each word in the actual decoder. The number of words in the decoder, for example, when n is 1 in nset = {1, 3, 5}, it means that the actual decoder uses only 1 word to store all z pieces of information in column 1 of the corresponding basic matrix. When n is 3 in nset = {1, 3, 5}, it means that the actual decoder uses only 3 words to store all z pieces of information in column 1 of the corresponding basic matrix. When n is 5 in nset = {1, 3, 5}, it means that the actual decoder uses 5 words to store all z pieces of information in column 1 of the corresponding basic matrix.

[0364] Here, we will take an expansion factor of z = 96 as an example to explain in detail the storage method of all z = 96 pieces of information corresponding to column 1 of the basic matrix in the LDPC decoder. With an expansion factor of z = 96, the corresponding value is l = 1, i.e., p1 = 32, n = 3. Therefore, based on the above, if LDPC encoding is performed with an expansion factor of z = 96, the storage method of z = 96 soft information pieces corresponding to any column of the basic matrix in the decoder is as follows: occupying n = 3 words, with each word having a size of 32. For example... Figure 10 As shown, any column of the fundamental matrix in the decoder occupies n = 3 words (word0 to word2), such as... Figure 10 The number 1001 in the text; each word occupies p = 32 positions, and the placement method is to place one piece of information every 8 positions, starting from the first position. Figure 10 The number 1002 means that one piece of information is placed in every 8 positions within each word (the information is placed in the first of the 8 positions); since it only occupies 3 words, the remaining 2 words (e.g.) Figure 10 1003) is not used. It can be seen that in the decoder design, Pmax can correspond to the size of the maximum word, while the maximum value of n corresponds to the number of words in the memory of the expansion factor z information in any column of the fundamental matrix. Since z = 96 pieces of information in any column of the fundamental matrix can be stored in one storage block, different words only need to be distinguished by their addresses, and the information of each word is merged together.

[0365] Based on the above description, each piece of information is placed in its corresponding position within a word. One piece of information is placed in every eight positions within each word. For the remaining positions, given the expansion factor z = 96 (code length z * Nb = 96 * 8 = 768), the codeword information of length 768 can be interleaved before decoding. The interleaving method includes: determining the deinterleaving method using at least one of the following parameters: parameter Pmax, parameter pl, and parameter n. Specifically, the interleaving method involves: the codeword information sequence to be decoded includes 768 pieces of information, comprising Nb = 8 small data blocks of length z = 96. Each small data block is further subdivided into pl = 32 sub-blocks. Each sub-block is first filled with Pmax - pl = 256 - 32 = 224 dummy bits to obtain a small data block of length 256 to be decoded. These dummy bits are not used for decoding. Then, all the small data blocks to be decoded are interleaved using a Bit Reverse Order (BRO) method. The bit-reversed sequential interleaving method is as follows: The index before interleaving is F0. F0 is converted into an 8-bit binary bit sequence and the binary bit sequence is reversed left and right, i.e., the highest and lowest bits are swapped, the second highest and second lowest bits are swapped, etc., to obtain the reversed binary sequence. The binary sequence is converted to decimal to obtain the value F1, i.e., the index after interleaving is F1. The formula can be written as Y'F1 = YF0, where Y is the small data block to be decoded before interleaving, and Y' is the small data block to be decoded after interleaving. For example, the decimal value of F0 is 15, so its 8-bit binary sequence is 00001111. The reversed 8-bit binary sequence is 11110000, which corresponds to decimal F1 = 240. Therefore, during interleaving, the value at index 240 in the interleaved Y' is equal to the value at index 15 in the original Y. Since the interleaving method is performed before encoding, a corresponding reverse operation (deinterleaving method) is performed after encoding to obtain a deinterleaved codeword data sequence, i.e., from Y'F0 = YF1. The deinterleaving method includes: determining the deinterleaving method by at least one of the following parameters: parameter Pmax, parameter pl, and parameter n. Then, codeword bits are selected from the deinterleaved codeword data sequence. The length of the decimal-to-binary sequence described above is determined by Pmax, and Pmax needs to be equal to a positive integer power of 2, where the positive integer power is the length of the binary sequence.

[0366] Similarly, in an LDPC decoder, the interleaving and deinterleaving methods described above can also be used. Before performing decoding operations on a codeword with a preset number of bits, the codeword with a preset number of bits is interleaved. The interleaving method is the same as described above. Then, LDPC decoding is performed to obtain the decoded sequence. The decoded sequence is then deinterleaved, and the corresponding bits are selected to obtain the source information bit sequence.

[0367] The above analysis also shows that the LDPC code decoder (with a word size of 256 and a memory design of 5 words) can support all extension factors that satisfy the following: the integer value obtained by multiplying all positive integer factors of Pmax by all positive integers less than or equal to 5. In this example, Pmax is 2 to the power of 8. In fact, Pmax is not limited to positive integer powers of 2; it can also be any integer greater than 4.

[0368] Furthermore, based on the aforementioned design method using the fundamental matrix and expansion factor, in the design of the transmitting encoder, the source information bit sequence is subjected to LDPC encoding to obtain a codeword sequence. The source information bit sequence is then subjected to LDPC encoding based on the fundamental matrix Hb and the expansion factor Z corresponding to the fundamental matrix Hb, to obtain the codeword sequence, where Z is a positive integer greater than or equal to 1.

[0369] In methods 2 and 3 described below, the encoding, decoding, interleaving, and deinterleaving methods, as well as the related algorithms, described above can be used. To summarize the above encoding-side interleaving methods: First, the information bits before encoding are evenly segmented, with each segment being 1 bit long; then, Pmax-1 bits are added to the end of each segment, resulting in each segment having Pmax bits; finally, each segment undergoes a binary bit flipping (BRO) interleaving of length Pmax.

[0370] To summarize the above coding-side deinterleaving method: First, the encoded codeword bits are evenly segmented, with each segment having a length of Pmax bits; then, each segment is deinterleaved using a binary bit flipping (BRO) method with a length of Pmax bits.

[0371] If the fundamental matrix of other expansion factors is obtained by calculating using method 2, it still involves two steps:

[0372] Step 1. A partial calculation formula for method 2 is as follows:

[0373]

[0374] in, It is the maximum expansion factor z vmax =1280 (Vmax=6) corresponds to the fundamental matrix Hb 6The elements in the i-th row and j-th column of the set; α = Pmax / pl, so α has two numbers: 1 corresponds to the first element 256 of Pset, with an expansion factor of {256,768,1280}; 8 corresponds to the second element 32 of Pset, with an expansion factor of {32,96,160}; v = 1, 2, 3, 4, 5.

[0375] It can be observed that the method in step 1 of method 2 is the same as the method in step 1 of method 1 described above. Therefore, the fundamental matrix for calculating other expansion factors (less than 1280) according to the method described in step 1 of method 2 above includes the following:

[0376] The fundamental matrix corresponding to the three expansion factors with α equal to 8: Hb' 1 Hb' 2 Hb' 3 (The expansion factors are {32, 96, 160}) are as follows:

[0377]

[0378] The fundamental matrix corresponding to the other two expansion factors where α equals 1: Hb' 4 Hb' 5 (The expansion factors are {256, 768} respectively) are as follows:

[0379]

[0380] Since α equals 1, the fundamental matrix Hb' 4 and Hb' 5 All are equal to the base matrix with the maximum expansion factor.

[0381] Step 2. The remaining calculation formulas according to Method 2 are as follows:

[0382]

[0383] Where, v = 1, 2, 3, 4, 5; h' ij v It is the expansion factor z v The corresponding element in the i-th row and j-th column of the fundamental matrix Hb'v, z v The value of z is {32, 96, 160, 256, 768}. vmax =1280. Therefore, based on the calculation method in step 2, the remaining five basic matrices (with corresponding expansion factors of {32, 96, 160, 256, 768}) can be calculated as follows:

[0384] The fundamental matrix Hb corresponding to the expansion factor of 32 1 :

[0385]

[0386] The fundamental matrix Hb corresponding to the expansion factor of 96 2 :

[0387]

[0388] The fundamental matrix Hb corresponding to the expansion factor 160 3 :

[0389]

[0390] The fundamental matrix Hb corresponding to the expansion factor 256 4 :

[0391]

[0392] The fundamental matrix Hb corresponding to the expansion factor 768 5 :

[0393]

[0394] The beneficial effects of the method described in Method 2 are as follows: it allows multiple code lengths to use the same decoder, which can be achieved with only a small amount of additional control circuitry. In other words, the scheme enables LDPC codes to support very flexible code length design, solving the problem of the lack of flexible code length in existing LDPC codes; and it can ensure that the matrix characteristics of LDPC codes do not change much when changing from a large expansion factor to a small expansion factor, thereby ensuring that LDPC codes maintain relatively high decoding performance over a wide range of code lengths.

[0395] Similarly, if we calculate the fundamental matrix of other expansion factors using method 3, it still involves two steps:

[0396] Step 1. A partial calculation formula for method 3 is as follows:

[0397]

[0398] in, It is the maximum expansion factor z Vmax =1280 (Vmax=6) corresponds to the fundamental matrix Hb 6 The elements in the i-th row and j-th column of the set; α = Pmax / pl, so α has two numbers: 1 corresponds to the first element 256 of Pset, with an expansion factor of {256,768,1280}; 8 corresponds to the second element 32 of Pset, with an expansion factor of {32,96,160}; v = 1, 2, 3, 4, 5.

[0399] It can be observed that the method in step 1 of method 3 is the same as the method in step 1 of method 1 described above. Therefore, the fundamental matrix Hb' of other expansion factors (less than 1280) is calculated according to the method described in step 1 of method 3 described above. 1 Hb' 2 Hb' 3 Hb' 4 and Hb' 5 The result obtained is equal to that calculated in step 1 of methods 1 and 2 described above, and will not be repeated here.

[0400] Step 2. The remaining calculation formulas according to Method 1 are as follows:

[0401]

[0402] Where, v = 1, 2, 3, 4, 5; h' ij v It is the fundamental matrix Hb' corresponding to the expansion factor zv v The elements in the i-th row and j-th column, z v The value of z is {32, 96, 160, 256, 768}. vmax =1280. Therefore, based on the calculation method in step 2, the remaining five basic matrices (with corresponding expansion factors of {32, 96, 160, 256, 768}) can be calculated as follows:

[0403] The fundamental matrix Hb corresponding to the expansion factor of 32 1 :

[0404]

[0405] The fundamental matrix Hb corresponding to the expansion factor of 96 2 :

[0406]

[0407] The fundamental matrix Hb corresponding to the expansion factor 160 3 :

[0408]

[0409] The fundamental matrix Hb corresponding to the expansion factor 256 4 :

[0410]

[0411] The fundamental matrix Hb corresponding to the expansion factor 768 5 :

[0412]

[0413] The beneficial effects of method 3 are as follows: it allows multiple code lengths to use the same decoder, requiring only a small amount of additional control circuitry. In other words, the scheme enables LDPC codes to support very flexible code length design, solving the problem of the lack of flexible code length in existing LDPC codes. Furthermore, it ensures that the matrix characteristics of LDPC codes do not change significantly when the spread factor changes from a large spread factor to a small spread factor, thereby ensuring that LDPC codes maintain relatively high decoding performance over a wide range of code lengths.

[0414] Optionally, specific examples in this embodiment can refer to the examples described in the above embodiments and optional implementations, and will not be repeated here.

[0415] Example 9

[0416] The LDPC codes support V code lengths, each corresponding to a fundamental matrix Hb of the same size Mb*Nb. For each code length, the corresponding non-zero square matrix elements of the fundamental matrix occupy the same or at most three different positions. The expansion factor Z supports a defined set {z1, z2, z3, ..., z...}. Vmax The expansion factor for each code length is an element in the set of expansion factors. The value of the corresponding non-zero square matrix element for each code length is calculated using the corresponding non-zero square matrix element for the largest code length.

[0417]

[0418] Where α = Pmax / Pl, v = 1,2,….,Vmax,z1,z2,z3,…,z Vmax It is arranged from smallest to largest, z Vmax It is the expansion factor of the maximum code length, z v It is the expansion factor of the v-th code length. h is the non-negative -1 element in the i-th row and j-th column of the maximum code length. ij v The non-negative -1 element in the i-th row and j-th column of the v-th code length. `mod` is the modulo operation, `[]` is the floor function, and `Round` is the rounding operation. The expansion factor z... v All are multiples of a positive integer value pl, i.e., z = pl * n. Here, the positive integer value pl is an element of the subset Pset, which is a subset of the set of all positive integer factors of Pmax, where n is a natural number and Pmax is an integer greater than or equal to 4.

[0419] Here is a more specific example.

[0420] The Pset is {10, 20, 40, 80, 120, 240}, i.e., Pmax = 240, and n takes the value 2. We know there are 6 expansion factors. The expansion factor Z supports a definite set of sizes 6, i.e., Vmax = 6. A set of expansion factors is {20, 40, 80, 160, 240, 480}, corresponding to a code length set of {100, 200, 400, 800, 1200, 2400}, corresponding to the maximum expansion factor z. vmax =480, its maximum expansion factor z vmax =480 corresponds to the fundamental matrix Hb 6 for:

[0421]

[0422] Among them, the fundamental matrix Hb 6 The dimension is 5 rows and 10 columns. Therefore, the number of rows (or parity columns) of the fundamental matrix is ​​Mb = 5, the total number of columns of the fundamental matrix is ​​Nb = 10, and the number of system columns of the fundamental matrix is ​​Kb = Nb - Mb = 10 - 5 = 5. That is, the submatrix formed by the first Kb = 5 columns of the fundamental matrix is ​​block A, corresponding to Mb × Kb of system bits, and the submatrix formed by the last Mb = 5 columns of the fundamental matrix is ​​block B, corresponding to Mb × Mb of parity bits. The fundamental matrix Hb... 6 It can be described as [A,B]; the basic matrices under other code lengths {20, 40, 80, 160, 240} also have the same matrix parameters (Kb, Nb, Mb) as described above, which will not be repeated here.

[0423] The expansion factor for each code length {100, 200, 400, 800, 1200, 2400} is an element in the expansion factor set {20, 40, 80, 160, 240, 480}. The value of the corresponding non-zero matrix element for each code length is calculated using the corresponding non-zero matrix element for the maximum code length of 2400.

[0424]

[0425] Where α = Pmax / Pl, pl is an element of the subset Pset = {10, 20, 40, 80, 120, 240}, which corresponds one-to-one with the expansion factor set {20, 40, 80, 160, 240, 480}. The i0th element in the expansion factor set is equal to the i0th element in the subset Pset multiplied by n = 2, i0 = 1, 2, ..., 6. Therefore, the α values ​​corresponding to any expansion factor in the expansion factor set {20, 40, 80, 160, 240, 480} are as follows: {24, 12, 6, 3, 2, 1}. Furthermore, according to the formula above, the basic matrices corresponding to code lengths {100, 200, 400, 800, 1200} (corresponding to the expansion factor set {20, 40, 80, 160, 240}) are as follows:

[0426] The fundamental matrix Hb corresponding to the expansion factor 20 1 :

[0427]

[0428] The fundamental matrix Hb corresponding to the expansion factor of 40 2 :

[0429]

[0430] The fundamental matrix Hb corresponding to the expansion factor of 80 3 :

[0431]

[0432] The fundamental matrix Hb corresponding to the expansion factor 160 4 :

[0433]

[0434] The fundamental matrix Hb corresponding to the expansion factor 240 5 :

[0435]

[0436] Alternatively, all the aforementioned fundamental matrices may differ in at most three corresponding non-zero matrix elements. For example, the following example shows six fundamental matrices {Hb}. 1 Hb 2 Hb 3 Hb 4 Hb 5 Hb 6The fact that at most three corresponding non-zero matrix elements differ between any pair of matrixes has the advantage of ensuring that the basic matrix retains the same basic matrix characteristics (such as degree distribution) and can add new matrix characteristics to ensure that the basic matrix can achieve relatively good performance at various code lengths.

[0437] The fundamental matrix Hb corresponding to the expansion factor 20 1 :

[0438]

[0439] The fundamental matrix Hb corresponding to the expansion factor of 40 2 :

[0440]

[0441] The fundamental matrix Hb corresponding to the expansion factor of 80 3 :

[0442]

[0443] The fundamental matrix Hb corresponding to the expansion factor 160 4 :

[0444]

[0445] The fundamental matrix Hb corresponding to the expansion factor 240 5 :

[0446]

[0447] It is obvious to those skilled in the art that the modules or steps of the present invention described above can be implemented using general-purpose computing devices. They can be centralized on a single computing device or distributed across a network of multiple computing devices. Optionally, they can be implemented using computer-executable program code, thereby storing them in a storage device for execution by a computing device. In some cases, the steps shown or described can be performed in a different order than those presented herein, or they can be fabricated as separate integrated circuit modules, or multiple modules or steps can be fabricated as a single integrated circuit module. Thus, the present invention is not limited to any particular combination of hardware and software.

[0448] The above description is merely a preferred embodiment of the present invention and is not intended to limit the invention. Various modifications and variations can be made to the present invention by those skilled in the art. Any modifications, equivalent substitutions, improvements, etc., made within the spirit and principles of the present invention should be included within the scope of protection of the present invention.

Claims

1. A method for encoding structured low-density parity-check codes (LDPC), applied to wireless digital communication systems, characterized in that, include: The fundamental matrix Hb used for encoding is determined, wherein the fundamental matrix Hb includes block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb = [A,B], where, Kb represents the element in the i-th row and j-th column of the basic matrix Hb, where i is the row index of the basic matrix Hb and j is the column index of the basic matrix Hb. Kb = Nb-Mb, where Nb is an integer, i=1, ..., Mb, j=1, ..., Nb. The base matrix Hb includes multiple submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2; Based on the fundamental matrix Hb and the expansion factor Z corresponding to the fundamental matrix Hb, the source information bit sequence is subjected to LDPC encoding to obtain a codeword sequence, where Z is a positive integer greater than or equal to 1; The upper left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z×Z matrix of each row of the upper left submatrix Hb1 is Kb-2, Kb-1, Kb, Kb+1, or Kb+2. The last four columns of the upper left submatrix Hb1 are a lower left triangular matrix or a quasi-lower left triangular matrix. Nb is greater than or equal to 3*Kb, and Kb takes the value of an integer between 6 and 16. The submatrix formed by the intersection of the last Kb-4 rows and the last Kb-4 columns of the upper left submatrix Hb2 is a lower left triangular matrix of size (Kb-4)×(Kb-4).

2. The method according to claim 1, characterized in that, The source information bit sequence is a sequence of (Nb-Mb)*Z bits; the codeword sequence is Nb*Z bits.

3. The method according to any one of claims 1 to 2, characterized in that, Nb is a positive integer in the range [3*Kb, 12*Kb].

4. The method according to claim 1 or 2, characterized in that, Enhanced mobile broadband (eMMB) scenarios and ultra-reliable and low-latency URLLC scenarios use different Kb values.

5. The method according to claim 1, characterized in that, In the enhanced mobile broadband (eMMB) scenario, the encoder will use the aforementioned fundamental matrix Hb to implement LDPC code encoding. In the ultra-reliable and low-latency scenario, the encoder will use another fundamental matrix to implement LDPC code encoding. The set of row and column position index pairs (i,j) of all corresponding non-zero square matrices of the other fundamental matrix is ​​a subset of the set of row and column position index pairs (i,j) of all corresponding non-zero square matrices of the fundamental matrix Hb.

6. A decoding method for structured low-density parity-check codes (LDPC), applied to wireless digital communication systems, characterized in that... include: The fundamental matrix Hb used for decoding is determined, wherein the fundamental matrix Hb includes block A of Mb×Kb corresponding to system bits and block B of Mb×Mb corresponding to parity bits, i.e., Hb = [A,B], where, Kb represents the element in the i-th row and j-th column of the basic matrix Hb, where i is the row index of the basic matrix Hb and j is the column index of the basic matrix Hb. Kb = Nb-Mb, where Nb is an integer i=1, ..., Mb and j=1, ..., Nb. The base matrix Hb includes multiple submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2; Based on the fundamental matrix Hb and the expansion factor Z corresponding to the fundamental matrix Hb, a codeword with a preset number of bits is decoded to obtain the source information bit sequence, where Z is a positive integer greater than or equal to 1; The upper left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z×Z matrix of each row of the upper left submatrix Hb1 is Kb-2, Kb-1, Kb, Kb+1, or Kb+2. The last four columns of the upper left submatrix Hb1 are a lower left triangular matrix or a quasi-lower left triangular matrix. Nb is greater than or equal to 3*Kb, and Kb takes the value of an integer between 6 and 16. The submatrix formed by the intersection of the last Kb-4 rows and the last Kb-4 columns of the upper left submatrix Hb2 is a lower left triangular matrix of size (Kb-4)×(Kb-4).

7. The method according to claim 6, characterized in that, The source information bit sequence is a sequence of (Nb-Mb)*Z bits; the preset number of bits is Nb*Z bits.

8. An encoding device for a structured low-density parity-check (LDPC) code, applied in a wireless digital communication system, characterized in that, include: A determination module is used to determine the fundamental matrix Hb used for encoding, wherein the fundamental matrix Hb includes block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb = [A,B], where... Kb represents the element in the i-th row and j-th column of the basic matrix Hb, where i is the row index of the basic matrix Hb and j is the column index of the basic matrix Hb. Kb = Nb-Mb, where Nb is an integer, i=1, ..., Mb, j=1, ..., Nb. The base matrix Hb includes multiple submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2; The encoding module is used to perform LDPC encoding operation on the source information bit sequence according to the basic matrix Hb and the expansion factor Z corresponding to the basic matrix Hb to obtain the codeword sequence, where Z is a positive integer greater than or equal to 1; The upper left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z×Z matrix of each row of the upper left submatrix Hb1 is Kb-2, Kb-1, Kb, Kb+1, or Kb+2. The last four columns of the upper left submatrix Hb1 are a lower left triangular matrix or a quasi-lower left triangular matrix. Nb is greater than or equal to 3*Kb, and Kb takes the value of an integer between 6 and 16. The submatrix formed by the intersection of the last Kb-4 rows and the last Kb-4 columns of the upper left submatrix Hb2 is a lower left triangular matrix of size (Kb-4)×(Kb-4).

9. The apparatus according to claim 8, characterized in that, The source information bit sequence is a sequence of (Nb-Mb)*Z bits; the codeword sequence is Nb*Z bits.

10. The apparatus according to claim 8 or 9, characterized in that, Nb is a positive integer in the range [3*Kb, 12*Kb].

11. The apparatus according to claim 8, characterized in that, Enhanced mobile broadband (eMMB) scenarios and ultra-reliable and low-latency URLLC scenarios use different Kb values.

12. The apparatus according to claim 8, characterized in that, In the enhanced mobile broadband (eMMB) scenario, the encoder will use the aforementioned fundamental matrix Hb to implement LDPC code encoding. In the ultra-reliable and low-latency scenario, the encoder will use another fundamental matrix to implement LDPC code encoding. The set of row and column position index pairs (i,j) of all corresponding non-zero square matrices of the other fundamental matrix is ​​a subset of the set of row and column position index pairs (i,j) of all corresponding non-zero square matrices of the fundamental matrix Hb.

13. A decoding device for a structured low-density parity-check (LDPC) code, applied in a wireless digital communication system, characterized in that, include: The determination module is used to determine the fundamental matrix Hb used for decoding, wherein the fundamental matrix Hb includes block A, corresponding to Mb×Kb of system bits, and block B, corresponding to Mb×Mb of parity bits, i.e., Hb = [A,B], where, Kb represents the element in the i-th row and j-th column of the basic matrix Hb, where i is the row index of the basic matrix Hb and j is the column index of the basic matrix Hb. Kb = Nb-Mb, where Nb is an integer, i=1, ..., Mb, j=1, ..., Nb. The base matrix Hb includes multiple submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2; The decoding module is used to perform decoding operations on codewords with a preset number of bits based on the fundamental matrix Hb and the expansion factor Z corresponding to the fundamental matrix Hb, to obtain the source information bit sequence, where Z is a positive integer greater than or equal to 1; The upper left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z×Z matrix of each row of the upper left submatrix Hb1 is Kb-2, Kb-1, Kb, Kb+1, or Kb+2. The last four columns of the upper left submatrix Hb1 are a lower left triangular matrix or a quasi-lower left triangular matrix. Nb is greater than or equal to 3*Kb, and Kb takes the value of an integer between 6 and 16. The submatrix formed by the intersection of the last Kb-4 rows and the last Kb-4 columns of the upper left submatrix Hb2 is a lower left triangular matrix of size (Kb-4)×(Kb-4).

14. The apparatus according to claim 13, characterized in that, The source information bit sequence is a sequence of (Nb-Mb)*Z bits; the preset number of bits is Nb*Z bits.

15. An encoder, used in a wireless digital communication system, comprising: The memory and processor are characterized in that, The memory is used to determine the fundamental matrix Hb used for encoding, wherein the fundamental matrix Hb includes a block A of Mb×Kb corresponding to system bits and a block B of Mb×Mb corresponding to parity bits, i.e., Hb = [A,B], where... Kb represents the element in the i-th row and j-th column of the basic matrix Hb, where i is the row index of the basic matrix Hb and j is the column index of the basic matrix Hb. Kb = Nb-Mb, where Nb is an integer, i=1, ..., Mb, j=1, ..., Nb. The base matrix Hb includes multiple submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2; The processor is configured to determine the fundamental matrix Hb and the expansion factor Z corresponding to the fundamental matrix Hb, and to perform LDPC encoding operation on the source information bit sequence to obtain a codeword sequence, wherein Z is a positive integer greater than or equal to 1; The top-left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z×Z matrix of each row of the top-left submatrix Hb1 is Kb-2, Kb-1, Kb, Kb+1, or Kb+2. The last four columns of the top-left submatrix Hb1 are either a lower-left triangular matrix or a lower-left triangular matrix. Nb is greater than or equal to 3*Kb, and Kb takes the value of an integer between 6 and 16. The submatrix formed by the intersection of the last Kb-4 rows and the last Kb-4 columns of the upper left submatrix Hb2 is a lower left triangular matrix or a quasi-lower left triangular matrix of size (Kb-4)×(Kb-4).

16. A decoder, used in a wireless digital communication system, characterized in that, include: The storage module stores the fundamental matrix Hb used for decoding. The fundamental matrix Hb includes a block A of Mb×Kb corresponding to system bits and a block B of Mb×Mb corresponding to parity bits, i.e., Hb = [A, B]. Kb represents the element in the i-th row and j-th column of the basic matrix Hb, where i is the row index of the basic matrix Hb and j is the column index of the basic matrix Hb. Kb = Nb-Mb, where Nb is an integer, i=1, ..., Mb, j=1, ..., Nb. The base matrix Hb includes multiple submatrices, including: the top-left submatrix Hb1 and the top-left submatrix Hb2, wherein the number of rows and columns of the top-left submatrix Hb1 and the top-left submatrix Hb2 are both less than the number of rows and columns of the base matrix Hb, and the top-left submatrix Hb1 is the top-left submatrix of the top-left submatrix Hb2; The processor is configured to determine the fundamental matrix Hb and the expansion factor Z corresponding to the fundamental matrix Hb, and to perform decoding operations on codewords with a preset number of bits to obtain a source information bit sequence, wherein Z is a positive integer greater than or equal to 1; The upper left submatrix Hb1 is formed by the intersection of the first 4 rows and the first Kb+4 columns of the matrix Hb. The number of elements in the corresponding non-zero Z×Z matrix of each row of the upper left submatrix Hb1 is Kb-2, Kb-1, Kb, Kb+1, or Kb+2. The last four columns of the upper left submatrix Hb1 are a lower left triangular matrix or a quasi-lower left triangular matrix. Nb is greater than or equal to 3*Kb, and Kb takes the value of an integer between 6 and 16. The submatrix formed by the intersection of the last Kb-4 rows and the last Kb-4 columns of the upper left submatrix Hb2 is a lower left triangular matrix of size (Kb-4)×(Kb-4).