Check matrix storage method and device, data decoding method and device and electronic equipment

By converting the check matrix of the QC-LDPC code into a base matrix and dividing it into a sub-base matrix, the non-zero term information in each sub-base matrix is ​​solved, and the problems of large storage space, slow transmission speed and complex decoding in long codewords and high code rate scenarios are solved, and more efficient storage and decoding are achieved.

CN119759914AActive Publication Date: 2025-04-04SHANDONG YUNHAI GUOCHUANG CLOUD COMPUTING EQUIP IND INNOVATION CENT CO LTD

Patent Information

Application Number
CN202510251431.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-03-05
Publication Date
2025-04-04
Estimated Expiration
2045-03-05

AI Technical Summary

Technical Problem

In the use scenarios with longer codewords and high code rates, directly storing the check matrix of QC-LDPC codes will lead to problems such as large storage space occupation, slow data transmission speed and high decoding process complexity.

Method used

By obtaining the basis matrix corresponding to the check matrix, dividing it into multiple sub-base matrices with the same data format, and determining the shift value and column index of the non-zero term for each sub-base matrix, multiple sets of data and row end flag information are formed, and stored in columns to obtain the storage matrix.

Benefits of technology

It reduces the use of storage space, improves data transmission speed, and simplifies the complexity of the decoding process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119759914A_ABST
    Figure CN119759914A_ABST
Patent Text Reader

Abstract

The invention discloses a check matrix storage method and device, a data decoding method and device and electronic equipment, and relates to the technical field of data processing, and the check matrix storage method comprises the steps: obtaining a basis matrix corresponding to a check matrix; dividing the basis matrix into a plurality of sub-basis matrixes with the same data format; for each sub-basis matrix, determining a shift value corresponding to each non-zero item in each row in the sub-basis matrix and a column index in the sub-basis matrix, and forming multiple groups of data corresponding to each row and row end mark information; and storing a plurality of groups of data and row end mark information corresponding to each row according to columns to obtain a corresponding storage matrix. Therefore, the column number and / or the row number of each sub-basis matrix are / is reduced relative to the basis matrix, so that a redundant space needing to be aligned when the column index and the shift value of each row of the basis matrix are stored can be reduced, and compared with a scheme of storing based on the column index and the shift value of a non-zero item in each row of the basis matrix, the storage space can be reduced.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of data processing technology, and in particular to a check matrix storage method, a data decoding method, a device and an electronic device. Background Art

[0002] Quasi-cyclic low-density parity-check code (Quasi-cyclic LDPC, QC-LDPC), which usually has a structured check matrix. In hardware implementation, QC-LDPC code can implement the encoding process through shift registers, thereby saving storage space, with high data throughput and excellent error correction performance close to random LDPC code, so it has been more widely studied. However, for scenarios with longer codewords and high code rates, due to the large dimension of the check matrix, directly storing the entire check matrix will use a lot of storage space and will also bring about problems such as slow data transmission speed; on the other hand, during the decoding process, it will also increase the complexity and decoding time of the decoding process. Summary of the invention

[0003] In view of this, embodiments of the present application provide a check matrix storage method, a data decoding method, a device, and an electronic device.

[0004] According to the first aspect of the present application, an embodiment of the present application provides a method for storing a check matrix, including: Get the basis matrix corresponding to the check matrix; Divide the basis matrix into multiple sub-basis matrices with the same data format; For each sub-basis matrix, the shift values ​​corresponding to the non-zero items in each row of the sub-basis matrix and the column index in the sub-basis matrix are determined to form multiple groups of data corresponding to each row and row end flag information; the multiple groups of data corresponding to each row and the row end flag information are stored column by column to obtain the corresponding storage matrix.

[0005] Optionally, the basis matrix is ​​divided into a plurality of sub-basis matrices having the same data format, including: The basis matrix is ​​evenly split by columns to obtain multiple sub-basis matrices with the same data format.

[0006] Optionally, before evenly splitting the base matrix by columns, the check matrix storage method further includes: If it is determined that the number of columns of the base matrix cannot be divided evenly by the preset split number, the number of columns of the base matrix is ​​padded so that the number of columns of the base matrix can be divided evenly by the preset split number.

[0007] Optionally, obtaining a basis matrix corresponding to the check matrix includes: Divide the check matrix according to the dimensions of the submatrices, and determine each submatrix in the check matrix and corresponding position information; Determine the shift value of each submatrix according to a shift value determination rule; A base matrix is ​​formed based on the shift value of each sub-matrix and the position information corresponding to each sub-matrix.

[0008] According to the second aspect of the present application, an embodiment of the present application provides a data decoding method, including: Step 1, initializing the posterior probability and the prior probability based on the data to be decoded; Step 2, for the first round of iteration, based on the row-by-row decoding method, multiple groups of data and row end mark information in multiple storage matrices are read row by row; and based on the multiple groups of data and row end mark information in the multiple storage matrices, according to the decoding rule, the prior probability is updated; and the posterior probability is updated based on the updated prior probability; the storage matrix is ​​obtained by the check matrix storage method of the first aspect or any implementation method of the first aspect; Step 3, for the second round of iteration and the iteration process after the second round, based on the row-by-row decoding and verification method, multiple groups of data and row end mark information in multiple storage matrices are read row by row; and based on the multiple groups of data and row end mark information in the multiple storage matrices, according to the decoding rule, the prior probability is updated; based on the updated prior probability, the posterior probability is updated and the decoding result corresponding to the updated posterior probability is determined; based on the updated posterior probability and the decoding result verification rule, the decoding result is verified to obtain the verification result; Step 4: If the decoding result is determined to be correct based on the verification result, the decoding is stopped; otherwise, step 3 is repeated until the decoding result is determined to be correct or the iteration number threshold is reached.

[0009] Optionally, initializing the posterior probability and the prior probability based on the data to be decoded includes: Initialize the data to be decoded; The initialized data to be decoded is used as the initial value of the posterior probability, and the initial value of the prior probability is set to 0.

[0010] Optionally, based on multiple groups of data in multiple storage matrices and row end flag information, updating the prior probability according to the decoding rule includes: For each storage matrix, based on the shift values ​​corresponding to the non-zero items in the multiple groups of data, the column index in the sub-basis matrix, and the row end flag information, the position of each non-zero item in the check matrix is ​​calculated; Determine the probability difference at the position corresponding to each non-zero item based on the position, the posterior probability and the prior probability of each non-zero item in the check matrix; Based on the probability difference at the position corresponding to each non-zero item of each storage matrix, determine the minimum value, the second minimum value, the cumulative multiplication of the sign bits of the non-zero items in the multiple storage matrices, and the row re-index corresponding to the minimum value and the storage matrix number; The prior probability is updated based on the cumulative multiplication of the minimum value, the second minimum value, the sign bits of the non-zero items in the multiple storage matrices, and the row re-index corresponding to the minimum value and the storage matrix number.

[0011] Optionally, calculating the position of each non-zero item in the check matrix based on the shift values ​​corresponding to the non-zero items in the multiple groups of data, the column index in the sub-basis matrix, and the row end flag information includes: Based on the shift values ​​corresponding to the non-zero items in the multiple groups of data, the column index in the sub-basis matrix, the dimension of the sub-matrix, and the row end flag information, the actual column position corresponding to the first row of each non-zero item in the check matrix is ​​calculated; Based on the actual column position corresponding to the first row of each non-zero item in the check matrix, the actual column position corresponding to the other rows of each non-zero item in the check matrix is ​​calculated.

