CN111162795B - LDPC coding hardware implementation method based on check sub-matrix segmentation - Google Patents
LDPC coding hardware implementation method based on check sub-matrix segmentation Download PDFInfo
- Publication number
- CN111162795B CN111162795B CN202010010183.0A CN202010010183A CN111162795B CN 111162795 B CN111162795 B CN 111162795B CN 202010010183 A CN202010010183 A CN 202010010183A CN 111162795 B CN111162795 B CN 111162795B
- Authority
- CN
- China
- Prior art keywords
- coding
- matrix
- cyclic
- encoding
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
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/1148—Structural properties of the code parity-check or generator matrix
- H03M13/1174—Parity-check or generator matrices built from sub-matrices representing known block codes such as, e.g. Hamming codes, e.g. generalized LDPC codes
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
The invention discloses an LDPC coding hardware implementation method based on coding sub-matrix segmentation, and aims to provide an LDPC coding hardware implementation method which is high in parallelism, low in operand, good in expandability and convenient for hardware implementation. The invention is realized by the following technical scheme: when FPGA codes, firstly, the check part of a generated matrix is divided into rows and columns according to the size of a cyclic subarray, and the first row of the cyclic subarray belonging to the same subblock is stored in a ROM (read only memory) table and is used as a basic coding unit (PE); the encoding state machine controls the encoding submodule PE to read out data from the ROM table and store the data into the encoding shift register, expands input one-bit information into row vectors with the same number as that of the basic encoding subarrays, completes the check of a plurality of circular subarray rows through the operation of AND and XOR, realizes the division of the encoding subarray based on the subarray storage of the ROM table and the block encoding hardware of the generated matrix, and completes the encoding of the submodules.
Description
Technical Field
The invention relates to the technical field of channel coding, in particular to an LDPC coding hardware implementation method based on check sub-matrix segmentation, which can be applied to optical fiber communication, satellite communication and wireless communication.
Background
With the rapid development of communication technology and the continuous improvement of reliability requirements of various transmission modes, the channel coding technology is an important means of anti-interference technology, and plays an increasingly important role in the fields of digital communication technology and digital transmission. With the advent of digital cellular telephones, digital televisions, and high resolution digital storage devices, encoding techniques have increasingly been successfully employed in a variety of information communication and storage devices. One of the most commonly used error correction coding techniques is a Low Density Parity Check (LDPC) code, which is one of the codes commonly used in the CCSDS standard in the field of channel coding today. The check matrix is a sparse matrix, and is a linear block code based on the sparse check matrix. The name of the LDPC code is derived from that a check matrix is a sparse matrix, namely the number of non-O elements in the matrix is far less than that of the O elements, or the row weight and the column weight of the matrix are very small numbers compared with the code length. To design an LDPC code, the most straightforward and efficient method is to construct a low-density parity-check matrix H according to a specified standard. The sparse check matrix is a check matrix in which the number of "1" included in each row and each column is very small relative to the code length. And dividing the LDPC code into a regular LDPC code and an irregular LDPC code according to whether the row weight of each row and the column weight of each column in the check matrix are the same or not. The LDPC code is parallel in structure, and the codec is easy to implement in hardware, and is widely considered as a channel coding scheme capable of meeting high-speed data transmission and high-performance requirements of a fourth-generation mobile communication system. The LDPC code has the most significant characteristic that the check matrix is a large sparse matrix, but also results in a huge operation amount in the encoding process. In reality, the LDPC code can be applied not only to deep space communication with a large throughput, but also to an ultra-low speed wireless communication system, a transmission system of control and command information such as space flight. As one of the code patterns with the strongest error correction capability in channel coding, the LDPC code can obtain a high throughput with less resource consumption due to its simple decoder structure, but the application of the LDPC code is restricted by the complexity problem of the encoder as a negative factor. Although the check matrix of the LDPC code is a sparse matrix, the generated matrix is not sparse, so that the encoding complexity is proportional to the square of the code length. Because the code length of the LDPC code is long, from thousands to hundreds of thousands of bits, the encoding thereof becomes complicated, which hinders the application of the LDPC code to some extent. Meanwhile, the amount of operation of encoding is in the form of the square of the code length, when the code length is large. Measures need to be taken to reduce complexity. The quality of a coding method is completely determined by its check matrix, i.e. the structure of the check matrix is decisive for the performance of the code. The check matrix mainly has two types: a random check matrix and a structured check matrix. Although the randomly generated check matrix has good error correction performance, simple encoding cannot be realized due to the randomness of the check matrix, and the check matrix is high in storage complexity during decoding and is not beneficial to realization. The structured check matrix can be generated by algebraic geometry, combined construction and other modes, can overcome the generation of short circulation, has a determined structure, generates the LDPC code which is a cyclic code or a quasi-cyclic code, can realize linear time coding and simple decoding, can design a code with larger Girth, and has the error correction performance reaching the code generated by the random check matrix.
At present, there are many construction methods related to LDPC codes, and there are different construction methods for long codes, medium-long codes, and short codes, wherein the LDPC code construction methods can be mainly divided into two categories: one type is LDPC code with random structure, although the code has good error correction capability in long code, the code group is too long and the irregularity of the generated matrix and the check matrix makes the code too complex to be realized by hardware; the other is a structural code constructed by methods of geometric, algebraic and combinatorial design. Most LDPC structure codes have a cyclic or quasi-cyclic structure, and the quasi-cyclic codes have quite strong error correction capability in medium-short codes, and the performance is close to the optimal LDPC codes with random structures. Because the check part of the LDPC code generating matrix has poor sparsity and does not have too many rules, a large amount of resources are consumed by directly storing the generating matrix. The general method is to construct a lower triangular matrix or similar lower triangular matrix which is easy to encode, and encode by using the constraint relation between information bits and check bits in the matrix. Thus, although a linear encoding-capable LDPC code can be obtained, the LDPC code set is not only constrained by the node degree distribution, but also constrained by the check matrix form. Since the traditional encoding method generates code words by generating a matrix, the complexity is proportional to the square of the code length, which makes the LDPC code require a large amount of hardware resources and a long delay in encoding. The generator matrix of the LDPC code is non-sparse, when the LDPC code is long, the storage of a huge generator matrix is difficult, and the encoding by the generator matrix also has high time complexity. Compared with the simplicity of the LDPC decoding algorithm, the encoding algorithm is too complex, and particularly for the LDPC code with low sparsity and poor check matrix regularity, the hardware implementation of encoding is difficult, more hardware resources are consumed, and the encoding efficiency is low. The coding steps and the coding complexity are both proportional to the code length n. How to implement LDPC coding hardware quickly and efficiently has been a problem of great concern.
In order to solve the problem of encoding complexity of the LDPC code, various LDPC code encoding algorithms are proposed in the prior art, and common LDPC code encoding algorithms include an RU algorithm-based encoding method, a quasi-cyclic LDPC code and an encoding method thereof, a fast quasi-cyclic LDPC code encoding method, and the like. The traditional encoding algorithm of the LDPC code is very similar to the general linear block code, and a generator matrix needs to be solved firstly. If an input information vector M of length k is known, and a generator matrix G of k × n is known, a codeword can be obtained by matrix multiplication: c = M × G. After the check matrix H is obtained, the generator matrix G can be obtained by a Gaussian elimination method by utilizing the orthogonality between H and G. The conventional encoding algorithm of the LDPC code mainly includes two steps of preprocessing and actual encoding. The precoding converts the check matrix H into an approximate lower triangular matrix form H' through row-column transformation, and the precoding is performed only once and can be preprocessed in software. Then, H' is divided into 6 sparse matrixes, and p1 and p2 are obtained through step-by-step calculation, wherein the complexity of p1 is O (N + g 2), and the calculation complexity of p2 is O (N). However, there is no satisfactory way to obtain this approximate lower triangular matrix, and the check matrix rearranged by the greedy algorithm by t.j. Especially when the code length is long, this coding method is not an ideal implementation.
The quasi-cyclic LDPC code is an LDPC code with a special structure and a wider application range, and a check matrix Hqc of the quasi-cyclic LDPC code is composed of a series of small cyclic square matrixes which can be permutation matrixes or matrixes based on finite geometry and the like. Due to the quasi-cyclic characteristic of the Hqc, a generated matrix with a system code form and the quasi-cyclic characteristic can be obtained, and the coding operation of the input information and the generated matrix can be realized only by adopting a shift register. Because the LDPC code is a linear block error correction code, its conventional encoding algorithm is similar to the linear block code, and its generator matrix must be calculated. Aiming at some special quasi-cyclic LDPC codes, D.E, hocevar and the like, a method for quickly coding by using a shift register only by using a check matrix is provided, and the method is superior to an LDPC coding scheme based on an RU algorithm in view of low complexity of implementation, but is only suitable for the LDPC codes with the quasi-cyclic characteristic.
In the common coding algorithm, H2-1 obtained by the Gaussian elimination method is neither a sparse matrix nor an obvious quasi-cyclic characteristic, so that the computational complexity is high in the computational process, the computational speed is reduced, and the overall coding speed and efficiency are influenced.
At present, the LDPC code fast coding structure based on matrix partitioning becomes a research hotspot due to the performance close to the Shannon limit and the high-speed parallel decoding structure. However, the hardware implementation of the codec becomes difficult when the code length is long. In order to solve the hardware implementation difficulty of the codec, the prior art documents disclose a Gallager structure method, a Mackay structure method and a short code length LDPC fully parallel decoder hardware structure with good error correction performance. Because the check matrixes of the Gallager construction method and the Mackay construction method are randomly generated, although the error correction performance of the check matrixes is good, simple coding cannot be realized due to the randomness of the check matrixes, and meanwhile, the decoding complexity is high, so that the system design becomes very complicated; and the hardware implementation complexity of LDPC codes constructed in this manner can be significant. Because the generating matrix of the LDPC code is non-sparse, when the LDPC code is long, it is difficult to store a huge generating matrix, and the encoding directly by using the generating matrix usually has higher time complexity, which is not beneficial to hardware implementation.
Disclosure of Invention
Aiming at solving the problem of coding complexity of the LDPC code, the invention aims to overcome the defects of large direct coding operand and high complexity of the existing LDPC coding technology and provides the LDPC coding hardware implementation method which has high parallelism, low operand, good expandability, is convenient for hardware implementation, has low coding complexity, and can adapt to any code rate and code length and is based on coding sub-matrix division.
The above object of the present invention can be achieved by the following technical solutions, and an LDPC coding hardware implementation method based on coding sub-matrix partitioning has the following technical features: in order to improve the parallelism of coding, modularize the coding, save hardware resources and realize modular coding, when the FPGA codes, based on the VHDL language of the FPGA, firstly, the check part of a generated matrix is divided into columns and blocks according to the size of a cyclic sub-matrix, and each column block comprises one or more cyclic sub-matrices; storing the first row of each cyclic subarray into a ROM (read only memory) table, wherein the number of the ROM table is consistent with the number of the P matrix column blocks; the ROM tables correspond to a part of the LDPC generator matrix check part, each of the ROM tables being an encoding sub-module (PE) of one basic encoding unit; the coding state machine calls different first rows of the cyclic subarrays to block a check part of the generated matrix into a number of columns of each subarray which is equal to a multiple of the number of the cyclic subarrays according to the columns, a coding sub-module (PE) reads out one piece of data from a ROM (read only memory) table and stores the data into a coding shift register, input one piece of information is expanded into a row vector which is the same as the number of the basic coding subarrays, check of a plurality of cyclic subarray rows is completed simultaneously by using 1 piece of input information through AND (exclusive OR) operation, a check sequence and an information sequence corresponding to LDPC coding are realized, partitioning of the coding subarrays is realized based on subarray storage of the ROM table and block coding hardware of the generated matrix, and coding of the sub-modules is completed.
Compared with the prior art, the invention has the following beneficial effects.
High parallelism and low computation. Aiming at the problems that the check part of an LDPC code generation matrix is poor in sparsity and has no too many rules, a large amount of resources are consumed by directly storing the generation matrix, and the like, the invention provides a method for realizing the partition of a coding sub-matrix based on sub-matrix storage of a ROM table and block coding of the generation matrix, the sparse check sub-matrix is partitioned into rows and columns according to the size of a cyclic sub-matrix, the sub-matrix after being partitioned into columns is stored in corresponding ROM table 1 and ROM table 2 8230, the ROM table N is used as a coding sub-module PE, and the number of columns of each sub-block PE is equal to the multiple of the number of columns of the cyclic sub-matrix. The hardware implementation structure of the coding structure is simple, the parallelism is high, and the operation amount is low. Can be flexibly applied to various different types of LDPC codes, and can effectively allocate memory units and realize parallel processing in the operation process to the maximum extent possible.
With lower coding complexity. The check part of the generated matrix is divided into blocks according to columns, the division standard can be determined according to practical application, and the row of each block can contain one cyclic subarray or a plurality of cyclic subarrays in consideration of hardware resources. In the process of coding each basic unit, only the first row of each cyclic sub-matrix needs to be stored, and the acquisition of the first rows of different sub-matrices is controlled by a state machine, so that hardware resources are effectively saved, and the hardware implementation is very simple. During coding, each part is used as a coding sub-module (PE), and the coding of all the parts only needs to be implemented by multiple instantization coding sub-modules. The coding mode is flexible, easy to expand and simple in hardware implementation structure. The huge operation amount requirement and storage amount requirement of the LDPC codes with random structures on the encoding are greatly reduced.
In order to improve the parallelism of the codes and modularize the codes so as to save hardware resources, the invention divides the generated matrix into blocks according to columns and realizes modularized coding. During coding, one bit of input information completes the verification of a plurality of cyclic subarrays simultaneously, the coding parallelism is increased, the coding complexity is further simplified, and the coding speed is greatly improved. Due to the particularity of the cyclic subarray, only the first row of the cyclic subarray can be stored in the ROM table, resources are saved, and other rows of the subarray can be obtained by right shifting according to the cycle of the first row. Therefore, when encoding, only need to judge whether need to read the new head line, and this process is realized by the state control module. In other cases, the encoding of the sub-modules can be completed through AND and XOR operation.
Convenient to expand, the practicality is strong. The invention reads out a datum from a ROM table, stores the datum in the coding shift register, inputs a bit of information, expands the bit into a row vector with the same order as a cyclic sub-array, then completes the coding of the sub-module through simple AND and XOR operation, and can adapt to LDPC coding with any code rate and code length. The coding mode is flexible and easy to expand, and can reduce the consumption of FPGA resources. The first row of the cyclic submatrix in each basic coding unit is stored in the ROM table, so that the corresponding generated submatrix can be obtained by searching the ROM table when the FPGA codes conveniently, and the method has strong practicability.
Drawings
FIG. 1 is a schematic diagram of an LDPC hardware coding scheme based on sub-matrix partitioning according to the present invention.
FIG. 2 is a flow chart of the LDPC coding algorithm based on the sub-matrix partitioning of the present invention.
Detailed Description
See fig. 1. According to the invention, in order to improve the parallelism of coding and modularize the coding, save hardware resources and realize modularized coding, when the FPGA codes, firstly, the check part of a generated matrix is divided into rows and columns according to the size of a cyclic sub-matrix, and each row block comprises one or more cyclic sub-matrices; the top row of each cyclic sub-array is stored in a ROM table. Because the first row of each column of block cyclic array is stored in the ROM table, the ROM table corresponds to a part of the check part of the LDPC generator matrix, when in coding, each ROM table is used as a coding sub-module (PE) of a basic coding unit, and how to call different cyclic sub-array first rows is controlled by a coding state machine; after the check part of the generated matrix is partitioned according to columns, the number of the columns of each sub-matrix is equal to the multiple of the number of the circular sub-matrix, because each sub-block can be spliced together by a plurality of parallel circular sub-blocks, in order to utilize the circular characteristic of the circular sub-matrix and save resources, only the first row of the circular sub-matrix in each basic coding unit is saved and stored in a ROM (read only memory) table; when the basic coding unit is coded, reading out a datum from a Read Only Memory (ROM) table and storing the datum into a coding shift register, inputting a bit of information, expanding the bit into a row vector with the same number as that of a basic coding subarray, and then completing the coding of the submodule through AND and XOR operation; and after all the basic coding units are coded, obtaining code word information bits and check bits, partitioning the check part of the generated matrix according to columns, storing the submatrices after column division into corresponding ROM table 1 and ROM table 2 \8230, wherein the ROM table N is used as parallel subblocks of the coding submodule, and the column number of each subblock is equal to the multiple of the column number of the cyclic submatrices. In order to utilize the characteristics of the cyclic sub-matrix and save resources, the first row of the cyclic sub-matrix in each basic coding unit is stored in the ROM table in order. When the basic coding unit is coded, reading out a datum from a ROM table and storing the datum into a coding shift register, inputting a bit of information, expanding the bit into a row vector with the same order as a coding sub-array, and then completing the coding of the sub-module through simple operations of phase addition, exclusive or and the like; when all the basic coding units complete coding, code word information bits and check bits are obtained, and the operations are executed on each coding subarray, so that the purpose that the check of all the cyclic subarray rows is completed by using 1-bit input information can be achieved, and the coding parallelism is increased. And after all the basic coding units finish coding, obtaining a code word information bit and a check bit, and finally finishing output from the data output interface.
During encoding, each row divided into one block comprises one cyclic subarray or a plurality of cyclic subarrays, different cyclic subarrays are switched by reading different ROM addresses, the process is realized through a state control module, the state control module performs independent encoding on each submodule through state control, and finally results of all submodules are spliced to form total encoding, so that encoding of the LDPC code is realized.
In an optional embodiment, in order to obtain an LDPC code that meets the requirement of a satellite communication system for high reliability of channel error correction coding, a generation matrix G of the LDPC code is obtained by using an original pattern expansion method recommended by the CCSDS standard for expansion splitting of an original pattern base matrix structure, the expansion method uses a progressive edge growth PEG (PEG) algorithm, uses an AR4JA code optimized construction method based on the original pattern expansion, and establishes an AR4JA coding stereo Tanner graph model by expanding a composite node associated with a check node on the basis of an original pattern construction template. And finally obtaining the required LDPC generator matrix G.
In an alternative embodiment, considering a quasi-cyclic LDPC code, let the LDPC code generator matrix G = [ I, P ])]Where I is a K × K identity matrix of LDPC, and P is a dense quasi-cyclic matrix of K × (N-K) dimensions, whose dense quasi-cyclic matrix P is shown below:wherein, mij represents a cyclic subarray forming the LDPC code check matrix, and m and n respectively represent the row number and the column number of the cyclic subarray.
L-order cyclic matrix M of check matrix P i,j As will be shown below, in the following,
where aij represents each element of the cyclic sub-array, i =1, 2.
The performance of the proposed algorithm is illustrated in the present invention with an LDPC (980, 784) code, with L =14,m =56,n =14 when simulated using this LDPC code.
See fig. 2. Each datum in the ROM table may be the first row of a plurality of cyclic sub-arrays, as the case may be, in this example each datum is exactly one row of one cyclic sub-array. Inputting a bit of information, and expanding the bit into a row vector with the same order as the cyclic subarray in order to facilitate calculation of the later check code word; when the basic coding unit is coded, the coding starts from the i =1 information bit and the j =1 line of the cyclic subarray, when the basic coding unit is coded, the i information bit alpha data is read from a ROM table and stored in a coding shift register, and the input one bit information alpha is subjected to bit expansion to form a line vector with the same order L as the cyclic subarray; becomes bit information after spreadingThen, the bit information A and the value in the coding shift register are summed to obtain an intermediate vector B; then, the XOR result B and the median value of the check shift register are subjected to XOR, so that the XOR result covers the current check shift register; and judging whether a new subarray needs to be read again and stored in the coding register, if so, reading the new subarray from the ROM table, otherwise, circularly moving the current coding register to the right, continuing coding, repeating the process until all the coding subarrays participate in operation, and finishing output after all the basic coding units finish coding to obtain a code word information bit and a check bit.
When judging whether a new subarray needs to be read again, judging whether the shift times j of the register are smaller than the order L of the quasi-cyclic subarray, if the check bit j is smaller than the order L, shifting the value in the coding shift register to the right by one bit according to the cycle of the first row, wherein j = j +1, feeding back to the step of inputting one-bit information, continuing to circulate downwards, and ending the program after obtaining a code word information bit and a check bit; otherwise, encoding the next information, i = i +1, encoding the next cyclic sub-array, wherein j =1, then judging whether i is smaller than the number m of quasi-cyclic matrixes in each sub-array of the check matrix P, continuously reading out a datum from the ROM table, storing the datum into the encoding shift register, and continuously encoding until all cyclic sub-arrays finish checking.
Claims (10)
1. An LDPC coding hardware realization method based on coding sub-matrix segmentation has the following technical characteristics: in order to improve the parallelism of coding, modularize the coding, save hardware resources and realize modular coding, when the FPGA codes, based on the VHDL language of the FPGA, firstly, the check part of a generated matrix is divided into columns and blocks according to the size of a cyclic sub-matrix, and each column block comprises one or more cyclic sub-matrices; storing the first row of the cyclic subarrays belonging to the same column block in a ROM table; the ROM tables correspond to a part of the check part of the LDPC generating matrix, and each ROM table is used as an encoding submodule PE of a basic encoding unit; the coding state machine calls different coding sub-modules PE, reads out data from a ROM table and stores the data in a coding shift register, expands input one-bit information into row vectors with the same number as that of basic coding sub-arrays, uses 1-bit input information to complete the check of a plurality of cyclic sub-array rows simultaneously through the operation of AND and XOR, realizes the check sequence and information sequence corresponding to the LDPC coding, realizes the partition of the coding sub-matrix based on the sub-array storage of the ROM table and the block coding hardware of a generating matrix, and completes the coding of the sub-modules.
2. The LDPC coding hardware implementation based on coded sub-matrix partitioning of claim 1 wherein: and after all the basic coding units finish coding, obtaining a code word information bit and a check bit, and finally finishing output from the data output interface.
3. The LDPC coding hardware implementation method based on coding submatrix partitioning of claim 1, wherein: during encoding, each row divided into one block comprises a cyclic subarray or a plurality of cyclic subarrays, different cyclic subarrays are switched by reading different ROM addresses, the process is realized through a state control module, the state control module performs independent encoding on each sub-module through state control, and finally results of all the sub-modules are spliced to form total encoding, so that encoding of the LDPC code is realized.
4. The LDPC coding hardware implementation based on coded sub-matrix partitioning of claim 1 wherein: aiming at the expansion splitting of the base matrix structure of the original graph, an original graph expansion method recommended by the CCSDS standard is adopted to obtain a generating matrix G of the LDPC code, the expansion method uses a progressive edge growth PEG algorithm, an AR4JA code optimization construction method based on the original graph expansion is adopted, and on the basis of constructing a template by the original graph, an AR4JA coding three-dimensional Tanner graph model is established through expanding composite nodes associated with check nodes, so that the required LDPC generating matrix G is obtained.
5. The LDPC coding hardware implementation method based on coding submatrix partitioning of claim 1, wherein: if an LDPC code generation matrix is set, and P is a K × (N-K) -dimensional dense quasi-cyclic matrix, the dense quasi-cyclic matrix P is as follows: g = [ I, P ], where I is the K × K identity matrix of LDPC.
6. The method of claim 5 for implementing LDPC coding hardware based on coding submatrix partitioning, wherein: the dense quasi-cyclic matrix P is shown below:
wherein, M represents the cyclic subarray forming the LDPC code check matrix, and M and n respectively represent the row number and the column number of the cyclic subarray.
7. The coding sub-matrix partitioning-based LDPC coding hardware implementation method of claim 6 wherein: l-order cyclic matrix M of check matrix P i,j As will be shown below, in the following,
wherein a represents each element of the cyclic sub-array, i =1, 2.. M, j =1, 2.. N; l =14,m =56,n =14 in simulation using the LDPC code.
8. The LDPC coding hardware implementation based on coded sub-matrix partitioning of claim 1 wherein: when encoding a basic encoding unit, encoding starts from the i =1 information bit and the j =1 line of a cyclic sub-array, when encoding the basic encoding unit, the i information bit alpha is read from a ROM table, data is stored in an encoding shift register, and the input one-bit information alpha is subjected to bit expansion to be a row vector with the same order L as the cyclic sub-array; becomes bit information after spreading
9. The LDPC coding hardware implementation method based on coding submatrix partitioning of claim 8, wherein: and after the result of the XOR covers the check shift register, judging whether a new subarray needs to be read again and stored in the coding register, if so, reading the new subarray from the ROM table, otherwise, circularly right-shifting the current coding register, continuing coding, repeating the process until all the coding subarrays participate in operation, and finishing output after all the basic coding units finish coding to obtain a code word information bit and a check bit.
10. The LDPC coding hardware implementation method based on coding submatrix partitioning of claim 1, wherein: when judging whether a new subarray needs to be read again, judging whether the shift frequency j of the register is smaller than the order L of the quasi-cyclic subarray, if the check bit j is smaller than the order L, shifting the value in the coding shift register by one bit to the right according to the cycle of a first row, wherein j = j +1, feeding back to the step of inputting one-bit information, continuing to circulate downwards, and ending the program after obtaining a code word information bit and a check bit; otherwise, encoding the next information, i = i +1, encoding the next cyclic sub-array, wherein j =1, then judging whether i is smaller than the number m of quasi-cyclic matrixes in each sub-array of the check matrix P, continuously reading out a datum from the ROM table, storing the datum into the encoding shift register, and continuously encoding until all cyclic sub-arrays finish checking.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010010183.0A CN111162795B (en) | 2020-01-06 | 2020-01-06 | LDPC coding hardware implementation method based on check sub-matrix segmentation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010010183.0A CN111162795B (en) | 2020-01-06 | 2020-01-06 | LDPC coding hardware implementation method based on check sub-matrix segmentation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111162795A CN111162795A (en) | 2020-05-15 |
CN111162795B true CN111162795B (en) | 2023-02-03 |
Family
ID=70561568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010010183.0A Active CN111162795B (en) | 2020-01-06 | 2020-01-06 | LDPC coding hardware implementation method based on check sub-matrix segmentation |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111162795B (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111817728B (en) * | 2020-08-03 | 2022-03-01 | 华中科技大学 | Simulation system for realizing LDPC coding and decoding based on hardware and working method thereof |
CN113422611B (en) * | 2021-05-19 | 2022-11-04 | 上海大学 | Highly parallel encoding method of QC-LDPC encoder |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379086A (en) * | 2018-10-11 | 2019-02-22 | 西安电子科技大学 | The 5G LDPC coding method of the code-rate-compatible of low complex degree and encoder |
CN109802687A (en) * | 2018-12-25 | 2019-05-24 | 西安空间无线电技术研究所 | A kind of high speed code-rate-compatible LDPC encoder of the QC-LDPC code based on FPGA |
-
2020
- 2020-01-06 CN CN202010010183.0A patent/CN111162795B/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379086A (en) * | 2018-10-11 | 2019-02-22 | 西安电子科技大学 | The 5G LDPC coding method of the code-rate-compatible of low complex degree and encoder |
CN109802687A (en) * | 2018-12-25 | 2019-05-24 | 西安空间无线电技术研究所 | A kind of high speed code-rate-compatible LDPC encoder of the QC-LDPC code based on FPGA |
Non-Patent Citations (1)
Title |
---|
基于FPGA的LDPC编码实现与验证;马志刚等;《电子科技》;20130815(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111162795A (en) | 2020-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101789959B1 (en) | Encoding Method, Decoding Method, Encoding device and Decoding Device for Structured LDPC | |
CN102394661B (en) | LDPC (low density parity check) decoder and decoding method based on layer decoding processing | |
US8631299B2 (en) | Error correction encoding method and device, and communication system using the same | |
KR100809619B1 (en) | Apparatus and method for coding/decoding block low density parity check code in a mobile communication system | |
CN111162797B (en) | Encoding device and encoding method of rate compatible 5G LDPC code | |
CN102281125B (en) | Laminated and partitioned irregular low density parity check (LDPC) code decoder and decoding method | |
US20050246611A1 (en) | Methods and apparatus for encoding LDPC codes | |
CN102075198B (en) | Quasi-cyclic low-density parity check convolution code coding-decoding system and coding-decoding method thereof | |
CN109802687B (en) | High-speed code rate compatible LDPC encoder of QC-LDPC code based on FPGA | |
CN101753149A (en) | Method for constructing quasi-cyclic low-density parity-check code (QC-LDPC code) | |
CN111162795B (en) | LDPC coding hardware implementation method based on check sub-matrix segmentation | |
CN102843145A (en) | Construction method of low bit-rate quasi-cyclic accumulative repeat accumulate codes | |
CN102130692B (en) | Method for structuring quasi-cyclic low-density parity check (QC-LDPC) code based on extrinsic message degree (EMD) | |
Wang et al. | An efficient hardware LDPC encoder based on partial parallel structure for CCSDS | |
CN110730003A (en) | LDPC (Low Density parity check) encoding method and LDPC encoder | |
CN100557983C (en) | A kind of quasi-cyclic low-density parity check codes encoder and check digit generation method | |
CN116192157A (en) | Implementation method for reducing QC-LDPC code generation matrix density | |
CN113422611B (en) | Highly parallel encoding method of QC-LDPC encoder | |
Gong et al. | A Reusable and Efficient Architecture for QC-LDPC Encoder With Less Expansion Factors | |
CN106877882B (en) | Data processing method and device | |
Liu et al. | Efficient FPGA-based LDPC Encoder Implementation for Optical Communication Systems | |
CN110730005A (en) | Vector instruction set-based LDPC code fast decoding method | |
Wang et al. | Performance Balanced General Decoder Design for QC-LDPC Codes Using Vivado HLS | |
Sun et al. | A novel low complexity LDPC encoder based on optimized RU algorithm with backtracking | |
Sun et al. | Design and optimization of LDPC encoder based on LU decomposition with simulated annealing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |