Low-Density Parity-Check Code Decoding Method, Device, Terminal Device, and Storage Medium
By combining codeword information and low-density parity check matrix for initialization and verification, the problem of large storage space of traditional decoders is solved and efficient decoding operations are achieved.
Patent Information
- Application Number
- CN202510542055.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2025-04-28
- Publication Date
- 2025-07-29
- Estimated Expiration
- 2045-04-28
AI Technical Summary
Traditional LDPC decoders need to store a large amount of intermediate information during the decoding process, occupying additional storage space.
The column-based decoding method is adopted, by combining the input codeword information and the low-density parity check matrix for initialization, the non-zero element check value is calculated, and the feature value is updated when the decoding is successful or failed, reducing the need to store intermediate information.
Reduces storage space requirements, improves work efficiency, reduces cache requirements, and saves hardware storage space.
Smart Images

Figure CN120074547B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the technical field of data verification, and particularly to a method, device, terminal device and storage medium for decoding low-density parity-check codes. Background Art
[0002] QC-LDPC stands for Array Quasi-cyclic low-density parity-check, which is a quasi-cyclic low-density parity-check code. Due to its excellent error correction performance and hardware structure, it is widely used in SSD main control chips. The traditional LDPC decoder uses row-by-row decoding of QC-LDPC codes. The disadvantage of this method is that a large amount of intermediate information needs to be stored during the decoding process, and the positions of the effective blocks of the matrix need to be stored, occupying additional storage space. Summary of the Invention
[0003] In view of this, embodiments of this application provide a method for decoding low-density parity-check codes, which can effectively solve problems such as large occupied storage space.
[0004] In a first aspect, embodiments of this application provide a method for decoding low-density parity-check codes, including:
[0005] Combining the input codeword information with a preset low-density parity-check matrix for initialization to obtain initialization decoding information, and obtaining the eigenvalue of each row of the initialization decoding information;
[0006] Calculating the check node check value of each non-zero element in the current column of the initialization decoding information according to the eigenvalue;
[0007] Decoding according to all the check node check values in the current column and the codeword information to obtain the decoding result of the current column;
[0008] Obtaining the historical decoding result, calculating the syndrome according to the historical decoding result, if the syndrome is 0, the decoding is successful, and outputting the decoding result;
[0009] If the syndrome is not 0, update all the eigenvalues, then use the next column as the current column, and execute the step of calculating the check node check value of each non-zero element in the current column of the initialization decoding information according to the eigenvalue.
[0010] In some embodiments, the combining the input codeword information with a preset low-density parity-check matrix for initialization to obtain initialization decoding information, and obtaining the eigenvalue of each row of the initialization decoding information includes:
[0011] Multiplying the codeword information by the low-density parity-check matrix to obtain initialization decoding information;
[0012] Determine the current minimum value, the current second minimum value, the current minimum value position, the current second minimum value position in each row of the initialization decoding information in sequence, as well as the historical minimum value, the historical second minimum value, the historical minimum value position, and the historical second minimum value position during the previous round of verification;
[0013] Determine the symbols corresponding to all non-zero elements in the initialization decoding information, and calculate the symbol product of non-zero elements in each row to obtain the check node symbol bits.
[0014] In some embodiments, calculating the check node check values of each non-zero element in the current column of the initialization decoding information according to the eigenvalue includes:
[0015] Determine the check node symbol bits and the relative minimum value of each non-zero element in the current column; the relative minimum value is the smaller one of the historical minimum value and the current minimum value;
[0016] Update the check node symbol bits of each non-zero element;
[0017] Calculate the check node check values of each non-zero element according to the updated check node symbol bits and the relative minimum value;
[0018] The calculation expression of the check node check value is:
[0019] C2V = CN_sign * min * alpha;
[0020] In the formula, C2V is the check node check value, CN_sign is the check node symbol bit, min is the relative minimum value, and alpha is a preset parameter.
[0021] In some embodiments, the method further includes:
[0022] If the position of any non-zero element in the current column is the historical minimum value position of the corresponding row, set the historical minimum value of the corresponding row to the historical second minimum value, set the historical minimum value position to the historical second minimum value position, then set the historical second minimum value to the maximum value, and set the historical second minimum value position to be empty;
[0023] If the position of any non-zero element in the current column is the historical second minimum value position of the corresponding row, set the historical second minimum value of the corresponding row to the maximum value, and set the historical second minimum value position to be empty.
[0024] In some embodiments, obtaining the historical decoding result and calculating the syndrome according to the historical decoding result includes:
[0025] Obtain the decoding result obtained by decoding in the current column in the previous round as the historical decoding result, and the syndrome calculated in the current column in the previous round as the historical syndrome;
[0026] Calculate the syndrome according to the historical decoding result, the historical syndrome, the decoding result of the current column, and the low-density parity-check matrix;
[0027] The calculation expression of the syndrome is:
[0028] S = S’ + H * (z + z0) T ;
[0029] Where S is the syndrome, S’ is the historical syndrome, H represents the data of the current column of the low-density parity-check matrix, z is the decoding result of the current column, and z0 is the historical decoding result.
[0030] In some embodiments, the decoding the current column according to all the check node check values and the codeword information includes:
[0031] Add all the check node check values of the current column and the codeword information corresponding to the current column to obtain a checksum, and take the sign bit of the checksum as the decoding result of the current column.
[0032] In some embodiments, the updating all the eigenvalue includes:
[0033] Calculate the difference between the checksum and the check node check values of each position in the current column to obtain variable node check values, and update the corresponding non-zero elements of the current column with the variable node check values;
[0034] According to the updated non-zero elements, update the current minimum value, the current second minimum value, the current minimum value position, the current second minimum value position, the check node sign bit, and the signs corresponding to each non-zero element.
[0035] In a second aspect, the present application further provides a low-density parity-check code decoding device, including:
[0036] An initialization module, configured to perform initialization in combination with the input codeword information and a preset low-density parity-check matrix to obtain initialization decoding information, and obtain the eigenvalues of each row of the initialization decoding information;
[0037] A calculation module, configured to calculate the check node check values of each non-zero element of the current column of the initialization decoding information according to the eigenvalues;
[0038] A decoding module, configured to perform decoding based on all the check node check values and the codeword information of the current column, so as to obtain the decoding result of the current column;
[0039] A check module, configured to obtain a historical decoding result, calculate a syndrome according to the historical decoding result, and if the syndrome is 0, the decoding is successful, and output the decoding result;
[0040] An updating module, configured to, if the syndrome is not 0, update all the eigenvalue, then use the next column as the current column, and execute the step of calculating the check node check values of all non-zero elements in the current column of the initialized decoding information according to the eigenvalue.
[0041] In a third aspect, the present application further provides a terminal device, where the terminal device includes a processor and a memory, the memory stores a computer program, and the processor is configured to execute the computer program to implement the low-density parity-check code decoding method.
[0042] In a fourth aspect, the present application further provides a computer-readable storage medium, which stores a computer program, and when the computer program is executed on a processor, the low-density parity-check code decoding method is implemented.
[0043] The embodiments of the present application have the following beneficial effects:
[0044] The low-density parity-check code decoding method of the present application, by performing decoding column by column, reduces the intermediate values that need to be cached. Only the non-zero elements and eigenvalues in the matrix need to be stored to perform the decoding operation for each column, reducing the storage space requirement, thereby increasing the working efficiency. Description of the Drawings
[0045] In order to more clearly illustrate the technical solutions of the embodiments of the present application, the following will briefly introduce the drawings required in the embodiments. It should be understood that the following drawings only show some embodiments of the present application, and therefore should not be regarded as limiting the scope. For those of ordinary skill in the art, other related drawings can be obtained based on these drawings without creative efforts.
[0046] Figure 1 Shows a schematic flowchart of a low-density parity-check code decoding method according to an embodiment of the present application;
[0047] Figure 2 Shows a schematic flowchart of another low-density parity-check code decoding method according to an embodiment of the present application;
[0048] Figure 3 Shows a schematic structural diagram of a low-density parity-check code decoding device according to an embodiment of the present application. Detailed implementation manners
[0049] The technical solutions in the embodiments of the present application will be clearly and completely described below with reference to the accompanying drawings in the embodiments of the present application. Obviously, the described embodiments are only a part of the embodiments of the present application, rather than all the embodiments.
[0050] The components of the embodiments of the present application generally described and illustrated in the drawings herein may be arranged and designed in a variety of different configurations. Therefore, the following detailed description of the embodiments of the present application provided in the drawings is not intended to limit the scope of the claimed present application, but merely represents selected embodiments of the present application. All other embodiments obtained by those skilled in the art based on the embodiments of the present application without creative efforts belong to the scope of protection of the present application.
[0051] In the following, the terms "including", "having" and their cognates that can be used in various embodiments of the present application are only intended to indicate specific features, numbers, steps, operations, elements, components or combinations of the foregoing items, and should not be construed as first excluding the existence of one or more other features, numbers, steps, operations, elements, components or combinations of the foregoing items or increasing the possibility of one or more features, numbers, steps, operations, elements, components or combinations of the foregoing items. In addition, the terms "first", "second", "third", etc. are only used for distinguishing descriptions and cannot be understood as indicating or implying relative importance.
[0052] Unless otherwise defined, all terms (including technical terms and scientific terms) used herein have the same meaning as commonly understood by those of ordinary skill in the art to which the various embodiments of the present application belong. The terms (such as those defined in a general use dictionary) will be interpreted as having the same meaning as the contextual meaning in the relevant technical field and will not be interpreted as having an idealized meaning or being overly formal, unless clearly defined in the various embodiments of the present application.
[0053] The following will describe in detail some implementation manners of the present application with reference to the accompanying drawings. Without conflict, the following embodiments and the features in the embodiments may be combined with each other.
[0054] The traditional LDPC decoder uses row-by-row decoding of QC-LDPC codes. The disadvantage of this method is that a large amount of intermediate information needs to be stored during the decoding process, and the effective block positions of the matrix need to be stored, occupying additional storage area. Therefore, the present application provides a low-density parity-check code decoding method. By column-by-column decoding, it is not necessary to store a large amount of intermediate information like row-by-row decoding, saving storage space. Only the effective block positions of the matrix need to be stored, saving storage space.
[0055] The following describes the low-density parity-check code decoding method in conjunction with some specific embodiments.
[0056] Figure 1 FIG. shows a flowchart of a low-density parity-check code decoding method according to an embodiment of the present application. Exemplarily, the low-density parity-check code decoding method includes steps S100 to S500.
[0057] Step S100, combining the input codeword information with a preset low-density parity-check matrix, performing initialization to obtain initialization decoding information, and obtaining the eigenvalues of each row of the initialization decoding information.
[0058] The method of this embodiment is applied to the process of checking the input codeword information through a low-density parity-check matrix. Among them, the offset value of each row of the low-density parity-check matrix of this embodiment is an arithmetic progression. In this way, as long as the rule of the arithmetic progression is known, it is not necessary to store a large number of offset values, and only the position needs to be known to calculate the offset value for offset operation.
[0059] Among them, the input codeword information is a set of floating-point data, and the data volume of this set of data is the same as the number of columns of the low-density parity-check matrix.
[0060] For example, if the low-density parity-check matrix is a 3*3 matrix, the input codeword information is data with three floating-point numbers, such as (1.1, 1.2, 1.3), etc. For the convenience of description, the input codeword information is denoted as Q, and the low-density parity-check matrix is denoted as H.
[0061] The codeword information is combined with the low-density parity-check matrix for initialization to obtain initialization decoding information. Specifically, it is the data of each row of the low-density parity-check matrix multiplied by the data at the corresponding position of the codeword information to obtain an initial matrix.
[0062] For example, if the low-density parity-check matrix is: , then for the codeword information (1.1, 1.2, 1.3), the finally obtained initialization decoding information is .
[0063] After obtaining the initialization decoding information, it is necessary to obtain the eigenvalues of each row of the initialization decoding information. In this embodiment, the eigenvalues are the current minimum value, the current second minimum value, the current minimum value position, the current second minimum value position, and the historical minimum value, historical second minimum value, historical minimum value position, and historical second minimum value position during the previous round of verification.
[0064] At the same time, it is also necessary to determine the symbols corresponding to all non-zero elements in the initialization decoding information, and calculate the symbol product of the non-zero elements in each row to obtain the check node symbol bits. For the matrix in the above example, its symbols are all plus signs, but in some embodiments, some elements may be minus signs. For the calculation of the check node symbol bits, for example, if the data in a certain row of the initial matrix is 1.2, 0, 1.3, then its symbol product is +1 * +1 = +1.
[0065] In this embodiment, the decoding is column-wise decoding. For a 3 * 3 matrix, one round of decoding means that after the decoding operations of the three columns of the matrix are completed, one round of decoding ends. Therefore, when initializing these eigenvalues for the first time, the current minimum value, the current second minimum value, the current minimum value position, and the current second minimum value position are all set to empty, and the historical minimum value, the historical second minimum value, the historical minimum value position, and the historical second minimum value position store the values that meet the requirements judged according to the values in the initialization decoding information. During the subsequent decoding process, the current minimum value, the current second minimum value, the current minimum value position, and the current second minimum value position will be slowly updated as the decoding progresses. And in each subsequent round, the historical minimum value, the historical second minimum value, the historical minimum value position, and the historical second minimum value position are the current minimum value, the current second minimum value, the current minimum value position, and the current second minimum value position in the previous round.
[0066] Step S200, according to the eigenvalue, calculate the check node check values of each non-zero element in the current column of the initialization decoding information.
[0067] After determining the eigenvalue, determine the check node symbol bits and the relative minimum value of each non-zero element in the current column. The relative minimum value is the smaller one of the historical minimum value and the current minimum value.
[0068] For the calculation of the check node symbol bits, an update also needs to be performed before the calculation, that is, obtain the historical check node symbol bits and calculate the product of the historical check node symbol bits and the symbol of the current non-zero element.
[0069] The 0s in the matrix are invalid data, and the non-zero elements are valid data. Only the valid data participates in the calculation. Therefore, only the check node symbol bits and the relative minimum value of the non-zero elements are concerned.
[0070] If it is -1.2, 0, 1.3, then its symbol product is -1 * +1 = -1, and so on. The check node symbol bits of each non-zero element above can be calculated.
[0071] The calculation expression for the check node check value is:
[0072] C2V = CN_sign * min * alpha;
[0073] Wherein, C2V is the check node check value, CN_sign is the check node sign bit, min is the relative minimum value, alpha is a fixed parameter, usually 0.5 or 0.75.
[0074] The check node check value is the check value from the check node to the variable node.
[0075] Among them, when calculating the above check node check value, there are also some special cases. If the position of any non-zero element in the current column is the position of the historical minimum value of the current row, then set the historical minimum value of the current row to the historical second minimum value, set the historical minimum value position to the historical second minimum value position, then set the historical second minimum value to the maximum value, and set the historical second minimum value position to empty.
[0076] If the position of any non-zero element in the current column is the position of the historical second minimum value of the current row, then set the historical second minimum value of the current row to the maximum value and set the historical second minimum value position to empty. The maximum value is a preset value representing the maximum value, which can be set according to the actual situation.
[0077] The above processing means that when the condition is met, the data in this column has been used and is not suitable for subsequent calculations. And this column is the historical second minimum value or the minimum value, so the corresponding value should be cleared to avoid interfering with subsequent calculations.
[0078] Here, take a row of three-column data as an example for illustration, as shown in the following table:
[0079]
[0080] This table shows the changes in the historical minimum value, historical second minimum value, and their positions when a certain row is checked against the 1st, 2nd, and 3rd columns.
[0081] When checking the first column, its historical minimum value, historical second minimum value, historical minimum value position, and historical second minimum value position do not change and are the initial values. At this time, it can be found that the first column is the position of the historical second minimum value. Therefore, according to the above description, the historical second minimum value and the historical second minimum value position need to be set to the maximum and empty respectively. This means that the data in this column has been used and is not suitable for subsequent calculations. And this column is the historical second minimum value, so the historical second minimum value should be cleared.
[0082] Similarly, when decoding the second column, the second column is the column where the historical minimum value is located. At this time, the historical minimum value should also be cleared. In this way, when reaching the third column, the historical minimum value and the historical second minimum value will not participate in the above calculations, and only the current minimum value will be used for calculations.
[0083] Step S300: Decode according to all the check node check values and the codeword information of the current column to obtain the decoding result of the current column.
[0084] During decoding, add the check node check values of all non-zero elements in the current column and the codeword information corresponding to the current column to obtain a decoding sum, denoted as Q. sum Keep the sign bit of the decoding sum, which is the decoding result.
[0085] For example, if the codeword information is (1.1, 1.2, 1.3) and the first column is currently being decoded, and the check node check values of the non-zero elements in the first column are (0.3, 0, 0.5), at this time, it can be known that there are 2 check node check values in the first column (0 is an invalid bit), then the calculation result is Q. sum = 1.1 + 0.3 + 0.5 = 1.9. Taking the sign bit means discarding the digits after the decimal point, so the decoding result is 1.
[0086] Step S400: Obtain the historical decoding result, calculate the syndrome according to the historical decoding result. If the syndrome is 0, the decoding is successful, and output the decoding result.
[0087] After obtaining the decoding result, it is also necessary to check whether the decoding result is correct. In this embodiment, the syndrome S is calculated by combining the historical decoding result, the historical check code, and the current decoding result.
[0088] Among them, the calculation expression of the check code S is:
[0089] S = S’ + H * (z + z0) T ;
[0090] In the formula, S is the check code, S’ is the historical check code, H represents the current column data of the low-density parity-check matrix, z is the decoding result of the current column, and z0 is the historical decoding result.
[0091] When S = 0, it indicates that the decoding is successful. If it is not 0, it indicates that the decoding fails.
[0092] When the decoding is successful, directly output the decoding result z.
[0093] For example, when the input codeword information is (1.1, 1.2, 1.3), the decoding of its first column is successful, and the decoding result of the first column is 1, then the final output result is (1, 1.2, 1.3). Another example is that none of the first-round decodings are successful, and each column obtains a decoding result of (1, 2, 3). In the next-round decoding, the decoding of the first column is successful, and the decoding result is 2, then the finally output decoding result is (2, 2, 3). And so on, output the decoding result.
[0094] Step S500: If the check syndrome is not 0, update all the eigenvalues, then take the next column as the current column, and execute the step of calculating the check node check values of all non-zero elements in the current column of the initialized decoding information according to the eigenvalues.
[0095] When decoding fails, it is necessary to update the features and then prepare for decoding the next column. At this time, Q obtained from the previous calculation will be used. sum Subtract the check node check values corresponding to each row of the current column from Q to obtain the variable node to check node variable node check values V2C of all non-zero elements in the current column. Use this V2C to update all non-zero elements in this column, and then for each non-zero element, update the check node sign bit.
[0096] Among them, for each newly calculated value in each row (replaced by V2C), if its absolute value is less than the current minimum value, then assign the current minimum value to the current second minimum value. Assign the position of the current minimum value to the position of the current second minimum value, then set the current minimum value to the value of this V2C, and set the minimum value position to the column where this V2C is located.
[0097] If for each newly calculated V2C in each row, its absolute value is less than the current second minimum value but greater than the current minimum value, then only change the data related to the current second minimum value to the data related to this V2C.
[0098] In this way, the update of all eigenvalues is completed. These updated eigenvalues can be used in the decoding process of the next column, and then start to repeat the operation of step S200.
[0099] Among them, after the decoding of the last column is completed, it is necessary to set the current minimum value and the current second minimum value to the historical minimum value and the historical second minimum value, and then perform the next round of decoding operation.
[0100] As Figure 2 shown, in the low-density parity-check code decoding method of this embodiment, after obtaining the eigenvalues during initialization, decoding can be performed. If the decoding is successful, output; if the decoding fails, update the eigenvalues in the way of this step, and then perform the next round of decoding, and so on in a loop. Each time decoding is performed, the eigenvalues are updated and corrected, so that successful decoding can be achieved.
[0101] It should be noted that Q used in this step sum does not need to be cached. After the calculation of the current column is completed, this Q sum can be discarded and will not be used in subsequent loops. It can be seen that in the steps S200 to S500 that need to be looped, there is no situation where historical Q sum is used. However, in the method of decoding row by row, this Q sumIt needs to be cached and applied in the decoding of other lines. Therefore, the method of this embodiment reduces the caching requirement for a type of data and reduces the requirement for cache space in the hardware.
[0102] In the low-density parity-check code decoding method of this embodiment, through column-by-column decoding, a variable Q that needs to be cached in row-by-row decoding sum does not have to be cached, and no other data that needs to be cached is added, reducing the requirement for cache space. Only the positions of the valid blocks of the matrix need to be stored, reducing the hardware requirement and indirectly increasing the computing efficiency and data access efficiency at the same time.
[0103] Figure 3 FIG. shows a schematic structural diagram of a low-density parity-check code decoding device according to an embodiment of the present application. Exemplarily, the device includes:
[0104] An initialization module 10, configured to perform initialization by combining the input codeword information with a preset low-density parity-check matrix to obtain initialization decoding information, and obtain the eigenvalue of each row of the initialization decoding information;
[0105] A calculation module 20, configured to calculate the check node check value of each non-zero element in the current column of the initialization decoding information according to the eigenvalue;
[0106] A decoding module 30, configured to perform decoding according to all the check node check values in the current column and the codeword information to obtain the decoding result of the current column;
[0107] A check module 40, configured to obtain a historical decoding result, calculate a syndrome according to the historical decoding result, and if the syndrome is 0, the decoding is successful, and output the decoding result;
[0108] An update module 50, configured to, if the syndrome is not 0, update all the eigenvalues, and then use the next column as the current column, and execute the step of calculating the check node check value of each non-zero element in the current column of the initialization decoding information according to the eigenvalue.
[0109] The present application also provides a terminal device, which includes a processor and a memory. The memory stores a computer program, and the processor is configured to execute the computer program to implement the low-density parity-check code decoding method.
[0110] The present application also provides a computer-readable storage medium, which stores a computer program. When the computer program is executed on a processor, the low-density parity-check code decoding method is implemented.
[0111] It can be understood that the device in this embodiment corresponds to the method in the above embodiment, and the optional items in the above embodiment are equally applicable to this embodiment, so they will not be described again here.
[0112] Among them, the processor can be an integrated circuit chip with signal processing capabilities. The processor can be a general-purpose processor, including at least one of a central processing unit (CPU), a graphics processing unit (GPU), a network processor (NP), a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, and discrete hardware components. The general-purpose processor can be a microprocessor or the processor can also be any conventional processor, etc., and can implement or execute the various methods, steps, and logic block diagrams disclosed in the embodiments of the present application.
[0113] The memory can be, but is not limited to, a random access memory (RAM), a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), etc. Among them, the memory is used to store a computer program, and after receiving an execution instruction, the processor can execute the computer program accordingly.
[0114] In several embodiments provided by the present application, it should be understood that the disclosed devices and methods can also be implemented in other ways. The device embodiments described above are merely illustrative. For example, the flowcharts and structural diagrams in the accompanying drawings show the possible architectures, functions, and operations of devices, methods, and computer program products according to multiple embodiments of the present application. In this regard, each block in the flowchart or block diagram can represent a module, a program segment, or a part of code, and the module, program segment, or part of code contains one or more executable instructions for implementing the specified logical function. It should also be noted that in an alternative implementation, the functions marked in the blocks can occur in a different order than that marked in the accompanying drawings. For example, two consecutive blocks can actually be executed substantially in parallel, and they can sometimes be executed in the reverse order, depending on the functions involved. It should also be noted that each block in the structural diagram and / or flowchart, as well as the combination of blocks in the structural diagram and / or flowchart, can be implemented by a dedicated hardware-based system that performs the specified functions or actions, or can be implemented by a combination of dedicated hardware and computer instructions.
[0115] In addition, each functional module or unit in various embodiments of the present application can be integrated together to form an independent part, or each module can exist alone, or two or more modules can be integrated to form an independent part.
[0116] If the above functions are implemented in the form of software functional modules and sold or used as independent products, they can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application, in essence, or the part that contributes to the prior art, or a part of this technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions for causing a computer device (which can be a smart phone, a personal computer, a server, or a network device, etc.) to execute all or part of the steps of the methods described in various embodiments of the present application.
[0117] The above is only the specific implementation manner of the present application, but the protection scope of the present application is not limited thereto. Any person skilled in the art within the technical scope disclosed by the present application can easily think of changes or substitutions, which should all be covered by the protection scope of the present application.
Claims
1. A method for decoding a low-density parity-check code, characterized in that, Including: Combining the input codeword information with a preset low-density parity-check matrix for initialization to obtain initialization decoding information, and obtaining the eigenvalues of each row of the initialization decoding information; Calculating the check node check values of each non-zero element in the current column of the initialization decoding information according to the eigenvalues; Adding the check node check values of all non-zero elements in the current column and the codeword information corresponding to the current column to obtain a decoding sum, and retaining the sign bit of the decoding sum to obtain a decoding result; Obtaining a historical decoding result, calculating a syndrome according to the historical decoding result, if the syndrome is 0, the decoding is successful, and outputting the decoding result; If the syndrome is not 0, updating all the eigenvalues, then taking the next column as the current column, and performing the step of calculating the check node check values of each non-zero element in the current column of the initialization decoding information according to the eigenvalues.
2. The low-density parity-check code decoding method according to claim 1, wherein The combining the input codeword information with a preset low-density parity-check matrix for initialization to obtain initialization decoding information, and obtaining the eigenvalues of each row of the initialization decoding information includes: Multiplying the codeword information by the low-density parity-check matrix to obtain initialization decoding information; Sequentially determining the current minimum value, the current second minimum value, the current minimum value position, the current second minimum value position in each row of the initialization decoding information, and the historical minimum value, the historical second minimum value, the historical minimum value position, and the historical second minimum value position during the previous round of checking; Determining the signs corresponding to all non-zero elements in the initialization decoding information, and calculating the symbol product of non-zero elements in each row to obtain the check node symbol bit.
3. The low-density parity-check code decoding method according to claim 2, wherein The calculating the check node check values of each non-zero element in the current column of the initialization decoding information according to the eigenvalues includes: Determining the check node symbol bits and the relative minimum values of each non-zero element in the current column; the relative minimum value is the smaller one of the historical minimum value and the current minimum value; Updating the check node symbol bits of each non-zero element; Calculating the check node check values of each non-zero element according to the updated check node symbol bits and the relative minimum values; The calculation expression of the check node check value is: C2V = CN_sign * min * alpha; In the formula, C2V is the check node check value, CN_sign is the check node symbol bit, min is the relative minimum value, and alpha is a preset parameter.
4. The low-density parity-check code decoding method according to claim 3, characterized in that It also includes: If the position of any non-zero element in the current column is the historical minimum value position of the corresponding row, setting the historical minimum value of the corresponding row to the historical second minimum value, setting the historical minimum value position to the historical second minimum value position, then setting the historical second minimum value to a maximum value, and setting the historical second minimum value position to empty; If the position of any non-zero element in the current column is the historical second minimum value position of the corresponding row, setting the historical second minimum value of the corresponding row to the maximum value and setting the historical second minimum value position to empty.
5. The low-density parity-check code decoding method according to claim 1, wherein The obtaining a historical decoding result and calculating a syndrome according to the historical decoding result includes: Obtain the decoding result obtained by decoding in the current column in the previous round as the historical decoding result, and the syndrome calculated in the current column in the previous round as the historical syndrome; Calculate the syndrome according to the historical decoding result, the historical syndrome, the decoding result of the current column, and the low-density parity-check matrix; The calculation expression of the syndrome is: S = S’ + H*(z + z0) T ; In the formula, S is the syndrome, S’ is the historical syndrome, H represents the current column data of the low-density parity-check matrix, z is the decoding result of the current column, and z0 is the historical decoding result.
6. The low-density parity-check code decoding method according to claim 1, wherein The decoding according to all the check node check values and the codeword information to obtain the decoding result of the current column includes: Add all the check node check values of the current column and the codeword information corresponding to the current column to obtain a checksum, and take the sign bit of the checksum as the decoding result of the current column.
7. The low-density parity-check code decoding method according to claim 6, characterized in that The updating of all the eigenvalues includes: Calculate the difference between the checksum and the check node check values of each non-zero element in the current column to obtain the variable node check value, and update the corresponding non-zero element in the current column with the variable node check value; According to the updated non-zero elements, update the current minimum value, the current second minimum value, the current minimum value position, the current second minimum value position, the check node sign bit, and the signs corresponding to each non-zero element.
8. A low-density parity-check code decoding device, characterized in that, Include: An initialization module for initializing by combining the input codeword information with a preset low-density parity-check matrix to obtain initialization decoding information, and obtaining the eigenvalues of each row of the initialization decoding information; A calculation module for calculating the check node check values of each non-zero element in the current column of the initialization decoding information according to the eigenvalues; A decoding module for adding the check node check values of all non-zero elements in the current column and the codeword information corresponding to the current column to obtain a decoding sum, and retaining the sign bit of the decoding sum to obtain a decoding result; A check module for obtaining the historical decoding result, calculating the syndrome according to the historical decoding result, and if the syndrome is 0, the decoding is successful and the decoding result is output; An update module for, if the syndrome is not 0, updating all the eigenvalues, and then taking the next column as the current column and executing the step of calculating the check node check values of each non-zero element in the current column of the initialization decoding information according to the eigenvalues.
9. A terminal device, characterized in that, The terminal device includes a processor and a memory, the memory stores a computer program, and the processor is used to execute the computer program to implement the low-density parity-check code decoding method according to any one of claims 1-7.
10. A computer-readable storage medium, characterized in that, It stores a computer program, and when the computer program is executed on a processor, it implements the low-density parity-check code decoding method according to any one of claims 1-7.
Citation Information
Patent Citations
LDPC code decoding method and LDPC code decoder
WO2022204900A1