[0012] Optionally, based on the probability difference at the position corresponding to each non-zero item of each storage matrix, determining the minimum value, the next minimum value, the cumulative multiplication of the sign bits of the non-zero items in the plurality of storage matrices, and the row re-index corresponding to the minimum value and the storage matrix number, comprises: Based on the probability difference at the position corresponding to each non-zero item of each storage matrix, determine the minimum value of each storage matrix and the corresponding row re-index, storage matrix number, and the cumulative multiplication of the next minimum value and the sign bit of the non-zero item; Based on the minimum value of each storage matrix and the corresponding row re-index, storage matrix number, and the cumulative multiplication of the next smallest value and non-zero item sign bit, determine the minimum value of multiple storage matrices and the corresponding row re-index, storage matrix number; and the cumulative multiplication of the next smallest value and non-zero item sign bit.

[0013] Optionally, updating the prior probability based on the minimum value, the next minimum value, the cumulative multiplication of the sign bits of the non-zero items in the plurality of storage matrices, and the row reindex corresponding to the minimum value and the storage matrix number includes: If the row reindex corresponding to the minimum value in the plurality of storage matrices is different from the column index corresponding to the non-zero item in the storage matrix, the prior probability is updated based on the cumulative multiplication of the minimum value in the plurality of storage matrices and the sign bit of the non-zero item; If the row reindex corresponding to the minimum value in multiple storage matrices is the same as the column index corresponding to the non-zero item in the storage matrix, and the storage matrix number of the minimum value is the same as the storage matrix number corresponding to the non-zero item, the prior probability is updated based on the cumulative multiplication of the second smallest value and the sign bit of the non-zero item in the multiple storage matrices.

[0014] According to a third aspect of the present application, an embodiment of the present application provides a check matrix storage device, including: An acquisition module is used to obtain a basis matrix corresponding to the check matrix; A partitioning module, used for partitioning a basis matrix into a plurality of sub-basis matrices having the same data format; The storage module is used to determine, for each sub-basis matrix, the shift values ​​corresponding to the non-zero items in each row of the sub-basis matrix and the column index in the sub-basis matrix to form multiple groups of data corresponding to each row and row end flag information; store the multiple groups of data corresponding to each row and the row end flag information by column to obtain the corresponding storage matrix.

[0015] According to a fourth aspect of the present application, an embodiment of the present application provides a data decoding device, including: An initialization module, used for initializing the posterior probability and the prior probability based on the data to be decoded; A decoding module, for a first round of iteration process, based on a row-by-row decoding method, reading multiple groups of data and row end mark information in multiple storage matrices respectively by row; and updating the prior probability according to the decoding rule based on the multiple groups of data and row end mark information in the multiple storage matrices; and updating the posterior probability based on the updated prior probability; the storage matrix is ​​obtained by the check matrix storage method of the first aspect or any implementation method of the first aspect; An updating module is used for reading multiple groups of data and row end mark information in multiple storage matrices respectively by row based on a row-by-row decoding and verification method for the second round of iteration and subsequent iterations; and updating the prior probability based on the multiple groups of data and row end mark information in the multiple storage matrices according to the decoding rule; updating the posterior probability based on the updated prior probability and determining the decoding result corresponding to the updated posterior probability; verifying the decoding result based on the updated posterior probability and the decoding result verification rule to obtain the verification result; The judgment module is used to stop decoding if it is determined that the decoding result is correct based on the verification result, otherwise repeatedly update the execution content of the module until it is determined that the decoding result is correct or the iteration number threshold is reached.

[0016] According to a fifth aspect of the present application, an embodiment of the present application provides an electronic device, including: At least one processor; and a memory communicatively connected to the at least one processor; wherein the memory stores instructions executable by the at least one processor, and the instructions are executed by the at least one processor so that the at least one processor executes the check matrix storage method as in the first aspect or any embodiment of the first aspect, or the data decoding method as in the second aspect or any embodiment of the second aspect.

[0017] According to the sixth aspect of the present application, an embodiment of the present application provides a computer-readable storage medium, which stores computer instructions, and the computer instructions are used to enable a computer to execute a check matrix storage method such as the first aspect or any embodiment of the first aspect, or a data decoding method such as the second aspect or any embodiment of the second aspect.

[0018] According to the seventh aspect of the present application, an embodiment of the present application provides a computer program product, including a computer program or instructions. When the computer program or instructions are executed by a processor, it implements the check matrix storage method as in the first aspect or any embodiment of the first aspect, or the data decoding method as in the second aspect or any embodiment of the second aspect.

[0019] The check matrix storage method, data decoding method, device and electronic device provided in the embodiments of the present application obtain a basis matrix corresponding to the check matrix; divide the basis matrix into multiple sub-basis matrices with the same data format; for each sub-basis matrix, determine the shift value corresponding to each non-zero item in each row of the sub-basis matrix, and the column index in the sub-basis matrix to form multiple groups of data corresponding to each row and row end flag information; store the multiple groups of data corresponding to each row and the row end flag information by column to obtain the corresponding storage matrix; in this way, the check matrix is ​​converted into a basis matrix, and then the basis matrix is ​​divided into multiple sub-basis matrices. Then, the column index and shift value of the non-zero items in each row of each sub-basis matrix are stored to realize the storage of the check matrix, that is, multiple storage matrices jointly store the column index and shift value of all non-zero items of the base matrix. Since the number of columns and / or rows of each sub-basis matrix is ​​reduced relative to the base matrix, the redundant space required for alignment when storing the column index and shift value of each row of the base matrix can be reduced. Compared with the solution of directly storing the column index and shift value of the non-zero items in each row of the base matrix, or the solution of directly storing the check matrix, the storage space can be reduced and the check matrix can be stored more conveniently.

[0020] The above description is only an overview of the technical solution of the present application. In order to more clearly understand the technical means of the present application, it can be implemented in accordance with the contents of the specification. In order to make the above and other purposes, features and advantages of the present application more obvious and easy to understand, the specific implementation methods of the present application are listed below. BRIEF DESCRIPTION OF THE DRAWINGS

[0021] Figure 1 A schematic diagram of a flow chart of a method for storing a check matrix in an embodiment of the present application; Figure 2 Schematic diagram of a unit matrix in an embodiment of the present application; Figure 3 Schematic diagram of an all-zero matrix in an embodiment of the present application; Figure 4Schematic diagram of a cyclic shift matrix with a shift value of 1 in an embodiment of the present application; Figure 5 A schematic diagram of the format of a storage matrix corresponding to each base matrix in an embodiment of the present application; Figure 6 Schematic diagram of a base matrix in an embodiment of the present application; Figure 7 Schematic diagram of another check matrix storage method in an embodiment of the present application; Figure 8 Schematic diagram of the data decoding method in the embodiment of the present application; Fig. 9 A BER performance diagram obtained based on the parity check matrix storage method and decoding method of the present application; Fig.10 It is a FER performance diagram obtained based on the parity check matrix storage method and decoding method of the present application; Fig.11 This is a schematic diagram of the structure of a check matrix storage device in an embodiment of the present application; Fig.12 This is a schematic diagram of the structure of a data decoding device in an embodiment of the present application; Fig.13 This is a schematic diagram of the hardware structure of an electronic device in an embodiment of the present application. DETAILED DESCRIPTION

[0022] In order to make the purpose, technical solution and advantages of the embodiments of the present application clearer, the technical solution in the embodiments of the present application will be clearly and completely described below in conjunction with the drawings in the embodiments of the present application. Obviously, the described embodiments are part of the embodiments of the present application, not all of the embodiments. Based on the embodiments in the present application, all other embodiments obtained by those skilled in the art without creative work are within the scope of protection of the present application.

[0023] The present application embodiment provides a method for storing a check matrix, such as Figure 1 As shown, including: S101, obtaining a basis matrix corresponding to a check matrix.

[0024] In this embodiment, the check matrix may be a QC-LDPC check matrix, which is a quasi-cyclic LDPC code. Quasi-cyclic LDPC code is an important subset of structured LDPC code, and its corresponding check matrix can be divided into multiple sub-matrices of equal size, each of which is a cyclic shift matrix of the unit matrix or an all-0 matrix, which is very convenient for storage and addressing of the memory, thereby greatly reducing the encoding and decoding complexity of the LDPC code, and the quasi-cyclic LDPC code with a repeated accumulation structure can achieve fast encoding of linear complexity.

