WO2016112857A1 - Ldpc码编码器和译码器 - Google Patents
Ldpc码编码器和译码器 Download PDFInfo
- Publication number
- WO2016112857A1 WO2016112857A1 PCT/CN2016/070865 CN2016070865W WO2016112857A1 WO 2016112857 A1 WO2016112857 A1 WO 2016112857A1 CN 2016070865 W CN2016070865 W CN 2016070865W WO 2016112857 A1 WO2016112857 A1 WO 2016112857A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- check
- node
- matrix
- information
- memory
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/1137—Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/116—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/118—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
- H03M13/1185—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
- H03M13/1188—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal wherein in the part with the double-diagonal at least one column has an odd column weight equal or greater than three
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/611—Specific encoding aspects, e.g. encoding by means of decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
Definitions
- the present application relates to a data processing apparatus, and in particular to an LDPC code encoder and decoder.
- a low-density parity check (LDPC) code is a type of linear block code whose decoding performance is close to the channel limit. Due to its excellent error correction performance, binary LDPC codes have been widely used in various communication, navigation and digital storage systems. Multi-ary LDPC codes have also become favorable competitors for error correction coding schemes in these systems in the future.
- LDPC low-density parity check
- the embodiment of the present application provides a data processing apparatus, thereby achieving the purpose of reducing hardware resource consumption.
- an embodiment of the present application provides a data processing apparatus, including: m data processing modules, configured to process N i data or operations in an i-th cycle according to a calculation order; And m ⁇ n, m, n and N i are positive integers,
- an embodiment of the present application provides an LDPC code translation.
- the coder comprises: a variable node calculation unit; a check node calculation unit; a memory storing the iterative information of each side of the check matrix of the LDPC code; the controller, the control node calculation unit performing the decoding iterative operation until the translation End of code, wherein in each decoding iteration operation, the controller controls the variable node calculation unit to traverse the variable node information of all variable nodes, and update the iteration information of the memory according to the calculated variable node information, and The controller controls the check node calculation unit to traverse the check node information of all the check nodes, and update the iteration information of the memory according to the calculation result of the check node obtained by the calculation.
- an embodiment of the present application provides an LDPC code decoder, including: a plurality of variable node calculation units; a plurality of check node calculation units; and a memory that stores a check matrix of the LDPC code.
- the edge of the iterative information; the controller, the control node calculating unit performs a decoding iterative operation until the end of the decoding, wherein in each decoding iteration operation, the controller controls the plurality of variable nodes to calculate the unit traversal calculation Variable node information of all variable nodes, and updating iteration information of the memory according to the calculated variable node information, and the controller controls the plurality of check node calculation units to traverse the check node information of all the check nodes, and The iteration information of the memory is updated according to the calculation result of the check node obtained by the calculation.
- an embodiment of the present application provides an LDPC code decoder, including: a node calculation unit; a first memory, storing iteration information of a variable node of a parity check matrix of the LDPC code; and a second memory And storing iteration information of each side of the check matrix of the LDPC code; the controller, the control node calculating unit performs a decoding iterative operation until the decoding ends, wherein in each decoding iteration operation, the controller controls The node calculation unit traverses all variable node information and all check node information, and updates the iteration information in the first memory and the second memory according to the variable node information and the check node information.
- an embodiment of the present application provides an LDPC code decoding method, including: storing iteration information of each side of a check matrix of an LDPC code; performing a decoding iterative operation until the end of decoding, In each decoding iteration operation, the variable node information of all variable nodes is successively traversed, and the stored iteration information is updated correspondingly, and the check node information of all check nodes is calculated successively, and the stored iterations are updated accordingly.
- FIG. 1 is a schematic diagram of an encoder of a fully parallel structure provided by the prior art
- FIG. 2 is a schematic diagram of a data processing apparatus according to an embodiment of the present application.
- FIG. 3 is a schematic diagram of a data processing apparatus according to an embodiment of the present application.
- FIG. 4 is a schematic diagram of a data processing apparatus according to an embodiment of the present application.
- FIG. 5 is a schematic structural diagram of a data processing apparatus according to an embodiment of the present application.
- FIG. 6 is a schematic diagram of a generation matrix as a sparse matrix
- FIG. 7 is a schematic diagram of a submatrix in which a matrix is generated as a cyclic matrix
- Figure 8 shows a check matrix of a schematic LDPC code.
- FIG. 9 shows a Tanner graph of the check matrix shown in FIG.
- FIG. 10 shows a schematic diagram of an LDPC code decoder according to an embodiment of the present application
- FIG. 11 is a schematic diagram of an LDPC code decoder according to an embodiment of the present application.
- FIG. 12 is a diagram showing a check matrix of an LDPC code including a plurality of cyclic matrices
- FIG. 13 shows a basic matrix corresponding to a check matrix of an LDPC code of a schematic GPS system
- FIG. 14 is a view showing a Tanner graph corresponding to the LDPC code shown in FIG. 13;
- FIG. 15 shows a variable node, a check node, and a corresponding edge connection relationship corresponding to one block edge in FIG. 14;
- Figure 16 is a timing chart showing the successive traversal operations of the variable node calculation unit
- Figure 17 is a timing chart showing the successive traversal operations of the check node calculation unit
- FIG. 18 is a schematic diagram of an LDPC code decoder according to an embodiment of the present application.
- Each data processing module outputs a code character number of the final code sequence, so that n data processing modules will output all code words in one operation cycle.
- the encoder of the full parallel structure causes waste of hardware resources. To solve this technical problem, the present application provides a data processing apparatus.
- the data processing apparatus can be applied to LDPC coded or decoded scenarios, where the apparatus can be an LDPC code encoder, or an LDPC code decoder.
- the data processing apparatus includes: m data processing modules 201 for processing N i data or operations in an i-th cycle according to a calculation order; And m ⁇ n, m, n and N i are positive integers,
- N i in the first cycle is m;
- Each data processing module 201 is processed as much as possible to process a single data or operation.
- N i data or operations are processed, where N i operations can be understood as N i multiplication operations, where N i data can be understood as N i specific numbers, or N i vectors, matrices, etc. The embodiments of the present application do not limit this.
- the operation uses k-1 adders to calculate the sum of the above products, and a code character number can be generated by the action of the multiplier and the adder.
- An embodiment of the present application provides a data processing apparatus, where the apparatus includes: m data processing modules, configured to process N i data or operations in an i-th cycle according to a calculation order; And m ⁇ n, m, n and N i are positive integers, Through the multiplexing of m data processing modules in time, the processing of n data or operations is achieved, thereby reducing the consumption of hardware resources.
- FIG. 3 is a schematic diagram of a data processing apparatus according to an embodiment of the present application.
- the apparatus may be specifically an LDPC encoder, where the encoder includes m data processing modules, and the m data processing modules are specifically configured to:
- the length of n; the number of columns of the generator matrix G k ⁇ n , and the calculation of c (c 0 , c 1 ...
- the degree of parallelism of the data processing apparatus can be referred to as m.
- the operation uses k-1 adders to calculate the sum of the above products, and a code character number can be generated by the action of the multiplier and the adder.
- An embodiment of the present application provides a data processing apparatus, where the apparatus includes m data processing modules, where the m data processing modules are specifically configured to separately calculate data to be encoded in a low density parity check LDPC encoding process.
- each of the generation matrices G k ⁇ n is divided into blocks based on the idea of blocking.
- the data processing module in the data processing device includes: a first storage unit 401 and a second storage unit 402; wherein the data processing module is configured to divide each column of the generation matrix G k ⁇ n into P first data blocks; Where P ⁇ 2. As shown in FIG.
- the first storage unit 401 is configured to store a first data block; the second storage unit 402 is configured to store a second data block corresponding to the data to be encoded corresponding to the first data block;
- the storage unit 401 stores the first data block of length d at this time, and the second storage unit 402 stores the second data block of length d at this time.
- the data processing module further includes a multiplier, an adder and an accumulator
- the first storage unit can be multiplexed with respect to each of the first data blocks, and the second storage unit can also be multiplexed with respect to the second data block, that is, no unnecessary storage space needs to be opened, and all of the first The data block may use one first storage unit in time series, and all the second data blocks may use one second storage unit in time series.
- each column is divided into two first data blocks, for each column, from top to bottom
- the first element constitutes a first data block
- the second element and the third element constitute a first data block.
- the generation matrix G 3 ⁇ 5 actually includes 10 first data blocks, and accordingly,
- the second data block formed by the first element and the first data block formed by the first element of the first column in the generation matrix G 3 ⁇ 5 , c (c 0 , c 1 ,
- the product of the second block of the first element of c 2 ) and the first block of the generator matrix G 3 ⁇ 5 consisting of the first element of the second column, c (c 0 , c 1 ,
- the data processing module of the data processing apparatus includes: a first storage unit and a second storage unit; the data processing module is configured to divide each column of the generation matrix G k ⁇ n into P first data blocks a first storage unit is configured to store a first data block, a second storage unit is configured to store a second data block of the data to be encoded corresponding to the first data block, and m data processing modules are specifically configured to:
- the data processing apparatus implements multiplexing of the storage space based on the idea that the check matrix acquires the final encoded sequence.
- the first redundant bit p 1 can be calculated directly from the elements in the data to be encoded, and the second redundant bit p 2 can be calculated jointly by the first redundant bit p 1 and the elements in the data to be encoded, Such a push, p nk can be calculated jointly by p nk-1 and the elements in the data to be encoded. Therefore, it is possible to first read from the memory module storing (M, p 1 , p 2 ... p nk ) the corresponding one of the first non-zero elements in the first row of the check matrix (M, p 1 , p 2 ...
- FIG. 5 is a schematic structural diagram of a data processing apparatus according to an embodiment of the present application.
- the data processing apparatus includes a first storage module 502 for storing a generation matrix in addition to the m data processing modules 501.
- the first storage module 502 is specifically configured to:
- the first storage module stores only the position coordinates corresponding to the non-zero elements of the generation matrix and the non-zero elements.
- the number of non-zero elements in the matrix is much smaller than the total number of matrix elements, and the matrix is called a sparse matrix. Therefore, the first storage module stores only the position coordinates corresponding to the non-zero elements and non-zero elements of the generated matrix. Further, when the binary LDPC encoding is used in the present application, the non-zero element in the generated matrix is only 1. Therefore, only the location coordinates corresponding to the non-zero element 1 may be stored in the first storage module.
- the first storage module stores only all non-zero elements in the cyclic matrix, and position coordinates corresponding to one column of non-zero elements and adjacent two columns The loop offset.
- the generation matrix is a quasi-cyclic matrix, such as a generation matrix.
- the first storage module can store only q non-zero elements, and then store the position of the first column non-zero element g 0 and the cyclic offset 1 of the adjacent two columns, so that the non-zero elements of other columns can pass the first
- the position and cyclic offset of a list of non-zero elements are derived.
- the non-zero element in the generation matrix is only 1, so that only the position and the cyclic offset corresponding to the non-zero element 1 can be stored in the first storage module.
- the embodiment provides a data processing device, and the device further includes a first storage module, configured to store a generation matrix. If the generation matrix is a sparse matrix, the first storage module stores only the position coordinates corresponding to the non-zero elements of the generation matrix and the non-zero elements; if the sub-matrix of the generation matrix is a cyclic matrix, the first storage module stores only the loop. All non-zero elements in the matrix, and the position coordinates corresponding to one of the non-zero elements and the cyclic offset of the adjacent two columns, thereby achieving the multiplexing effect of the first storage module. Thereby reducing the consumption of hardware resources.
- Figure 6 is a schematic diagram of the generation matrix as a sparse matrix.
- the data stored in the first address in the first storage module 502 is: (1, 3, 0), indicating that the first row block of the first column block is in the first row block.
- the position of the non-zero element, the first data processing module sets the first bit of its first storage unit 401 to 1 according to 1, and the second data processing module sets the third bit of its first storage unit 401 according to 3.
- the data stored in the second address of the first storage module 502 is: (0, 0, 1), indicating the position of the non-zero element in the second row block of the first column block, and the third data processing module is based on 1
- the first bit of the first storage unit 401 is set to 1 ... and so on, and the entire generation matrix can be completely represented by coexisting 12 sets of data, and only the non-recording of each data block is required in the first storage module.
- the position of the zero element can guide the data processing module to complete the coding work. For multi-ary LDPC codes, you also need to record the value of non-zero elements.
- FIG. 7 is a schematic diagram of a submatrix of a generator matrix as a cyclic matrix.
- the data stored in the first address in the first storage module 502 is: (1, 1, 1), indicating the first non-zero of the first column block.
- the sub-matrix is located in the first row block, the first column is a non-zero element in the first position, and the loop offset is 1 (the loop offset is not stored when the loop offset is a fixed value), the first data processing
- the module sets the first bit of its first storage unit 401 to 1
- the second data processing module sets the second bit of its first storage unit 401 to 1
- the third data processing module sets its first storage unit 401.
- the third bit is set to 1; the data stored in the second address of the first storage module 502 is: (4, 3, 1), indicating that the second non-zero sub-matrix of the first column block is located in the fourth row.
- the first column of non-zero elements is in the third position, the cyclic offset is 1, the first data processing module sets the third bit of its first storage unit 401 to 1, and the second data processing module sets its The first bit of a storage unit 401 is set to 1, and the third data processing module sets its first The second bit of the storage unit 401 is set to 1 and so on.
- a total of 6 sets of data are required to completely represent the entire generation matrix, and only the non-zero elements of each data block need to be recorded in the first storage module.
- the location guides the data processing module to complete the encoding. For multi-ary LDPC codes, you also need to record the value of non-zero elements.
- an LDPC code decoder and a decoding method are also provided.
- the decoding algorithm in the decoder and decoding method according to the present application may employ an iterative decoding algorithm such as a belief propagation algorithm, a minimum sum algorithm, a message passing algorithm, and the like.
- the iterative decoding algorithm is implemented based on the Tanner graph of the check matrix of the LDPC code.
- Figure 8 shows a check matrix of a schematic LDPC code.
- FIG. 9 shows a Tanner graph of the check matrix shown in FIG.
- the column of the check matrix corresponds to the variable node
- the row of the check matrix corresponds to the check node
- the line between the connection variable node and the check node corresponds to a non-zero element in the check matrix, which is called an edge.
- the decoding process can be viewed as an iterative process of iterative information passing between the variable node and the check node.
- FIG. 10 shows a schematic diagram of an LDPC code decoder in accordance with an embodiment of the present application.
- the LDPC code decoder includes: a variable node calculation unit 1100, a check node calculation unit 1200, a memory 2000, and a controller 3000.
- the variable node calculation unit 1100 stores iterative information of each side of the check matrix of the LDPC code.
- the iterative information may include, for example, a code character number and a confidence level corresponding to each side of the check matrix.
- the controller 3000 controls the node calculation unit to perform a decoding iterative operation until the decoding ends.
- the controller control variable node calculation unit 1100 traverses the variable node information of all the variable nodes, and updates the iteration information of the memory according to the calculated variable node information.
- the variable node information of the variable node may include, for example, a code character number and a confidence of each side of the variable node.
- the controller 3000 also controls the check node calculation unit 1200 to traverse the check node information of all the check nodes, and updates the iteration information of the memory 3000 according to the calculation result of the check node obtained by the calculation.
- the check node information of the check node may include, for example, the confidence of each side of the check node.
- the node calculation unit can implement the entire iterative decoding process serially. And the input and output ports between the variable node calculation unit and the check node calculation unit are not directly connected, but are connected through a memory according to the control of the controller. By multiplexing the node computing unit in time, hardware resources are greatly saved and the implementation cost is reduced.
- the decoder according to the present application can be used for the case where the LDPC code is binary or the case where the LDPC code is a multi-ary code.
- the code character number in the iterative information may be, for example, a corresponding hard decision, and the confidence may be, for example, an LLR value.
- the iterative information may include a plurality of code character numbers corresponding to each side of the check matrix and a corresponding plurality of confidence levels. Multiple code character numbers and corresponding multiple confidences may be in the form of vector information.
- the controller 3000 controls the variable node calculation unit to traverse the variable node information of all variable nodes (including the code character number and confidence of the edge corresponding to the variable node), and obtains the variable node according to the calculation. Iterative information of the information update memory.
- the controller 3000 controls the check node calculation unit to traverse the check node information of all the check nodes (including the confidence of the edge corresponding to the check node), and updates the iterative information of the memory according to the calculation result of the check node obtained by the calculation. .
- the variable node calculation unit 1100 when the variable node calculation unit 1100 performs the variable node calculation, it is necessary to obtain the initial confidence corresponding to the variable node.
- the initial confidence is the input information that the receiver receives from the channel and is demodulated by the receiver front-end device (such as a demodulator) and then passed to the decoder.
- the initial confidence can be stored in an input buffer (not shown).
- variable node calculation unit 1100 When the variable node calculation unit 1100 performs the current variable node calculation, the initial confidence corresponding to the currently calculated variable node is queried, and the iteration information of all the edges corresponding to the currently calculated variable node is obtained from the memory 3000, and according to the obtained The initial confidence and iteration information performs a variable node operation to obtain the code character number and confidence of all edges corresponding to the currently calculated variable node, and correspondingly update the iterative information of all edges in the memory corresponding to the currently calculated variable node. Code character number and confidence.
- the check node calculation unit 1200 When the check node calculation unit 1200 performs the current check node calculation, the iteration information of all the edges corresponding to the currently calculated check node is obtained from the memory 3000, and the check node operation is performed according to the obtained iterative information to obtain participation. The confidence of all edges corresponding to the currently calculated check node, and updating all of the memory corresponding to the currently verified check node Confidence in the iterative information of the edge.
- FIG. 11 shows a schematic diagram of an LDPC code decoder in accordance with an embodiment of the present application.
- the LDPC code decoder includes a variable node calculation unit 1100, a check node calculation unit 1200, a memory 2000, and a controller 3000.
- the controller further includes an addressing unit 3100 and a computing unit 3200.
- Addressing unit 3100 can provide addressing for interaction between variable node computing unit 1100 and memory 2000.
- the addressing unit 3100 may store a first mapping relationship between the traversal order of the variable node calculation unit for all variable nodes and the storage order of each side of the check matrix in the memory.
- Addressing unit 3100 can also provide addressing for interaction between check node computing unit 1200 and memory 2000.
- the addressing unit 3100 may also store a second mapping relationship between the traversal order of the check nodes calculation unit for all check nodes and the storage order of each side of the check matrix in the memory.
- the calculation unit 3200 counts the traversal calculation of the variable node calculation unit 1100 to determine the current variable node calculation state.
- the addressing unit 3100 determines the first current mapped address based on the current variable node calculation state.
- the variable node calculation unit 1100 updates the iteration information in the memory according to the first current mapping address indicated by the addressing unit 3100. For example, the variable node calculation unit 1100 obtains the iteration information required to perform the current variable node operation from the memory 2000 according to the address indicated by the addressing unit 3100, and stores the variable node information obtained by the current variable node operation into the corresponding memory 2000. Address to update iteration information.
- the calculation unit 3200 After the variable node calculation unit 1100 traverses the variable node operations of all the variable nodes in the check matrix of the LDPC code, the calculation unit 3200 counts the traversal calculation of the check node calculation unit to determine the current check node calculation state.
- the addressing unit 3100 determines a second current mapped address according to the current check node calculation state.
- the check node calculation unit 1200 updates the iteration information in the memory according to the second current mapped address indicated by the addressing unit 3100. For example, the check node calculation unit 1200 obtains the iteration information required to perform the current check node operation from the memory 2000 according to the address indicated by the address unit 3100, and stores the check node information obtained by the current check node operation.
- the corresponding address of the memory 2000 is to update the iteration information.
- the controller 3000 can determine whether the checksum corresponding to each check node is zero, if it is zero, the decoding is successful; if not, the controller controls the execution.
- One-time decoding iteration operation if the number of iterations reaches the maximum number of iterations, it means The decoding failed.
- the checksum corresponding to the check node is the sum of the hard decision of each side of the check node and the non-zero element of the position corresponding to each side in the check matrix.
- the check matrix of the LDPC code generally includes a plurality of cyclic matrices and a plurality of zero matrices.
- FIG. 12 shows a schematic diagram of a check matrix of an LDPC code including a plurality of cyclic matrices.
- the addressing unit 3100 can store only one mapping address for the interaction between the variable node computing unit 1100 and the memory 2000, that is, the variable node computing unit 1100 can implement the entire circular matrix stored in the memory 2000. Update of the iteration information for all sides. Similarly, for each of the cyclic matrices, the addressing unit 3100 can store only one mapping address only for the interaction between the check node computing unit 1200 and the memory 2000, that is, the check node computing unit 1200 can store the entire memory in the memory 2000. Update of the iteration information of all edges of the cyclic matrix. This further saves hardware resources and reduces costs.
- the addressing unit 3100 for each of the cyclic matrices, iterative information of each side of the cyclic matrix is sequentially stored in the memory 2000.
- the addressing unit 3100 only the first mapping address of the edge in the memory 2000 corresponding to any one of the variable nodes in the circular matrix may be stored, for example, only the edge in the memory corresponding to the first variable node in the circular matrix is stored.
- the first mapped address The first mapping address of the other variable nodes in the circular matrix and the corresponding edges in the memory can be directly generated according to the cyclic rules in the cyclic matrix.
- the addressing unit 3100 only the second mapping address of the edge in the memory 2000 corresponding to any one of the check nodes may be stored, for example, only the first check node in the circular matrix is stored.
- the second mapped address of the edge in the memory The second mapping address of the other check nodes in the circular matrix and the corresponding edges in the memory can be directly generated according to the loop rules in the cyclic matrix. For example, it may be determined based on a known second mapping address, an offset of other check nodes relative to a known check node, and/or an offset of the cyclic matrix.
- variable node calculation unit 1100 checks the traversal calculation order of the variable nodes of all the cyclic matrices in the check matrix of the LDPC code and the check of the LDPC code in the memory 2000
- the storage order of the iterative information of the edges of all the cyclic matrices in the matrix is the same, the addressing unit 3100 may not store the interactive mapping address between the variable node computing unit 1100 and the memory 2000, as long as the variable node calculates according to the count of the controller 3000.
- the self-incremental addressing between the unit 1100 and the memory 2000 is sufficient.
- the addressing unit 3100 may not store the interaction mapping address between the check node computing unit 1200 and the memory 2000, as long as the check node computing unit 1200 and the memory 2000 are self-determined according to the count of the controller 3000. Add addressing.
- the decoder of the present application it is particularly suitable for the field where the receiver side is strict in resource consumption and the throughput is not high, such as the field of satellite navigation.
- the following takes the LDPC code of the GPS system as an example to explain the working process of the decoder in detail.
- a (1200, 600) LDPC code having a cyclic matrix size of 60x60 in the GPS system is considered.
- Fig. 13 shows a basic matrix corresponding to the check matrix of the LDPC code of the schematic GPS system.
- Each number in the base matrix represents a 60x60 submatrix in the check matrix, including the all zero matrix and the corrupt block.
- the number "-1" represents the all-zero matrix
- the other numbers represent the cyclic matrix
- the size of the number represents the offset of the cyclic matrix.
- the number "0" represents no offset, that is, the unit matrix
- the number "16” represents a matrix obtained by shifting the unit array cycle by 16 bits to the right.
- FIG. 14 shows a Tanner graph corresponding to the LDPC code shown in FIG.
- Each of the squares represents a set of 60 check nodes, each of which represents a group of 60 variable nodes, each of which represents a block edge.
- FIG. 15 shows a variable node, a check node, and a corresponding edge connection relationship corresponding to one block edge in FIG. 14.
- the block edge connecting the variable node group 1 and the check node group 2 is taken as an example, corresponding to 16 of the first row of the second row in the basic matrix.
- variable node computing unit 1100 is implemented by VNU
- check node computing unit 1200 is implemented by CNU
- memory 2000 is implemented by RAM.
- Each memory address in the RAM corresponds to a non-zero element in the check matrix of the LDPC code, that is, one side in FIG.
- the storage order of the iteration information of the check matrix of the LDPC code of the RAM is in the order of grouping position (for example, column order) of the corresponding sub-matrix (circular matrix) in each matrix in the check matrix, and the order of the packet port (for example, each The row order of a column), the edge of the strip is stored within the group within the loop matrix (eg, the order of the columns in the group).
- the computing unit of the controller can count the operations of the VNU or CNU, and obtain the number of packets unitnum where the edge of the current operation is located, the groupnum in the group in the group, and the current input and output port number portnum.
- the total non-zero row number Max_port_V of each column in the base matrix can also be recorded in the calculation unit or the addressing unit of the controller, and the record The total number of non-zero columns Max_port_C for each row in the base matrix.
- the number of packets unitnum represents the column order of the corresponding circular matrix of the edge corresponding to the variable node calculated by the current variable node, and the input and output ports.
- the port number represents the row order of the corresponding loop matrix of the strip in the base matrix in this column, and the group position in the group indicates the position of the column in the loop matrix.
- the group number unitnum represents the row order of the corresponding circular matrix of the edge corresponding to the variable node calculated by the current variable node, and the input and output port number portnum indicates that the edge is The order of the corresponding cyclic matrix in the base matrix in this row, the group position in the group represents the row position of the edge in the circular matrix.
- the mapping unit records the mapping relationship between the storage address grp_addr in the RAM and the packet number unitnum, the port number portnum, and the intra-group location groupnum.
- the addressing unit may store a mapping table between the address grp_addr and the VNU (unitnum, portnum, groupnum), and store a mapping table between the storage address grp_addr and the CNU (unitnum, portnum, groupnum).
- mapping unit may store a mapping table between the address grp_addr and the VNU (unitnum, portnum), and store a mapping table between the storage address grp_addr and the CNU (unitnum, portnum).
- the initialization is first performed, that is, 1200 (the number of columns of the LDPC code check matrix) initial LLR values are sequentially written into the RAM.
- the VNU reads the first initial LLR value from the input buffer and makes a hard decision.
- the calculation unit starts counting, and the group position in the group is updated according to the count status. It can be understood that each update of the group position in the group corresponds to the VNU writing to an initial LLR value (or a calculation process of the VNU during iterative calculation), during the writing of an initial LLR value (or a VNU calculation process).
- the controller increases the port number portnum from "1" to the corresponding Max_port_V.
- the addressing unit finds the corresponding addressing address according to the packet number unitnum and the port number portnum, and the stored first mapping relationship.
- the write address of the VNU can be obtained by combining the addressed address indicated by the addressing unit with the intra-group location groupnum indicated by the computing unit.
- the VNU writes the first hard decision and the initial LLR value to the corresponding write address in RAM. Subsequently, the VNU sequentially writes the RAM to the RAM based on the initial LLR value.
- the calculation unit counts the number of initial writes, and according to the count state, increments the group position in the group by one, until 60 (equal to the size of the loop matrix), then returns to zero, and the number of units unitnum is increased by 1, until 20 (the number of columns of the basic matrix) ).
- Figure 16 shows a timing diagram of the VNU successive traversal operation. As shown, the VNU will perform 1200 operations.
- the above initialization process is performed by the VNU sequentially reading the initial LLR value from the input buffer, performing a hard decision according to the initial LLR value, and sequentially saving the hard decision and the LLR value to the corresponding storage unit in the RAM. If the initial value in RAM is zero before initialization, the VNU can also be initialized by a variable node traversal operation.
- the VNU can be connected to the addressing unit to read and write RAM according to the address indicated by the addressing unit; the VNU can also be connected to the RAM without being connected to the addressing unit, and the addressing unit is only used to generate the read and write address of the RAM.
- the check node operation is performed.
- the input information required for the check node operation is serially read from the RAM according to the control of the controller, and the operation result is written to the corresponding position in the RAM according to the control of the controller.
- the calculation unit counts the traversal operation of the CNU, and updates the position groupnum in the group according to the count state. It can be understood that each update of the group position in the group corresponds to a calculation process of the CNU. During a CNU calculation process, the controller increases the port number portnum from "1" to the corresponding Max_port_C. In addition, since the cyclic matrix has the offset off_addr, the initial value of groupnum is the offset off_addr, during the counting process, if If groupnum is greater than 60, the group position in the group is updated to groupnum minus 60 until the count of the calculation unit reaches 60, groupnum returns to the initial value, and the number of units is increased by 1.
- the computing unit outputs the packet number unitnum and the port number portnum to the addressing unit, and the addressing unit finds the corresponding addressing address according to the stored control node-edge mapping relationship.
- the CNU read and write address can be obtained by combining the addressed address indicated by the addressing unit with the intra-group location groupnum indicated by the computing unit.
- the CNU can sequentially read the edge corresponding to each control node from the RAM according to the control of the controller (ie, the corresponding port number portnum is from "1" to The LLR value and the hard decision of Max_port_C) calculate the minimum and minimum values of the input LLR values of all the edges corresponding to each control node. The second smallest value is written to the address whose input is the minimum value, and the other address is written to the minimum value. It then traverses each control node.
- Figure 17 shows a timing diagram of the CNU successive traversal operation. As shown, the CNU will perform 600 operations.
- the CNU can sequentially read the edge corresponding to each control node from the RAM according to the control of the controller (ie, the corresponding port number portnum is from "1" to Iteration information for Max_port_C).
- the iterative information may include, for example, vector information consisting of a plurality of code character numbers and corresponding plurality of confidence levels.
- the operation of inputting data between multiple ports of the check node of the multi-ary code is a multiple convolution sort operation, that is, the new vector information obtained by the convolution sort operation of the two iterative vector information and other iterative information vectors continue. Perform a convolution sort operation.
- the CNU of the serial structure can be designed. By allocating at least Max_port buffer space internally by the CNU, a CNU calculation can be realized in the case where the number of input ports is not fixed, wherein the number of Max_ports is Equal to the maximum of the maximum number of columns Max_port_C for all rows.
- Max_port+1 cache space can be allocated inside the CNU.
- the CNU can have four buffer spaces internally.
- the iterative vector information of the three ports is serially read and cached into three different buffer spaces, and then the first port and the second port are calculated.
- the convolutional sorting result between the input iterative vector information is saved to the fourth buffer space.
- the result of the convolutional sort operation between the iterative vector information input by the first port and the third port is calculated and saved in the first buffer space.
- Finally calculate the second port and The result of the convolutional sorting operation between the iterative vector information input by the third port is saved in the second buffer space, that is, the calculation of all output iterative vector information of all ports is completed.
- the CNU may have five buffer spaces internally.
- the newly added cache space is idle, and all the output iterative vector information of all three ports is still completed in the foregoing order.
- the input iteration vector information of the fourth port is buffered into the newly added cache space, and the operation between the input vector information of the first three ports is first completed according to the foregoing sequence. Then calculating a convolution sorting operation between the iterative vector information of the third port input and the vector information obtained by the first port and the second port in the first buffer space, and saving the result to the third buffer space.
- the convolution sorting operation result between the input iteration vector information of the fourth port and the vector information in the first, second, and fourth buffer spaces is calculated in turn, and saved back to the first, second, and fourth buffer spaces, that is, completed.
- the calculation of the iterative vector information for all four ports is output.
- the CNU internally can only allocate Max_port cache spaces to complete the intermediate vector information and output the iterative vector information.
- the cache is fine.
- the controller adds all the hard decisions to determine whether the checksum is zero. If the checksum is zero, the decoding is completed; if the checksum is not zero, it is necessary to continue iterating for the variable node operation.
- the checksum is the sum of the product of the hard decision of each side of the check node and the non-zero element of the position of the check matrix corresponding to each side. For multi-ary LDPC codes, you also need to record the value of non-zero elements.
- the operation mode of the LDPC code is binary code and multi-ary code.
- the VNU reads the initial LLR value from the input buffer and reads the LLR value of the first port from the RAM, adds them and saves the first port input inside the VNU.
- the LLR value then read in and accumulate the LLR values of other ports in turn, to get LLR_total.
- the VNU also caches the LLR value entered on each port.
- a hard decision is made on LLR_total, and the hard decision and the difference between the LLR_total and the input value of the corresponding port are output to each port and stored in the RAM.
- variable node and check node update process continue to iterate the variable node and check node update process until the decoding succeeds or reaches the preset maximum number of iterations.
- the mapping relationship recorded in the addressing unit may not be in the form of a mapping table, but directly calculated or spliced by the unitnum, portnum, and groupnum given by the computing unit. VNU traversal address. If the storage order of the RAM is consistent with the traversal calculation order of the CNU, the mapping relationship recorded in the addressing unit may not be in the form of a mapping table, but directly calculated or spliced by unitnum, portnum, and groupnum given by the computing unit to obtain CNU traversal. address. This can further save hardware resources.
- an LDPC code decoder includes a variable node calculation unit and a check node calculation unit in accordance with an embodiment of the present application
- the LDPC code decoder is The method may further include a plurality of variable node calculation units and a plurality of check node calculation units, and the controller may control, in a similar manner, the plurality of variable node calculation units to traverse the variable node information of all the variable nodes, and obtain the variable nodes according to the calculation.
- the information updates the iteration information of the memory, and controls the plurality of check node calculation units to traverse the check node information of all the check nodes, and updates the iteration information of the memory according to the calculation result of the check node obtained by the calculation.
- all variable node information is traversed by a variable node operator
- all check node information is traversed by a check node operator to implement an iterative decoding process of the LDPC code decoder, according to the present application.
- the decoder may also include only one node operation unit, and the node operator traverses all variable node information and all check node information to implement an iterative decoding process of the hierarchical structure.
- FIG. 18 shows a schematic diagram of an LDPC code decoder in accordance with an embodiment of the present application.
- the LDPC code decoder includes a node computing unit 1000, a first memory 2100, a second memory 2200, and a controller 3000.
- the first memory 2100 stores iterative information of the variable nodes of the check matrix of the LDPC code. For example, the total confidence LLR_total of each variable node of the check matrix of the LDPC code is stored.
- the second memory 2200 stores iterative information of each side of the check matrix of the LDPC code. For example, the code character number and confidence of each side of the check matrix of the LDPC code are stored.
- the controller 3000 the control node calculation unit performs a decoding iterative operation until the end of the decoding, wherein in each decoding iteration operation, the controller controls the node calculation unit to traverse all the variable nodes according to the check node order Information and all check node information, and updating iteration information in the first memory and the second memory according to the variable node information and the check node information.
- the controller 3000 may also include an addressing unit 3100 and a computing unit 3200.
- the addressing unit 3100 stores a first mapping relationship between the check node and the variable node, and stores a second mapping between the traversal order of the check nodes for all check nodes and the storage order of each side of the check matrix in the memory. relationship.
- the calculating unit 3200 counts the calculation of the node calculating unit 1000, and controls the addressing unit to indicate the address of the storage unit corresponding to the current calculation according to the counting state, and controls the verification of the current operation obtained by the node calculating unit according to the indicated address.
- the first memory and the second memory are updated by the total confidence of the variable nodes corresponding to the node and the code character number and confidence of each side corresponding to the check node of the current operation.
- the addressing unit 310 may store only one mapped address for the interaction between the variable node computing unit and the first memory and the second memory, thereby further saving hardware resources. cut costs. For each cyclic matrix, iterative information for each edge of the circular matrix is stored sequentially in memory.
- the addressing unit 3100 stores only the first mapping address of the variable node in the memory corresponding to any one of the check nodes in the loop matrix, and stores only the edges in the memory corresponding to any one of the check nodes in the loop matrix. The second mapped address.
- mapping addresses of the other check nodes in the circular matrix and the corresponding edges in the first memory are determined according to the first mapping address, the position of the other check nodes relative to the one of the check nodes, and/or the offset of the circular matrix.
- the mapping addresses of the other variable nodes in the circular matrix and the corresponding edges in the second memory are determined according to the second mapping address, the position of the other variable node relative to the variable node and/or the offset of the circular matrix.
- Embodiments in accordance with the present application may be implemented in the form of hardware, software, or a combination thereof.
- One aspect of the present application provides a computer program comprising LDPC code encoder and decoder executable instructions for implementing an embodiment in accordance with the present application.
- such computer programs can It is stored in any form of memory, such as an optical or magnetically readable medium, chip, ROM, PROM, or other volatile or non-volatile device.
- a machine readable memory storing such a computer program is provided.
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
Abstract
Description
Claims (31)
- 一种LDPC码译码器,包括:一个变量节点计算单元;一个校验节点计算单元;存储器,存储LDPC码的校验矩阵的每条边的迭代信息;控制器,控制节点计算单元执行译码迭代运算,直到译码结束,其中,在每一次译码迭代运算中,所述控制器控制所述变量节点计算单元遍历计算所有变量节点的变量节点信息,并根据计算获得的变量节点信息更新存储器的迭代信息,以及所述控制器控制所述校验节点计算单元遍历计算所有校验节点的校验节点信息,并根据计算获得的校验节点的运算结果更新存储器的迭代信息。
- 如权利要求1所述的LDPC码译码器,其中所述控制器进一步包括寻址单元,所述寻址单元存储变量节点计算单元对所有变量节点的遍历顺序与存储器中校验矩阵的每条边的迭代信息的存储顺序之间的第一映射关系,以及存储校验节点计算单元对所有校验节点的遍历顺序与存储器中校验矩阵的每条边的迭代信息的存储顺序之间的第二映射关系。
- 如权利要求2所述的LDPC码译码器,其中,所述控制器进一步包括计算单元,所述计算单元对变量节点计算单元的遍历计算进行计数以确定当前变量节点计算状态,所述变量节点寻址单元根据当前计算状态和第一映射关系确定第一当前映射地址,所述变量节点计算单元根据所述第一当前映射地址对存储器中的迭代信息进行更新;所述计算单元对校验节点计算单元的遍历计算进行计数以确定当前校验节点计算状态,所述校验节点寻址单元根据当前校验节点计算状态和第二映射关系确定第二当前映射地址,所述校验节点计算单元根据所述第二当前映射地址对存储器中的迭代信息进行更新。
- 如权利要求3所述的LDPC码译码器,其中,所述LDPC码的校验矩阵包括多个循环矩阵,对于每一个循环矩阵:所述存储器中顺序存储该循环矩阵的每条边的迭代信息,所述寻址单元中仅存储该循环矩阵中任一个变量节点所对应的存储器中的边的第一映射地址,以及仅存储该循环矩阵中任一个校验节点所对应的存储器中的边的第二映射地址。
- 如权利要求4所述的LDPC码译码器,其中,所述一个循环矩阵中其他变量节点与存储器中的相应边的映射地址根据所述第一映射地址、所述其他变量节点相对于所述任一个变量节点的位置和/或所述一个循环矩阵的偏移量确定;所述一个循环矩阵中其他校验节点与存储器中的相应边的映射地址根据所述第二映射地址、所述其他校验节点相对于所述任一个校验节点的位置和/或所述一个循环矩阵的偏移量确定。
- 如权利要求1所述的LDPC码译码器,其中,所述存储器中存储的每条边的迭代信息包括与该条边对应的码字符号和置信度,所述变量节点的变量节点信息包括该变量节点对应的各边的码字符号和置信度,所述校验节点的校验节点信息包括该校验节点对应的各边的码字符号和置信度。
- 如权利要求6所述的LDPC码译码器,其中,所述变量节点计算单元在执行当前变量节点计算时,从存储器获得参与当前计算的变量节点对应的所有边的迭代信息,并将该迭代信息与参与当前计算的变量节点对应的初始置信度进行运算以获得参与当前计算的变量节点所对应的所有边的码字符号和置信度,并更新存储器中与当前计算的变量节点对应的所有边的迭代信息中的码字符号和置信度。
- 如权利要求6所述的LDPC码译码器,其中,所述校验节点计算单元在执行当前校验节点计算时,从存储器获得参与当前计算的校验节点对应的所有边的迭代信息,并对该迭代信息进行计算以获得参与当前计算的校验节点对应的所有边的码字符号和置信度,并更新存储器中与当前校验的校验节点对应的所有边的迭代信息中的码字符号和置信度。
- 如权利要求8所述的LDPC码译码器,其中,当所述LDPC码为多进制码时,所述校验节点计算器包括多个缓存空间以缓存校验节点运算的中间结果,其中所述多个缓存空间的数量根据校验矩阵的基础矩阵中循环矩阵分布的所有行对应的最大列数的最大值确定。
- 如权利要求1所述的LDPC码译码器,其中,当一次译码迭代运算结束后,所述控制器判断每个校验节点对应的校验和是否为零,若为零则指示译码成功;若不为零,则所述控制器控制执行下一次译码迭代运算,若迭代次数达到最大迭代次数,则指示译码失败。
- 一种LDPC码译码器,包括:多个变量节点计算单元;多个校验节点计算单元;存储器,存储LDPC码的校验矩阵的每条边的迭代信息;控制器,控制节点计算单元执行译码迭代运算,直到译码结束,其中,在每一次译码迭代运算中,所述控制器控制所述多个变量节点计算单元遍历计算所有变量节点的变量节点信息,并根据计算获得的变量节点信息更新存储器的迭代信息,以及所述控制器控制所述多个校验节点计算单元遍历计算所有校验节点的校验节点信息,并根据计算获得的校验节点的运算结果更新存储器的迭代信息。
- 一种LDPC码译码器,包括:一个节点计算单元;第一存储器,存储LDPC码的校验矩阵的变量节点的迭代信息;第二存储器,存储LDPC码的校验矩阵的每条边的迭代信息;控制器,控制节点计算单元执行译码迭代运算,直到译码结束,其中,在每一次译码迭代运算中,所述控制器控制所述节点计算单元按照校验节点顺序遍历计算所有变量节点信息和所有校验节点信息,并根据所述变量节点信息和所述校验节点信息更新第一存储器和第二存储器中的迭代信息。
- 如权利要求12所述的LDPC码译码器,其中,所述第一存储器中存储的迭代信息包括变量节点的总置信度,所述第二存储器中存储的迭代信息包括校验矩阵的每条边的码字符号和置信度。
- 如权利要求13所述的LDPC码译码器,其中,控制器包括寻址单元和计算单元,所述寻址单元存储校验节点与变量节点之间的第一映射关系,并存储节点计算单元对所有校验节点的遍历顺序与存储器中校验矩阵每条边的存储顺序之间的第二映射关系,所述计算单元对节点计算单元的计算进行计数,根据计数状态控制寻址单元指示当前计算所对应的存储单元的地址,并控制节点计算单元按照所指示的地址通过运算获得的当前运算的校验节点所对应的变量节点的总置信度和当前运算的校验节点所对应的每条边的码字符号和置信度更新第一存储器和第二存储器。
- 如权利要求12所述的LDPC码译码器,其中,所述LDPC码的校验矩阵包括多个循环矩阵,对于每一个循环矩阵:所述寻址单元中仅存储该循环矩阵中任一个校验节点所对应的存储器中的变量节点的第一映射地址,以及仅存储该循环矩阵中任一个校验节点所对应的存储器中的边的第二映射地址。
- 如权利要求15所述的LDPC码译码器,其中,所述一个循环矩阵中其他校验节点与第一存储器中的相应边的映射地址根据所述第一映射地址、所述其他校验节点相对于所述任一个校验节点的位置和/或所述一个循环矩阵的偏移量确定;所述一个循环矩阵中其他变量节点与第二存储器中的相应边的映射地址根据所述第二映射地址、所述其他变量节点相对于所述任一个变量节点的位置和/或所述一个循环矩阵的偏移量确定。
- 一种LDPC码译码方法,包括:存储LDPC码的校验矩阵的每条边的迭代信息;执行译码迭代运算,直到译码结束,其中,在每一次译码迭代运算 中,逐次遍历计算所有变量节点的变量节点信息,并相应更新存储的迭代信息;以及逐次遍历计算所有校验节点的校验节点信息,并相应更新存储的迭代信息。
- 如权利要求17所述的LDPC码译码方法,进一步包括:存储第一映射关系和第二映射关系,其中,所述第一映射关系包括对所有变量节点进行逐次变量节点计算的遍历顺序与所存储的校验矩阵的每条边的迭代信息的存储顺序之间的映射关系,所述第二映射关系包括对所有校验节点进行逐次校验节点计算的遍历顺序与所存储的校验矩阵的每条边的迭代信息的存储顺序之间的映射关系。
- 如权利要求18所述的LDPC码译码方法,其中,对变量节点计算单元的遍历计算进行计数以确定当前变量节点计算状态,根据当前计算状态和第一映射关系确定第一当前映射地址,根据所述第一当前映射地址对存储的迭代信息进行更新;对校验节点计算单元的遍历计算进行计数以确定当前校验节点计算状态,根据当前校验节点计算状态和第二映射关系确定第二当前映射地址,根据所述第二当前映射地址对存储器中的迭代信息进行更新。
- 如权利要求19所述的LDPC码译码方法,其中,所述LDPC码的校验矩阵包括多个循环矩阵,对于每一个循环矩阵:第一映射关系中仅包括该循环矩阵中任一个变量节点所对应的存储的边的迭代信息的第一映射地址,以及第二映射关系中仅包括该循环矩阵中任一个校验节点所对应的存储的边的迭代信息的第一映射地址。
- 如权利要求20所述的LDPC码译码方法,其中,所述一个循环矩阵中其他变量节点与存储的边的迭代信息的映射地址根据所述第一映射地址、所述其他变量节点相对于所述任一个变量节点的位置和/或所述一个循环矩阵的偏移量确定;所述一个循环矩阵中其他校验节点与存储 的边的迭代信息的映射地址根据所述第二映射地址、所述其他校验节点相对于所述任一个校验节点的位置和/或所述一个循环矩阵的偏移量确定。
- 如权利要求17所述的LDPC码译码方法,其中,所存储的每条边的迭代信息包括与该条边对应的码字符号和置信度,所述变量节点的变量节点信息包括该变量节点对应的各边的码字符号和置信度,所述校验节点的校验节点信息包括该校验节点对应的各边的码字符号和置信度。
- 如权利要求22所述的LDPC码译码方法,其中,在执行当前变量节点计算时,逐次获得所存储的参与当前计算的变量节点对应的所有边的迭代信息,并将该迭代信息与参与当前计算的变量节点对应的初始置信度进行运算以获得参与当前计算的变量节点所对应的所有边的码字符号和置信度,并更新所存储的与当前计算的变量节点对应的所有边的迭代信息中的码字符号和置信度。
- 如权利要求23所述的LDPC码译码方法,其中,在执行当前校验节点计算时,逐次获得所存储的参与当前计算的校验节点对应的所有边的迭代信息,并对该迭代信息进行计算以获得参与当前计算的校验节点对应的所有边的码字符号和置信度,并更新所存储的与当前校验的校验节点对应的所有边的迭代信息中的码字符号和置信度。
- 如权利要求17所述的LDPC码译码方法,其中,当一次译码迭代运算结束后,判断每个校验节点对应的校验和是否为零,若为零则译码成功;若不为零,则执行下一次译码迭代运算,若迭代次数达到最大迭代次数,则译码失败。
- 根据权利要求26-28中任一项所述的装置,还包括:第一存储模块,存储所述生成矩阵。
- 根据权利要求29所述的装置,其中,若所述生成矩阵为稀疏矩阵,则所述第一存储模块仅存储所述生成矩阵的非零元素和所述非零元素对应的位置坐标;若所述生成矩阵的子矩阵为循环矩阵,则所述第一存储模块仅存储所述循环矩阵中所有的非零元素、以及其中一列非零元素对应的位置坐标和相邻两列的循环偏移量。
- 一种数据处理装置,包括:第一存储模块,第二存储模块,和数据处理模块,其中,所述第一存储模块,存储校验矩阵Hl×n,所述LDPC码的校验矩阵包含准双对角矩阵I;所述第二存储模块,存储待编码数据M=(m0,m1…mk-1),以及存储由数据处理模块迭代计算得到的校验位p1,p2…pn-k;在第i次迭代计算后,将这一次迭代所获得的第i个校验位pi存入第二存储模块中,在第i+1次迭代计算时,数据处理模块从第一存储模块中获得校验矩阵第i+1行非零元素的数值,并根据校验矩阵中第i+1行非零元素的位置从第二存储模块中获得对应数据,将所获得的非零元素的数值与从第二存储模块中获得对应数据进行组合运算得到第i+1校验位pi+1。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201680015662.3A CN107852176A (zh) | 2015-01-14 | 2016-01-14 | Ldpc码编码器和译码器 |
US15/529,620 US10536169B2 (en) | 2015-01-14 | 2016-01-14 | Encoder and decoder for LDPC code |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510019132.3 | 2015-01-14 | ||
CN201510019132.3A CN105846830B (zh) | 2015-01-14 | 2015-01-14 | 数据处理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016112857A1 true WO2016112857A1 (zh) | 2016-07-21 |
Family
ID=56405255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2016/070865 WO2016112857A1 (zh) | 2015-01-14 | 2016-01-14 | Ldpc码编码器和译码器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10536169B2 (zh) |
CN (2) | CN105846830B (zh) |
WO (1) | WO2016112857A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110518919A (zh) * | 2019-08-01 | 2019-11-29 | 湖南国科锐承电子科技有限公司 | 低密度奇偶校验码的分层译码方法和系统 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107872231B (zh) * | 2016-09-28 | 2023-04-28 | 北京忆芯科技有限公司 | Ldpc译码方法与装置 |
TWI684856B (zh) * | 2018-04-20 | 2020-02-11 | 慧榮科技股份有限公司 | 解碼方法及相關的快閃記憶體控制器與電子裝置 |
CN117040546A (zh) * | 2018-04-24 | 2023-11-10 | 北京忆芯科技有限公司 | 低延迟ldpc译码器及其译码方法 |
CN112328208A (zh) * | 2018-09-18 | 2021-02-05 | 安徽寒武纪信息科技有限公司 | 运算装置及方法 |
CN111064475A (zh) * | 2018-10-16 | 2020-04-24 | 华为技术有限公司 | 基于低密度奇偶校验码的译码方法及装置 |
CN110474647B (zh) * | 2019-07-03 | 2023-05-23 | 深圳市通创通信有限公司 | 有限域构造的ldpc码的译码方法、装置、译码器及存储介质 |
CN112583420B (zh) * | 2019-09-30 | 2024-01-09 | 上海华为技术有限公司 | 一种数据处理方法和译码器 |
CN110768679B (zh) * | 2019-10-30 | 2023-08-22 | 湖南国科微电子股份有限公司 | 64进制ldpc的码字校验方法及系统 |
CN111211791A (zh) * | 2020-02-27 | 2020-05-29 | 深圳市航天华拓科技有限公司 | Ldpc编译码方法及系统 |
CN112152637B (zh) * | 2020-09-10 | 2024-04-30 | 南京中科晶上通信技术有限公司 | Dvb-s2 ldpc译码变量节点更新模块及其实现方法 |
CN112242851B (zh) * | 2020-11-23 | 2024-03-19 | 湖南国科锐承电子科技有限公司 | 一种ldpc码的分层译码中迭代数据处理方法及译码器系统 |
CN113411087B (zh) * | 2021-06-30 | 2023-05-09 | 展讯半导体(成都)有限公司 | 解码q元LDPC的方法、电路及包括其的接收机 |
CN113595563B (zh) * | 2021-08-02 | 2024-03-29 | 上海金卓科技有限公司 | 一种ldpc译码的方法、装置、设备及存储介质 |
CN114584259B (zh) * | 2022-02-18 | 2024-02-09 | 阿里巴巴(中国)有限公司 | 译码方法、装置、设备及存储介质 |
CN117375636B (zh) * | 2023-12-07 | 2024-04-12 | 成都星联芯通科技有限公司 | 提高qc-ldpc译码器吞吐率的方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488760A (zh) * | 2009-02-13 | 2009-07-22 | 华中科技大学 | 一种低码率ldpc码的编码方法 |
US20100192043A1 (en) * | 2008-06-23 | 2010-07-29 | Ramot At Tel Aviv University Ltd. | Interruption criteria for block decoding |
CN102801432A (zh) * | 2012-07-20 | 2012-11-28 | 航天恒星科技有限公司 | 一种多进制ldpc的串行fht-bp译码方法及装置 |
CN103929189A (zh) * | 2014-04-23 | 2014-07-16 | 荣成市鼎通电子信息科技有限公司 | 近地通信中部分并行输入的累加左移qc-ldpc编码器 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266750B1 (en) * | 2002-07-10 | 2007-09-04 | Maxtor Corporation | Error recovery strategies for iterative decoders |
US7159170B2 (en) * | 2003-06-13 | 2007-01-02 | Broadcom Corporation | LDPC (low density parity check) coded modulation symbol decoding |
US7395490B2 (en) * | 2004-07-21 | 2008-07-01 | Qualcomm Incorporated | LDPC decoding methods and apparatus |
CN100486118C (zh) * | 2005-11-21 | 2009-05-06 | 东南大学 | 一种基于分段偏移修正的最小和译码方法 |
US8359522B2 (en) * | 2007-05-01 | 2013-01-22 | Texas A&M University System | Low density parity check decoder for regular LDPC codes |
TW200908569A (en) * | 2007-05-21 | 2009-02-16 | Ramot At Tel Aviv University Co Ltd | Memory-efficient LDPC decoding |
CN101383618B (zh) * | 2007-09-05 | 2013-02-27 | 中兴通讯股份有限公司 | 一种传输块的循环冗余校验码的编码方法 |
CN101640543B (zh) * | 2008-07-31 | 2013-06-05 | 深圳市同洲电子股份有限公司 | 一种ldpc码的编码装置及方法 |
US8335949B2 (en) * | 2009-11-06 | 2012-12-18 | Trellisware Technologies, Inc. | Tunable early-stopping for decoders |
JP5310701B2 (ja) * | 2010-10-29 | 2013-10-09 | 株式会社Jvcケンウッド | 復号装置および復号方法 |
US8549387B2 (en) * | 2010-11-04 | 2013-10-01 | Himax Media Solutions, Inc. | System and method of decoding LDPC code blocks |
JP2012244305A (ja) * | 2011-05-17 | 2012-12-10 | Toshiba Corp | メモリコントローラ、半導体メモリ装置、および復号方法 |
CN202395755U (zh) * | 2011-09-29 | 2012-08-22 | 中国电子科技集团公司第五十四研究所 | Qc_ldpc高速部分并行信道译码器 |
US8707144B2 (en) * | 2011-10-17 | 2014-04-22 | Lsi Corporation | LDPC decoder with targeted symbol flipping |
CN103023516A (zh) * | 2013-01-01 | 2013-04-03 | 苏州威士达信息科技有限公司 | 联合生成矩阵和校验矩阵的ldpc编码器和编码方法 |
GB2510932B (en) * | 2013-08-27 | 2015-01-21 | Imagination Tech Ltd | An improved decoder for low-density parity-check codes |
KR102114860B1 (ko) * | 2013-09-04 | 2020-05-25 | 엘지전자 주식회사 | 가전기기, 가전기기 시스템 및 그 제어 방법 |
US9184767B2 (en) * | 2013-09-19 | 2015-11-10 | SanDisk Technologies, Inc. | Scoring variable nodes for low density parity check code decoding |
CN103916134B (zh) * | 2014-03-24 | 2017-01-11 | 清华大学 | 低密度奇偶校验码的混叠译码方法及多核协同混叠译码器 |
CN103905055A (zh) * | 2014-04-23 | 2014-07-02 | 荣成市鼎通电子信息科技有限公司 | 部分并行输入的右移累加qc-ldpc编码器 |
CN103929207A (zh) * | 2014-04-23 | 2014-07-16 | 荣成市鼎通电子信息科技有限公司 | Cmmb中部分并行输入的右移累加qc-ldpc编码器 |
US9503125B2 (en) * | 2014-05-08 | 2016-11-22 | Sandisk Technologies Llc | Modified trellis-based min-max decoder for non-binary low-density parity-check error-correcting codes |
CN103957015B (zh) * | 2014-05-12 | 2017-02-01 | 福州大学 | 用于ldpc码解码的非均匀量化编码方法及其在解码器的应用 |
-
2015
- 2015-01-14 CN CN201510019132.3A patent/CN105846830B/zh not_active Expired - Fee Related
-
2016
- 2016-01-14 US US15/529,620 patent/US10536169B2/en active Active
- 2016-01-14 WO PCT/CN2016/070865 patent/WO2016112857A1/zh active Application Filing
- 2016-01-14 CN CN201680015662.3A patent/CN107852176A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100192043A1 (en) * | 2008-06-23 | 2010-07-29 | Ramot At Tel Aviv University Ltd. | Interruption criteria for block decoding |
CN101488760A (zh) * | 2009-02-13 | 2009-07-22 | 华中科技大学 | 一种低码率ldpc码的编码方法 |
CN102801432A (zh) * | 2012-07-20 | 2012-11-28 | 航天恒星科技有限公司 | 一种多进制ldpc的串行fht-bp译码方法及装置 |
CN103929189A (zh) * | 2014-04-23 | 2014-07-16 | 荣成市鼎通电子信息科技有限公司 | 近地通信中部分并行输入的累加左移qc-ldpc编码器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110518919A (zh) * | 2019-08-01 | 2019-11-29 | 湖南国科锐承电子科技有限公司 | 低密度奇偶校验码的分层译码方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105846830B (zh) | 2019-07-30 |
US10536169B2 (en) | 2020-01-14 |
CN105846830A (zh) | 2016-08-10 |
US20170264314A1 (en) | 2017-09-14 |
CN107852176A (zh) | 2018-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016112857A1 (zh) | Ldpc码编码器和译码器 | |
US10146618B2 (en) | Distributed data storage with reduced storage overhead using reduced-dependency erasure codes | |
US9996420B2 (en) | Error-correction encoding and decoding | |
CN107370490B (zh) | 结构化ldpc的编码、译码方法及装置 | |
US11115051B2 (en) | Systems and methods for decoding error correcting codes | |
US8966339B1 (en) | Decoder supporting multiple code rates and code lengths for data storage systems | |
US9195536B2 (en) | Error correction decoder and error correction decoding method | |
CN100589357C (zh) | 基于单位阵及其循环移位阵的ldpc码向量译码装置和方法 | |
WO2015123979A1 (zh) | 结构化ldpc的编码方法、译码方法、编码装置和译码装置 | |
CN107919874B (zh) | 校验子计算基本校验节点处理单元、方法及其计算机程序 | |
US10090860B2 (en) | Memory system using integrated parallel interleaved concatenation | |
CN106936444B (zh) | 一种集合译码方法和集合译码器 | |
US9250994B1 (en) | Non-binary low-density parity check (LDPC) decoding using trellis maximization | |
JP2007215089A (ja) | 復号装置及び復号方法 | |
US10606697B2 (en) | Method and apparatus for improved data recovery in data storage systems | |
US9748974B2 (en) | Non-binary LDPC decoder using binary subgroup processing | |
EP2992429B1 (en) | Decoder having early decoding termination detection | |
US20170134048A1 (en) | Message-passing based decoding using syndrome information, and related methods | |
JP2022124682A (ja) | メモリシステム | |
CN111384970B (zh) | 一种译码方法、装置及通信设备 | |
WO2017193614A1 (zh) | 结构化ldpc的编码、译码方法及装置 | |
US20150254130A1 (en) | Error correction decoder | |
US10530395B2 (en) | Iterative message-passing decoding with global code embedded with local code in time-division manner for fault tolerance improvement | |
CN102624402B (zh) | 一种ldpc译码器 | |
US9619317B1 (en) | Decoder having early decoding termination detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16737082 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 15529620 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
32PN | Ep: public notification in the ep bulletin as address of the adressee cannot be established |
Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 03/01/2018) |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 16737082 Country of ref document: EP Kind code of ref document: A1 |