[0025] The QC-LDPC check matrix is ​​usually composed of sub-matrices such as the unit matrix, or the cyclic shift matrix of the unit matrix and the all-zero matrix. The sub-matrix can be characterized by a shift value, and the shift value of the sub-matrix represents the value of the unit matrix cyclically shifted to the right. For example, the shift value of the sub-matrix is ​​-1, which represents an all-0 matrix; the shift value of the sub-matrix is ​​0, which represents the unit matrix; the shift value of the sub-matrix is ​​1, which represents the cyclic shift matrix obtained by cyclically shifting the first column of the unit matrix to the right; the shift value of the sub-matrix is ​​2, which represents the cyclic shift matrix obtained by cyclically shifting the first and second columns of the unit matrix to the right. Therefore, for a specific sub-matrix of the QC-LDPC code, as long as the dimension and shift value of the sub-matrix are determined, all the information of the sub-matrix can be obtained.

[0026] In this embodiment, the check matrix can be composed of a unit matrix, a cyclic shift matrix of the unit matrix, and an all-zero matrix. Figure 2 As shown, the all-zero matrix is Figure 3 As shown. The cyclic shift matrix with a shift value of 1 is as follows Figure 4 Therefore, the base matrix H corresponding to the check matrix can be obtained by determining the type of each submatrix in the check matrix, as shown in Figure 5 As shown, -1 represents a matrix of all zeros, 0 represents the identity matrix, and the other numbers in the base matrix represent the values ​​of the identity matrix after cyclic shift to the right. Figure 2-Figure 4 It can be seen that there is only one number in each row of each submatrix that is non-zero. Therefore, for the check matrix, it is only necessary to store the actual column index position of the non-zero items in each row of the base matrix and the shift value of the submatrix corresponding to the non-zero items in each row to confirm the actual position of the non-zero items in the matrix.

[0027] S102, dividing the basis matrix into a plurality of sub-basis matrices with the same data format.

[0028] In this embodiment, when the dimension of the base matrix is ​​large, such as the number of columns of the QC-LDPC matrix adapted in the NAND flash memory, it often reaches hundreds. For this type of matrix, using a storage matrix to store all non-zero items in the base matrix, the requirements for the static random access memory (SRAM) will be more stringent. For example, when the number of base matrix columns exceeds 128, since the storage method in the communication system and the computer is binary storage, in order to align the data format, a larger redundant space is often required to store some relatively small number of columns, which in turn causes a waste of storage space. Non-zero items refer to elements with a shift value other than -1.

[0029] Therefore, in this embodiment, the base matrix may be divided into a plurality of sub-base matrices with the same data format, so that a plurality of storage matrices may be used to store all non-zero items in the base matrix.

[0030] In this embodiment, the base matrix may be divided into multiple sub-base matrices with the same data format based on the rows of the base matrix, or the base matrix may be divided into multiple sub-base matrices with the same data format based on the rows of the base matrix. The same data format may mean the same data size.

[0031] S103, for each sub-basis matrix, determine the shift value corresponding to each non-zero item in each row of the sub-basis matrix and the column index in the sub-basis matrix to form multiple groups of data corresponding to each row and row end flag information; store the multiple groups of data corresponding to each row and the row end flag information by column to obtain a corresponding storage matrix.

[0032] In this embodiment, the position of the first row of non-zero items in the sub-matrix in the check matrix can be calculated by the column index and shift value of the first row of non-zero items in the sub-basis matrix. The positions of the remaining rows of non-zero items in the sub-matrix can also be obtained by shift operations. Therefore, the storage of the sub-basis matrix can be achieved by converting each sub-basis matrix into a special matrix that stores the non-zero item index and corresponding shift value information in each column of the sub-basis matrix. Thus, for each sub-basis matrix, the shift value corresponding to each non-zero item in each row of the sub-basis matrix and the column index in the sub-basis matrix can be determined, and stored by column; and when the non-zero item is determined to be the last non-zero item in the current row of the sub-matrix, a row end flag is added, such as Figure 6 As shown. Wherein Col-idx represents the column index, Factor represents the shift value, and Flag represents the row end flag information. In this embodiment, -1 can be used to represent the row end flag information.

[0033] This solution adds a few bits of row end flag to each row of the base matrix during storage, but since the maximum number of columns or rows is reduced, the redundant space that needs to be aligned is reduced. Therefore, in actual storage, the storage space is reduced, making storage more convenient.

[0034] by Figure 5 Take the H matrix in as an example, with 0 as the index, the 0th and 1st columns of the H matrix are stored as a sub-basis matrix as H0, the 2nd and 3rd columns of the H matrix are stored as a sub-basis matrix as H1, the 4th and 5th columns of the H matrix are stored as a sub-basis matrix as H2, and the 6th and 7th columns of the H matrix are stored as a sub-basis matrix as H3. That is, the actual values ​​stored in the first row of H0 are: 0, 0, -1; the actual values ​​stored in the first row of H1 are 0, 2, 1, 0, -1; the actual values ​​stored in the first row of H2 are 0, 3, -1; the actual values ​​stored in the first row of H3 are 0, 0, 1, 1, -1. Among them, two numbers form a group, which together represent the position of the non-zero items of the sub-basis matrix and the corresponding sub-matrix shift value. The first row of the H matrix can be further understood as H1: [0 0] [-1]; H1: [0 2] [1 0] [-1]; H2: [0 3] [-1]; H3: [0 0] [1 1] [-1]; where the first number represents the column index of the non-zero item in the sub-basis matrix, the second number represents the shift value of the sub-matrix corresponding to the non-zero item, and the last -1 is the sign of the end of the row. When aligning according to the actual width of the SRAM, both the position and the shift value are replaced by -1.

[0035] For the H matrix after the above division, since the maximum number of columns in each sub-basis matrix is ​​1, it is 1 after conversion to binary; the maximum shift value is 3, which is 11 after conversion to binary. Therefore, the bit width of each group of data is calculated and aligned according to 4. Actually, in the storage device, it is: H1: [0 0 0 0] [1 1 1 1][1 1 1 1]; H1: [0 0 1 0 ][0 1 00] [1 1 1 1 ]; H2: [0 0 1 1 ] [1 1 1 1][1 1 1 1]; H3: [0 0 0 0][0 1 0 1] [1 1 11], the total bit width is 12×4, a total of 48 bits.

[0036] If the non-zero items and shift values ​​of a row of the base matrix are stored, the actual stored numbers become 0, 0, 2, 2, 3, 0, 4, 3, 6, 0, 7, 1. Since 7 is converted to binary as 1 1 1, for the sake of alignment, the column index of each non-zero item needs to be calculated as 4 bits. Therefore, the final representation after conversion to binary is: [0000 0000][0010 0010][0011 0000][0100 0011][0110 0011][0111 0001][11111111], a total of 56 bits. The actual usable space is larger.

[0037] The check matrix storage method provided in the embodiment of the present application obtains a basis matrix corresponding to the check matrix; divides the basis matrix into multiple sub-basis matrices with the same data format; for each sub-basis matrix, determines the shift value corresponding to each non-zero item in each row of the sub-basis matrix, and the column index in the sub-basis matrix, to form multiple groups of data corresponding to each row and row end flag information; stores the multiple groups of data corresponding to each row and the row end flag information by column to obtain the corresponding storage matrix; in this way, the check matrix is ​​converted into a basis matrix, and then the basis matrix is ​​divided into multiple sub-basis matrices, and then each sub-basis matrix is ​​stored. The column index and shift value of the non-zero items in each row of the matrix are stored to realize the storage of the check matrix, that is, multiple storage matrices jointly store the column index and shift value of all non-zero items of the base matrix. Since the number of columns and / or rows of each sub-base matrix is ​​reduced relative to the base matrix, the redundant space required for alignment when storing the column index and shift value of each row of the base matrix can be reduced. Compared with the solution of directly storing the column index and shift value of the non-zero items in each row of the base matrix, or the solution of directly storing the check matrix, the storage space can be reduced and the check matrix can be stored more conveniently.

[0038] In an optional embodiment, step S101, obtaining a base matrix corresponding to the check matrix includes: The check matrix is ​​divided according to the dimensions of the submatrix, and each submatrix in the check matrix and the corresponding position information are determined; the shift value of each submatrix is ​​determined according to the shift value determination rule; and a base matrix is ​​formed based on the shift value of each submatrix and the position information corresponding to each submatrix.

[0039] In this embodiment, since the base matrix is ​​composed of multiple sub-matrices, the check matrix is ​​divided according to the dimension of the base matrix, and each sub-matrix in the check matrix and the corresponding position information can be determined. Then, for each sub-matrix, the type of the sub-matrix can be determined, and then the shift value of each sub-matrix can be determined according to the corresponding relationship between the shift value and the sub-matrix type, so as to form a base matrix corresponding to the check matrix.

[0040] In this embodiment, the check matrix is ​​divided according to the dimension of the base matrix, so that the base matrix corresponding to the check matrix can be quickly determined.

[0041] In an optional embodiment, step S102, dividing the basis matrix into a plurality of sub-basis matrices with the same data format, includes: The basis matrix is ​​evenly split by columns to obtain multiple sub-basis matrices with the same data format.

[0042] In specific implementation, the basis matrix may be split into multiple sub-basis matrices with the same data size by column. For example, the basis matrix may be evenly split into four sub-basis matrices with the same data size by column.

[0043] In some implementations, before evenly splitting the base matrix by columns, the check matrix storage method further includes: If it is determined that the number of columns of the base matrix cannot be divided evenly by the preset split number, the number of columns of the base matrix is ​​padded so that the number of columns of the base matrix can be divided evenly by the preset split number.

[0044] In specific implementation, for example, if the number of columns of the base matrix is ​​15 and the preset number of splits is 4, then 15 cannot be divided by 4, that is, the number of columns of the base matrix cannot be divided by the preset number of splits, then the number of columns of the base matrix can be padded to 16, and each item in the padded 16th item is a non-zero item. Thus, 16 can be divided by 4, and when the base matrix is ​​evenly split by column, the base matrix can be evenly split into 4 sub-base matrices. Each sub-base matrix has 4 columns.

[0045] In this embodiment, by padding the number of columns of the base matrix, the base matrix can be evenly split, so that the data format of each sub-matrix is ​​the same and the data is easier to align when used.

[0046] The following is a specific implementation to further illustrate the storage method of the check matrix of the present application. Figure 7As shown, first, the basis matrix H of the check matrix can be obtained. Then the H matrix is ​​divided into 4 equal parts by column. If the size of any sub-basis matrix is ​​smaller than the average matrix when the basis matrix is ​​evenly divided, the sub-basis matrix is ​​aligned according to the size of the average matrix. That is, when the number of base matrix columns cannot be divided evenly by 4, the size of the sub-basis matrix of the last part is aligned according to the size of the sub-basis matrix of other parts. Then each matrix stores the column index and shift value of the column where the non-zero item of each row is located by column, and judges in real time whether it is the last non-zero item of the row. If it is the last non-zero item of the row, add a row end mark, and continue to judge whether it is the last row of the sub-basis matrix. If it is the last row of the sub-basis matrix, end the process; if it is not the last non-zero item of the row, continue to store the column index and shift value of the column where the non-zero item of each row is located by column. If it is not the last row of the sub-basis matrix, store the column index and shift value of the column where the non-zero item of the next row is located, and continue to store the column index and shift value of the column where the non-zero item of each row is located by column until the last row of the matrix. In this way, it is possible to store each non-zero shift value in each row of each sub-basis matrix and the column index in the sub-basis matrix, and store the row end flag information of each row.

[0047] The present application also provides a data decoding method, such as Figure 8 As shown, including: Step 1: Initialize the posterior probability and prior probability based on the data to be decoded.

[0048] In some implementations, initializing the posterior probability and the prior probability based on the data to be decoded includes: Initialize the data to be decoded; use the initialized data to be decoded as the initial value of the posterior probability, and set the initial value of the prior probability to 0.

[0049] In specific implementation, the information of each bit position of the data to be decoded can be converted into an LLR value through the following formula to realize the initialization of the decoded data: LLR = 2ay n / σ 2 ; Among them, y n is the codeword affected by noise after encoding, σ is the logarithmic standard deviation, and a is the average energy of the signal corresponding to the data to be decoded , LLR (Log Likelihood Ratio) is the log likelihood ratio.

[0050] Step 2, for the first round of iteration process, based on the row-by-row decoding method, multiple groups of data and row end mark information in multiple storage matrices are read row by row; and based on the multiple groups of data and row end mark information in the multiple storage matrices, according to the decoding rules, the prior probability is updated; and the posterior probability is updated based on the updated prior probability; the storage matrix is ​​obtained by the check matrix storage method of any of the above-mentioned embodiments.

[0051] In this embodiment, decoding is performed by layering, and each row of multiple storage matrices is regarded as a layer. Therefore, multiple groups of data and row end mark information in multiple storage matrices can be read row by row, and when reading multiple groups of data in each row of each storage matrix, each time a group of data is read, the row weight value of the row of the storage matrix is ​​increased by 1 until the row end mark -1 is read, and the row weight value of each storage matrix is ​​recorded respectively. For the multiple groups of data and row end mark information corresponding to each row read, the position of each non-zero item in the check matrix can be determined based on the multiple groups of data and the row end mark information. Then, the probability difference at the position corresponding to each non-zero item is determined, and the prior probability is updated based on the probability difference at the position corresponding to each non-zero item.

[0052] In some implementations, based on multiple groups of data in multiple storage matrices and row end flag information, updating the prior probability according to the decoding rule includes: For each storage matrix, the position of each non-zero item in the check matrix is ​​calculated based on the shift value corresponding to the non-zero items in the multiple groups of data, the column index in the sub-basis matrix, and the row end mark information; based on the position of each non-zero item in the check matrix, the posterior probability and the prior probability, the probability difference at the position corresponding to each non-zero item is determined; based on the probability difference at the position corresponding to each non-zero item in each storage matrix, the minimum value, the second minimum value, the cumulative multiplication of the sign bits of the non-zero items in multiple storage matrices, and the row re-index and storage matrix number corresponding to the minimum value are determined; based on the minimum value, the second minimum value, the cumulative multiplication of the sign bits of the non-zero items in multiple storage matrices, and the row re-index and storage matrix number corresponding to the minimum value, the prior probability is updated.

[0053] In this embodiment, the probability difference Lq = LQ – Lr, where LQ is the posterior probability and Lr is the prior probability.

[0054] In this embodiment, the row corresponding to the minimum value is re-indexed by the number of non-zero entries of the row of the storage matrix to which the minimum value belongs.

[0055] In this embodiment, the updating formula of the prior probability is as follows: Lr = sign_all × current position symbol × (minimum value / second minimum value) × α; wherein α is a normalization factor, and its value is between 0.5 and 1; sign_all is the cumulative multiplication of the sign bits of the non-zero items in multiple storage matrices.

[0056] In a specific implementation, based on the shift values ​​corresponding to the non-zero items in the multiple groups of data, the column index in the sub-basis matrix, and the row end flag information, the position of each non-zero item in the check matrix is ​​calculated, including: Based on the shift values ​​corresponding to the non-zero items in multiple groups of data, the column index in the sub-basis matrix, the dimension of the sub-matrix, and the row end flag information, the actual column position corresponding to the first row of each non-zero item in the check matrix is ​​calculated; based on the actual column position corresponding to the first row of each non-zero item in the check matrix, the actual column position corresponding to other rows of each non-zero item in the check matrix is ​​calculated.

[0057] For example, the position of the non-zero item in the first row of the submatrix corresponding to the actual check matrix is ​​calculated by the column index of the non-zero item in the sub-basis matrix and the submatrix dimension, that is: Y1= (x – 1)×p + f + 1 (1) Where Y1 represents the actual column position of the first row of non-zero entries in the check matrix, x represents the stored column index, p is the submatrix dimension, and f is the shift value of the submatrix.

[0058] The actual column positions of the non-zero entries in other rows of the submatrix can be determined by the actual column position of the first row.

[0059] Y i+1 = Y i +1 (Y i mod p ≠ 0) (2) Y i+1 = Y i + 1– p (Y i mod p = 0) (3) Where i represents the number of rows in the submatrix, Yi represents the column position of the non-zero items corresponding to other rows in the submatrix, and p is the dimension of the submatrix.

[0060] In a specific implementation, based on the probability difference at the position corresponding to each non-zero item in each storage matrix, the minimum value, the second minimum value, the cumulative multiplication of the sign bits of the non-zero items in multiple storage matrices, and the row re-index corresponding to the minimum value and the storage matrix number are determined, including: Based on the probability difference at the position corresponding to each non-zero item of each storage matrix, the minimum value of each storage matrix and the corresponding row re-index, storage matrix number, and the cumulative multiplication of the next smallest value and the sign bit of the non-zero item are determined; based on the minimum value of each storage matrix and the corresponding row re-index, storage matrix number, and the cumulative multiplication of the next smallest value and the sign bit of the non-zero item, the minimum value in multiple storage matrices and the corresponding row re-index, storage matrix number, and the cumulative multiplication of the next smallest value and the sign bit of the non-zero item are determined.

[0061] In a specific implementation, the prior probability is updated based on the minimum value, the second minimum value, the cumulative multiplication of the sign bits of the non-zero items in the multiple storage matrices, and the row re-index corresponding to the minimum value and the storage matrix number, including: If the row reindex corresponding to the minimum value in multiple storage matrices is different from the column index corresponding to the non-zero item in the storage matrix, the prior probability is updated based on the cumulative multiplication of the minimum value and the sign bits of the non-zero items in the multiple storage matrices; if the row reindex corresponding to the minimum value in multiple storage matrices is the same as the column index corresponding to the non-zero items in the storage matrix, and the storage matrix number of the minimum value is the same as the storage matrix number corresponding to the non-zero item, the prior probability is updated based on the cumulative multiplication of the second smallest value and the sign bits of the non-zero items in the multiple storage matrices.

[0062] Step 3, for the second round of iteration and the iteration process after the second round, based on the row-by-row decoding and verification method, read multiple groups of data and row end mark information in multiple storage matrices respectively by row; and based on the multiple groups of data and row end mark information in the multiple storage matrices, according to the decoding rules, update the prior probability; based on the updated prior probability, update the posterior probability and determine the decoding result corresponding to the updated posterior probability; based on the updated posterior probability and the decoding result verification rule, verify the decoding result to obtain the verification result.

[0063] In this embodiment, the updating formula of the posterior probability is as follows: LQ = Lr + Lq, where Lr is the updated prior probability and Lq is the probability difference corresponding to the current position.

[0064] In this embodiment, the actual codeword c at the position, that is, the decoding result, can be determined according to the positive or negative value of the calculated LQ, where if LQ is greater than 0, c = 0, otherwise, c = 1.

[0065] In this embodiment, when the row end mark of the last row of the storage matrix is ​​read for the first time, it indicates that the first iteration is completed, and all the information of the base matrix H is obtained at this time. When subsequent iterations are performed, after reading the last row end mark of each row of each sub-base matrix, in addition to determining the decoding result, a verification step can also be performed. T = 0, the verification is passed. If H·c T ≠ 0, the verification fails.

[0066] Step 4: If the decoding result is determined to be correct based on the verification result, the decoding is stopped; otherwise, step 3 is repeated until the decoding result is determined to be correct or the iteration number threshold is reached.

[0067] In this embodiment, if the verification is passed, the decoding can be stopped, otherwise the next row of data of the storage matrix is ​​read and step 3 is repeated until it is determined that the decoding result is correct or the iteration number threshold is reached.

[0068] The data decoding method provided in the embodiment of the present application can complete hierarchical decoding based on the matrix storage scheme of the present application. The setting of multiple storage matrices increases the parallelism of decoding, and multiple checks can be performed in one round of iterations, which can accelerate the convergence of decoding and has good decoding performance.

[0069] The data decoding method of the present application is further explained below with a specific implementation.

[0070] The specific steps are: 1. First, determine the submatrix dimension p, and reinitialize the minimum value and the second minimum value of each row of each storage matrix and the row to 0. The base matrix H is stored according to the check matrix storage method of the present application to obtain multiple storage matrices, such as H1, H2, H3 and H4.

[0071] 2. Initialize the data to be decoded and convert the information of each bit position into LLR value using the following formula: LLR = 2ay n / σ 2 Among them, y n is the codeword affected by noise after encoding, σ is the logarithmic standard deviation, and a is the average energy of the signal .

[0072] 3. Initialize the posterior probability to the LLR information, LQ = LLR.

[0073] 4. Simultaneously read multiple storage matrices stored according to the solution of the present application, such as H1, H2, H3 and H4, by row, i.e., the column index position and shift value size of the non-zero item. Each time a set of values ​​(column index and shift value) is read, the row weight value of the row of the storage matrix is ​​increased by 1 until the row end mark "-1" is read, and the row weight row_weight of the four storage matrices at this time is recorded.

[0074] 5. Using the stored non-zero item position and shift value information of the row, calculate the non-zero item position Col_position of each column in the sub-basis matrix using the above formulas (1)-(3).

[0075] 6. Calculate the probability difference Lq = LQ - Lr corresponding to the non-zero position in the actual check matrix corresponding to the row matrix read. (Where Lr is the prior probability, that is, the initial minimum value of the row, initialized to 0).

[0076] 7. When the last row end mark "-1" of the four storage matrices is read, the absolute values ​​of the row weight (row_weight) Lq of each of the p rows in the actual check matrix are compared at the same time, and the minimum value, the second minimum value and the cumulative multiplication of the sign bits of the non-zero items of each row of the four storage matrices are recorded, that is, min_value_H0, sub_min_value_H0, sign_all_H0; min_value_H1, sub_min_value_H1, sign_all_H1; min_value_H, sub_min_value_H2, sign_all_H2; min_value_H3, sub_min_value_H3, sign_all_H3.

[0077] 8. Compare the minimum values ​​of the four storage matrices, select the minimum value min_value and the second minimum value sub_min_value_x among the minimum values ​​of the four storage matrices, and compare the second minimum value with the second minimum value of the storage matrix where the minimum value is located twice to select the true second minimum value in the row. Record the row reindex where the minimum value is located and the number of the storage matrix. At the same time, record the final sign cumulative multiplication sign_all of the corresponding rows of the four storage matrices.

[0078] 9. Compare the column index position of the non-zero item in each row of the four storage matrices with the row reindex of the minimum value of the row. If the column positions are not equal, select the minimum value. If the column positions are the same, compare the matrix numbers. If the matrix numbers are the same, select the second smallest value, otherwise select the second smallest value. Then update Lr. Lr = sign_all × current position sign × (minimum value / second smallest value) × α, α is the normalization factor, the size is between 0.5 and 1.

[0079] 10. Calculate LQ = Lr +Lq.

[0080] 11. Read the second row of data from the storage matrix and repeat steps (4) to (10).

[0081] 12. When the row end mark of the last row of the storage matrix is ​​read, it indicates that the first iteration is completed, and all the information of the basis matrix H is obtained. At this time, the second round of iteration begins.

[0082] 12. The second round of iteration is similar to the first round of iteration. Both are performed row by row. After reading the last row end mark of each row of the four storage matrices, in addition to the process of steps (4) to (10), a verification step is also performed to determine the actual code word c at the position based on the positive or negative value of the calculated LQ. If LQ is greater than 0, c = 0, otherwise, c = 1. The decoded code word is verified. If H·cT = 0, the verification is passed. If H·c T ≠ 0, the verification fails. At this time, read the next row of data in the storage matrix and reread steps (4) to (10). When the row end mark of the last row of the storage matrix is ​​read, it indicates that one round of iteration is completed. When the decoding passes or the maximum number of iterations is reached, the decoding stops.

[0083] The decoding simulation performance of the 24×286 base matrix was tested under the additive white Gaussian noise (AWGM) channel using the parity matrix storage and decoding scheme of this application (the sub-matrix dimension is 128 and the code rate is 0.91). The maximum number of iterations is set to 6 times, and the performance is as follows Fig. 9 and Fig.10 As shown in the figure, it has excellent bit error probability (BER) and frame error rate (FER) performance under high signal-to-noise ratio (SNR), which proves the applicability of the application scheme.

[0084] The present application embodiment provides a check matrix storage device, such as Fig.11 As shown, including: The acquisition module 111 is used to acquire a basis matrix corresponding to the check matrix.

[0085] The division module 112 is used to divide the basis matrix into a plurality of sub-basis matrices with the same data format.

[0086] The storage module 113 is used to determine, for each sub-basis matrix, the shift values ​​corresponding to the non-zero items in each row of the sub-basis matrix and the column index in the sub-basis matrix to form multiple groups of data corresponding to each row and row end flag information; store the multiple groups of data corresponding to each row and the row end flag information by column to obtain the corresponding storage matrix.

[0087] In some embodiments, the division module 112 is used to evenly split the basis matrix by columns to obtain multiple sub-basis matrices with the same data format.

[0088] In some embodiments, before the division module 112 is used to evenly split the base matrix by columns, the division module is also used to pad the number of columns of the base matrix if it is determined that the number of columns of the base matrix cannot be evenly divided by the preset number of divisions, so that the number of columns of the base matrix can be evenly divided by the preset number of divisions.

[0089] In some embodiments, the acquisition module 111 is used to divide the check matrix according to the dimensions of the sub-matrix, determine each sub-matrix in the check matrix and the corresponding position information; determine the shift value of each sub-matrix according to the shift value determination rule; and form a base matrix based on the shift value of each sub-matrix and the position information corresponding to each sub-matrix.

[0090] The present application embodiment provides a data decoding device, such as Fig.12 As shown, including: The initialization module 121 is used to initialize the posterior probability and the prior probability based on the data to be decoded.

[0091] The decoding module 122 is used for reading multiple groups of data and row end flag information in multiple storage matrices row by row based on a row-by-row decoding method for the first round of iteration; and updating the prior probability according to the decoding rule based on the multiple groups of data and row end flag information in the multiple storage matrices; and updating the posterior probability based on the updated prior probability; the storage matrix is ​​obtained by the check matrix storage method in any of the above-mentioned embodiments.

[0092] The updating module 123 is used for reading multiple groups of data and row end mark information in multiple storage matrices by row based on row-by-row decoding and verification for the second round of iteration and subsequent iterations; and updating the prior probability based on the multiple groups of data and row end mark information in the multiple storage matrices according to the decoding rule; updating the posterior probability based on the updated prior probability and determining the decoding result corresponding to the updated posterior probability; verifying the decoding result based on the updated posterior probability and the decoding result verification rule to obtain the verification result.

[0093] The judgment module 124 is used to stop decoding if it is determined based on the verification result that the decoding result is correct, otherwise repeatedly update the execution content of the module until it is determined that the decoding result is correct or the iteration number threshold is reached.

[0094] In some embodiments, the initialization module 121 is used to initialize the data to be decoded; the initialized data to be decoded is used as the initial value of the posterior probability, and the initial value of the prior probability is set to 0.

[0095] In some embodiments, the decoding module 122 is used to calculate the position of each non-zero item in the check matrix for each storage matrix based on the shift value corresponding to the non-zero items in multiple groups of data, the column index in the sub-basis matrix, and the row end flag information; determine the probability difference at the position corresponding to each non-zero item based on the position of each non-zero item in the check matrix, the posterior probability and the prior probability; determine the minimum value, the second minimum value, the cumulative multiplication of the sign bits of the non-zero items in multiple storage matrices, and the row re-index and storage matrix number corresponding to the minimum value based on the probability difference at the position corresponding to each non-zero item in each storage matrix; update the prior probability based on the minimum value, the second minimum value, the cumulative multiplication of the sign bits of the non-zero items in multiple storage matrices, and the row re-index and storage matrix number corresponding to the minimum value.

[0096] In some embodiments, the decoding module 122 is used to calculate the actual column position corresponding to the first row of each non-zero item in the check matrix based on the shift value corresponding to the non-zero item in multiple groups of data, the column index in the sub-basis matrix, the dimension of the sub-matrix, and the row end flag information; based on the actual column position corresponding to the first row of each non-zero item in the check matrix, calculate the actual column position corresponding to other rows of each non-zero item in the check matrix.

[0097] In some embodiments, the decoding module 122 is used to determine the minimum value of each storage matrix and the corresponding row re-index, the storage matrix number, and the cumulative multiplication of the next smallest value and the sign bit of the non-zero item based on the probability difference at the position corresponding to each non-zero item of each storage matrix; based on the minimum value of each storage matrix and the corresponding row re-index, the storage matrix number, and the cumulative multiplication of the next smallest value and the sign bit of the non-zero item, determine the minimum value and the corresponding row re-index, the storage matrix number in multiple storage matrices; and the cumulative multiplication of the next smallest value and the sign bit of the non-zero item.

[0098] In some embodiments, the decoding module 122 is used to update the prior probability based on the cumulative multiplication of the minimum value and the sign bits of the non-zero items in the multiple storage matrices if the row re-index corresponding to the minimum value in multiple storage matrices is different from the column index corresponding to the non-zero items in the storage matrices; if the row re-index corresponding to the minimum value in multiple storage matrices is the same as the column index corresponding to the non-zero items in the storage matrices, and the storage matrix number of the minimum value is the same as the storage matrix number corresponding to the non-zero items, the prior probability is updated based on the cumulative multiplication of the second smallest value and the sign bits of the non-zero items in the multiple storage matrices.

[0099] According to an embodiment of the present application, the present application also provides an electronic device.

[0100] Fig.13 A schematic block diagram of an example electronic device 800 that can be used to implement an embodiment of the present application is shown. The electronic device is intended to represent various forms of digital computers, such as laptop computers, desktop computers, workbenches, personal digital assistants, servers, blade servers, mainframe computers, and other suitable computers. The electronic device can also represent various forms of mobile devices, such as personal digital processing, cellular phones, smart phones, wearable devices, and other similar computing devices. The components shown herein, their connections and relationships, and their functions are merely examples and are not intended to limit the implementation of the present application described and / or required herein.

[0101] like Fig.13As shown, the electronic device 800 includes a computing unit 801, which can perform various appropriate actions and processes according to a computer program stored in a read-only memory (ROM) 802 or a computer program loaded from a storage unit 808 to a random access memory (RAM) 803. In the RAM 803, various programs and data required for the operation of the electronic device 800 can also be stored. The computing unit 801, the ROM 802, and the RAM 803 are connected to each other via a bus 804. An input / output (I / O) interface 805 is also connected to the bus 804.

[0102] Multiple components in the electronic device 800 are connected to the I / O interface 805, including: an input unit 806, such as a keyboard, a mouse, etc.; an output unit 807, such as various types of displays, speakers, etc.; a storage unit 808, such as a disk, an optical disk, etc.; and a communication unit 809, such as a network card, a modem, a wireless communication transceiver, etc. The communication unit 809 allows the electronic device 800 to exchange information / data with other devices through a computer network such as the Internet and / or various telecommunication networks.

[0103] The computing unit 801 may be a variety of general and / or special processing components with processing and computing capabilities. Some examples of the computing unit 801 include, but are not limited to, a central processing unit (CPU), a graphics processing unit (GPU), various dedicated artificial intelligence (AI) computing chips, various computing units running machine learning model algorithms, digital signal processors (DSPs), and any appropriate processors, controllers, microcontrollers, etc. The computing unit 801 performs the various methods and processes described above, such as a check matrix storage method and a data decoding method. For example, in some embodiments, the check matrix storage method and the data decoding method may be implemented as a computer software program, which is tangibly included in a machine-readable medium, such as a storage unit 808. In some embodiments, part or all of the computer program may be loaded and / or installed on the electronic device 800 via the ROM 802 and / or the communication unit 809. When the computer program is loaded into the RAM 803 and executed by the computing unit 801, one or more steps of the check matrix storage method and the data decoding method described above may be executed. Alternatively, in other embodiments, the calculation unit 801 may be configured to execute the check matrix storage method and the data decoding method in any other appropriate manner (for example, by means of firmware).

[0104] Various implementations of the systems and techniques described above herein can be implemented in digital electronic circuit systems, integrated circuit systems, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), systems on chips (SOCs), complex programmable logic devices (CPLDs), computer hardware, firmware, software, and / or combinations thereof. These various implementations can include: being implemented in one or more computer programs that can be executed and / or interpreted on a programmable system including at least one programmable processor, which can be a special purpose or general purpose programmable processor that can receive data and instructions from a storage system, at least one input device, and at least one output device, and transmit data and instructions to the storage system, the at least one input device, and the at least one output device.

[0105] The program code for implementing the method of the present application can be written in any combination of one or more programming languages. These program codes can be provided to a processor or controller of a general-purpose computer, a special-purpose computer, or other programmable data processing device, so that the program code, when executed by the processor or controller, implements the functions / operations specified in the flow chart and / or block diagram. The program code can be executed entirely on the machine, partially on the machine, partially on the machine and partially on a remote machine as a stand-alone software package, or entirely on a remote machine or server.

[0106] The embodiment of the present application provides a computer program product or a computer program, which includes a computer instruction, and the computer instruction is stored in a computer-readable storage medium. The processor of the computer device reads the computer instruction from the computer-readable storage medium, and the processor executes the computer instruction, so that the computer device executes the above-mentioned check matrix storage method and data decoding method of the embodiment of the present application.

[0107] An embodiment of the present application provides a computer-readable storage medium storing executable instructions, wherein executable instructions are stored. When the executable instructions are executed by a processor, the processor will execute the check matrix storage method and data decoding method provided in the embodiment of the present application.

[0108] In some embodiments, a computer-readable storage medium may be a tangible medium that may contain or store a program for use by or in conjunction with an instruction execution system, device, or apparatus. A computer-readable storage medium may be a machine-readable signal medium or a machine-readable storage medium. A computer-readable storage medium may include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, or device, or any suitable combination of the foregoing. More specific examples of computer-readable storage media may include electrical connections based on one or more lines, portable computer disks, hard disks, random access memories (RAM), read-only memories (ROM), erasable programmable read-only memories (EPROM or flash memory), optical fibers, portable compact disk read-only memories (CD-ROM), optical storage devices, magnetic storage devices, or any suitable combination of the foregoing.

[0109] In some embodiments, executable instructions may be in the form of a program, software, software module, script or code, written in any form of programming language (including compiled or interpreted languages, or declarative or procedural languages), and may be deployed in any form, including as a stand-alone program or as a module, component, subroutine or other unit suitable for use in a computing environment.

[0110] As an example, executable instructions may, but need not, correspond to a file in a file system, may be stored as part of a file storing other programs or data, such as in one or more scripts in a HyperText Markup Language (HTML) document, in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files storing one or more modules, subroutines, or code portions).

[0111] By way of example, executable instructions may be deployed to be executed on one computing device, or on multiple computing devices located at one site, or on multiple computing devices distributed across multiple sites and interconnected by a communication network.

[0112] To provide interaction with a user, the systems and techniques described herein can be implemented on a computer having: a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user; and a keyboard and pointing device (e.g., a mouse or trackball) through which the user can provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, the feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form (including acoustic input, voice input, or tactile input).

[0113] The systems and techniques described herein may be implemented in a computing system that includes back-end components (e.g., as a data server), or a computing system that includes middleware components (e.g., an application server), or a computing system that includes front-end components (e.g., a user computer with a graphical user interface or a web browser through which a user can interact with implementations of the systems and techniques described herein), or a computing system that includes any combination of such back-end components, middleware components, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include: a local area network (LAN), a wide area network (WAN), and the Internet.

[0114] A computer system may include a client and a server. The client and the server are generally remote from each other and usually interact through a communication network. The relationship of client and server is generated by computer programs running on respective computers and having a client-server relationship with each other. The server may be a cloud server, a server of a distributed system, or a server combined with a blockchain.

[0115] It should be understood that the various forms of processes shown above can be used to reorder, add or delete steps. For example, the steps recorded in this application can be executed in parallel, sequentially or in different orders, as long as the expected results of the technical solution disclosed in this application can be achieved, and this document is not limited here.

[0116] In addition, the terms "first" and "second" are used for descriptive purposes only and should not be understood as indicating or implying relative importance or implicitly indicating the number of technical features indicated. Therefore, a feature defined as "first" or "second" may explicitly or implicitly include at least one of the features. In the description of this application, the meaning of "plurality" is two or more, unless otherwise clearly and specifically defined.

[0117] The above is only a specific implementation of the present application, but the protection scope of the present application is not limited thereto. Any person skilled in the art who is familiar with the present technical field can easily think of changes or substitutions within the technical scope disclosed in the present application, which should be included in the protection scope of the present application. Therefore, the protection scope of the present application should be based on the protection scope of the claims.

Claims

1. A method for storing a check matrix, characterized in that: include: Get the basis matrix corresponding to the check matrix; Dividing the basis matrix into a plurality of sub-basis matrices having the same data format; For each sub-basis matrix, the shift values ​​corresponding to the non-zero items in each row of the sub-basis matrix and the column index in the sub-basis matrix are determined to form multiple groups of data corresponding to each row and row end flag information; the multiple groups of data corresponding to each row and the row end flag information are stored column by column to obtain a corresponding storage matrix.

2. The check matrix storage method according to claim 1, characterized in that: Dividing the basis matrix into a plurality of sub-basis matrices having the same data format, including: The basis matrix is ​​evenly split by columns to obtain multiple sub-basis matrices with the same data format.

3. The check matrix storage method according to claim 2, characterized in that: Before evenly splitting the base matrix by columns, the method further includes: If it is determined that the number of columns of the base matrix cannot be divided by the preset split number, the number of columns of the base matrix is ​​padded so that the number of columns of the base matrix can be divided by the preset split number.

4. The check matrix storage method according to claim 1, characterized in that: The base matrix corresponding to the check matrix obtained includes: Dividing the check matrix according to the dimensions of the submatrices, and determining each submatrix in the check matrix and corresponding position information; Determine the shift value of each submatrix according to a shift value determination rule; The base matrix is ​​formed based on the shift value of each sub-matrix and the position information corresponding to each sub-matrix.

5. A data decoding method, characterized in that: include: Step 1, initializing the posterior probability and the prior probability based on the data to be decoded; Step 2, for the first round of iteration, based on a row-by-row decoding method, multiple groups of data and row end mark information in multiple storage matrices are read row by row; and updating the prior probability according to the decoding rules based on the multiple groups of data and the row end mark information in the multiple storage matrices; and updating the posterior probability based on the updated prior probability; The storage matrix is ​​obtained by the check matrix storage method according to any one of claims 1 to 4; Step 3, for the second round of iteration and the iteration process after the second round, based on the row-by-row decoding and verification method, multiple groups of data and row end mark information in multiple storage matrices are read row by row; and based on the multiple groups of data and row end mark information in the multiple storage matrices, according to the decoding rule, the prior probability is updated; based on the updated prior probability, the posterior probability is updated and the decoding result corresponding to the updated posterior probability is determined; based on the updated posterior probability and the decoding result verification rule, the decoding result is verified to obtain the verification result; Step 4: If the decoding result is determined to be correct based on the verification result, the decoding is stopped; otherwise, step 3 is repeated until the decoding result is determined to be correct or the iteration number threshold is reached.

6. The data decoding method according to claim 5, characterized in that: Initialize the posterior probability and prior probability based on the data to be decoded, including: Initialize the data to be decoded; The initialized data to be decoded is used as the initial value of the posterior probability, and the initial value of the prior probability is set to 0.

7. The data decoding method according to claim 5, characterized in that: Based on multiple groups of data in multiple storage matrices and row end flag information, the prior probability is updated according to the decoding rules, including: For each storage matrix, based on the shift values ​​corresponding to the non-zero items in the multiple groups of data, the column index in the sub-basis matrix, and the row end flag information, the position of each non-zero item in the check matrix is ​​calculated; Determine the probability difference at the position corresponding to each non-zero item based on the position of each non-zero item in the check matrix, the posterior probability and the prior probability; Based on the probability difference at the position corresponding to each non-zero item of each storage matrix, determine the minimum value, the second minimum value, the cumulative multiplication of the sign bits of the non-zero items in the multiple storage matrices, and the row re-index corresponding to the minimum value and the storage matrix number; The prior probability is updated based on the cumulative multiplication of the minimum value, the second minimum value, the sign bits of the non-zero items in the multiple storage matrices, and the row re-index corresponding to the minimum value and the storage matrix number.

8. The data decoding method according to claim 7, characterized in that: Based on the shift values ​​corresponding to the non-zero items in the multiple groups of data, the column index in the sub-basis matrix, and the row end flag information, the position of each non-zero item in the check matrix is ​​calculated, including: Based on the shift values ​​corresponding to the non-zero items in the multiple groups of data, the column index in the sub-basis matrix, the dimension of the sub-matrix, and the row end flag information, the actual column position corresponding to the first row of each non-zero item in the check matrix is ​​calculated; Based on the actual column position corresponding to the first row of each non-zero item in the check matrix, the actual column position corresponding to the other rows of each non-zero item in the check matrix is ​​calculated.

9. The data decoding method according to claim 7, characterized in that: Based on the probability difference at the position corresponding to each non-zero item of each storage matrix, the minimum value, the second minimum value, the cumulative multiplication of the sign bits of the non-zero items in the multiple storage matrices, and the row re-index corresponding to the minimum value and the storage matrix number are determined, including: Based on the probability difference at the position corresponding to each non-zero item of each storage matrix, determine the minimum value of each storage matrix and the corresponding row re-index, storage matrix number, and the cumulative multiplication of the next minimum value and the sign bit of the non-zero item; Based on the minimum value of each storage matrix and the corresponding row re-index, storage matrix number, and the cumulative multiplication of the next smallest value and non-zero item sign bit, determine the minimum value of multiple storage matrices and the corresponding row re-index, storage matrix number; and the cumulative multiplication of the next smallest value and non-zero item sign bit.

10. The data decoding method according to claim 7, characterized in that: Based on the minimum value, the second minimum value, the cumulative multiplication of the sign bits of the non-zero items in the multiple storage matrices, and the row re-index corresponding to the minimum value and the storage matrix number, the prior probability is updated, including: If the row reindex corresponding to the minimum value in the plurality of storage matrices is different from the column index corresponding to the non-zero item in the storage matrix, the prior probability is updated based on the cumulative multiplication of the minimum value in the plurality of storage matrices and the sign bit of the non-zero item; If the row reindex corresponding to the minimum value in multiple storage matrices is the same as the column index corresponding to the non-zero item in the storage matrix, and the storage matrix number of the minimum value is the same as the storage matrix number corresponding to the non-zero item, the prior probability is updated based on the cumulative multiplication of the second smallest value and the sign bit of the non-zero item in the multiple storage matrices.

11. A check matrix storage device, characterized in that: include: An acquisition module is used to acquire a basis matrix corresponding to the check matrix; A division module, used for dividing the base matrix into a plurality of sub-base matrices with the same data format; The storage module is used to determine, for each sub-basis matrix, the shift values ​​corresponding to the non-zero items in each row of the sub-basis matrix and the column index in the sub-basis matrix to form multiple groups of data corresponding to each row and row end flag information; store the multiple groups of data corresponding to each row and the row end flag information by column to obtain the corresponding storage matrix.

12. A data decoding device, characterized in that: include: An initialization module, used for initializing the posterior probability and the prior probability based on the data to be decoded; A decoding module is used for reading multiple groups of data and row end mark information in multiple storage matrices row by row based on a row-by-row decoding method in the first round of iteration process; and updating the prior probability according to the decoding rules based on the multiple groups of data and the row end mark information in the multiple storage matrices; and updating the posterior probability based on the updated prior probability; The storage matrix is ​​obtained by the check matrix storage method according to any one of claims 1 to 4; An updating module is used for reading multiple groups of data and row end mark information in multiple storage matrices respectively by row based on a row-by-row decoding and verification method for the second round of iteration and subsequent iterations; and updating the prior probability based on the multiple groups of data and row end mark information in the multiple storage matrices according to the decoding rule; updating the posterior probability based on the updated prior probability and determining the decoding result corresponding to the updated posterior probability; verifying the decoding result based on the updated posterior probability and the decoding result verification rule to obtain the verification result; The judgment module is used to stop decoding if it is determined that the decoding result is correct based on the verification result, otherwise repeatedly update the execution content of the module until it is determined that the decoding result is correct or the iteration number threshold is reached.

13. An electronic device, characterized in that: include: at least one processor; and a memory communicatively connected to the at least one processor; wherein the memory stores instructions executable by the at least one processor, and the instructions are executed by the at least one processor so that the at least one processor executes the check matrix storage method as described in any one of claims 1 to 4 or the data decoding method as described in any one of claims 5 to 10.

14. A computer-readable storage medium, characterized in that: The computer-readable storage medium stores computer instructions, and the computer instructions are used to enable a computer to execute the check matrix storage method as described in any one of claims 1 to 4 or the data decoding method as described in any one of claims 5 to 10.

15. A computer program product comprising a computer program or instructions, characterized in that When the computer program or instruction is executed by a processor, the check matrix storage method according to any one of claims 1 to 4 or the data decoding method according to any one of claims 5 to 10 is implemented.

Citation Information

Patent Citations

  • Information processing method, device and communication device

    CN111066253A

  • Error correction coding check matrix generation method and device and storage medium

    CN117040543A

  • Method, device and equipment for improving throughput rate of QC-LDPC decoder

    CN117375636A

  • Configurable LDPC decoding method and device based on 5G-NR

    CN118554957A

  • LDPC code parallel GPU decoding method and system

    CN119449046A

Cited By

  • Data processing method and device, electronic equipment, storage medium and program product

    CN120934542A

  • Data processing method and device, electronic equipment, storage medium and program product

    CN120934542B