# Patent

## Title
Method, apparatus and system for coding and decoding of LDPC codes

## Abstract

The present invention discloses a method, an apparatus and a system for low-density parity-check (LDPC) coding and decoding. The coding method includes the following steps: constructing each layer of a check matrix of a layered LDPC code used as an error correcting code; when data is initially sent by a data transmitting terminal, performing first-layer-coding of the data to be sent by using the first layer of a check matrix of the LDPC code, sending the first-layer-coded data; when data for (n−1)th retransmission is sent by the data transmitting terminal, performing nth-layer-coding of the data by using the nth layer of a check matrix of the LDPC code, sending the nth-layer-coded data, wherein n is an integer no less than 2. It is possible to reduce the system overhead, decrease the decoding delay, and improve the decoding performance by using the technical solution of the present invention which is also adapted to high-speed data services.

## Background
TECHNICAL FIELD
The present invention relates to the communication technology, particularly to a method, an apparatus and a system for coding and decoding of low-density parity-check (LDPC) codes.
BACKGROUND ART
The current communication technology is most strikingly characterized in the complexity and time variation of channels of the communication system as well as error codes brought forth thereby. Therefore, automatic repeat request (ARQ) and forward error correcting (FEC) are usually applied at present for error control. ARQ and FEC are technologies for error control by means of error detecting code and error correcting code, respectively. The principle of ARQ is that a receiving terminal feeds back information through reverse channel, so that the transmitting terminal will not stop retransmitting a data packet with the checked error, until the receiving terminal has judged a correct reception; while the principle of FEC is that an error correcting code is coded and sent from the transmitting terminal and decoded by the receiving terminal, so that an error in the codeword is corrected automatically. ARQ has a better correction capability, but requires reverse channel and is weak in real-timing of communication. On the contrary, FEC has good real-timing and its transceiver control system is simple, but the error correcting code is designed under the worst channel condition and therefore coding efficiency is low.
An HARQ system has the advantages of the above two error control methods, wherein the sent error correcting code has certain capabilities of error correcting, and the receiving terminal informs the transmitting terminal of retransmission only in the case where the error correcting capability is exceeded. To some extent, the deficiencies of communication hysteresis in ARQ and decoding complexity in FEC are prevented, so that higher spectrum efficiency is achieved.
TURBO code is applied commonly in the current HARQ mechanism. The TURBO code has the following deficiencies:

    1. It is impossible to check it by itself, and it is necessary to add cyclic redundancy check code (CRC) to check bits, which increases the system costs.
    2. The decoding is complex so that the amount of caching data is huge, and the iteration number of decoding is limited so that the decoding delay is long, therefore it is not adapted to real-time services.
    3. The performance is deficient during the coding and decoding of codes exclusive of short ones.
    4. For high-speed downlink transmission services, the processing workloads of the algorithm concentrate on the mobile station, which increases the complexity for carrying out the mobile station, thus the mobile station has high costs and power consumption and short standby time.


SUMMARY OF THE INVENTION
The object of the present invention is to provide a method, an apparatus and a system for coding and decoding of LDPC codes, so as to overcome one or more deficiencies of the above mentioned prior art. The technical solution of the present invention has one or more following advantages: reducing the system costs, decreasing the decoding delay, improving the decoding performance, and being adapted to high-speed data services.
In order to achieve the above mentioned object, the present invention provides a method for coding LDPC codes, which comprises the following steps:

    A. constructing each layer of check matrix of a layered LDPC code used as an error correcting code;
    B. prior to initially sending data by a data transmitting terminal, performing first-layer-coding of the data to be sent by using the first layer of a check matrix of the LDPC code, sending the first-layer-coded data;
    C. prior to sending data for (n−1)th retransmission by the data transmitting terminal, performing nth-layer-coding of the data by using the nth layer of the check matrix of the LDPC code, sending the nth-layer-coded data, wherein n is an integer no less than 2.


According to an embodiment of the present invention, the method for constructing each layer of the check matrix of the layered LDPC code in step A is: a method for constructing a quasi-cyclic LDPC code; and the step A includes specifically:

    A1. setting parameters of a mother matrix;
    A2. constructing the mother matrix M0 based on the set parameters; constructing a base check matrix H0 based on the mother matrix M0 by power method for constructing quasi-cyclic code, the base check matrix H0 serving as the first layer of the check matrix;
    A3. setting an initial value of m to be 2;
    A4. constructing a mother matrix Mm−1 of the mth layer of a check matrix;
    A5. generating a cyclic permutation matrix by power method to substitute a selected block in Mm−1, so that the mth layer of a check matrix Hm−1 is obtained;
    A6. judging whether m reaches a predetermined value, if so, terminating this procedure; else, increasing the value of m by 1 and returning back to step A4.


According to an embodiment of the present invention, the method for constructing each layer of the check matrix of the layered LDPC code is a bit-filling method or a progressive edge-growth algorithm.
According to an embodiment of the present invention, the coding in step C is performed for the coded data of all the previous n−1 layers;
The nth-layer-coding of the data by using the nth layer of a check matrix of the LDPC code in step C is specifically:
determining structures of previous n layers of check matrix Hm−1 in accordance with the formula:




  
    
      H
      
        m
        -
        1
      
    
    =
    
      (
      
        
          
            A
          
          
            B
          
          
            T
          
          
            0
          
          
            0
          
          
            0
          
        
        
          
            C
          
          
            D
          
          
            E
          
          
            0
          
          
            0
          
          
            0
          
        
        
          
            
              Q
              11
            
          
          
            
              Q
              12
            
          
          
            
              Q
              13
            
          
          
            
              P
              1
            
          
          
            0
          
          
            0
          
        
        
          
            
              
            
          
          
            
              
            
          
          
            ...
          
          
            
              
            
          
          
            
              
            
          
          
            
              
            
          
        
        
          
            
              Q
              
                
                  m
                  -
                  1
                
                ,
                1
              
            
          
          
            
              Q
              
                
                  m
                  -
                  1
                
                ,
                2
              
            
          
          
            
              Q
              
                
                  m
                  -
                  1
                
                ,
                3
              
            
          
          
            ...
          
          
            
              Q
              
                m
                -
                
                  1.
                  ⁢
                  m
                
                +
                1
              
            
          
          
            
              P
              
                m
                -
                1
              
            
          
        
      
      )
    
  
  ,




wherein m=n, and the nth layer of the check matrix is the last line of Hm−1; determining a coding result pm+1T of the mth layer in accordance with the formula pm+1T=Pm−1−1(Qm−1,1sT+Qm−1,2p1T+Qm−1,3p2T+ . . . +Qm−1,m+1pmT), wherein s is a known information bit, p1, p1, p3, . . . , pm are known coding results of upper-layer code relative to the mth layer, the superscript T represents transpose, and the superscript −1 represents inversion.

According to an embodiment of the present invention, the LDPC code of said each layer is block-type LDPC code.
The present invention further provides a computer program for executing the above mentioned coding method.
The present invention further provides a computer-readable medium for carrying the computer program for executing the above mentioned coding method.
The present invention further provides a LDPC decoding method comprising the following steps:

    D. pre-constructing and storing each layer of a check matrix of a layered LDPC code;
    E. after a data receiving terminal receives initially sent data of first layer, decoding the received data by using the first layer of the check matrix of the LDPC code and judging the decoding result, informing the data transmitting terminal of retransmit the data in the case of incorrect decoding;
    F. after the data receiving terminal receives data for (n−1)th retransmission, layered-decoding the received data by using the nth layer of the check matrix of the LDPC code; judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding, wherein n is an integer no less than 2.


According to an embodiment of the present invention, the step F is specifically:

    F1. decoding the data of the previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer using the nth layer of the check matrix of the LDPC code;
    F2. judging the decoding result of the step F1, cascading the data of the previous n−1 layers and the data of the nth layer in the case of incorrect decoding, combining the previous n−1 layers of the check matrix of the LDPC code and the nth layer of the check matrix, decoding the cascaded data of the previous n−1 layers and the nth layer by using the combined check matrix, and judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding.


According to an embodiment of the present invention, the step F is specifically:

    F3. cascading the data of the previous n−1 layers with the data of the nth layer, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix, and decoding the cascaded data by using the combined check matrix.


According to an embodiment of the present invention, said method further includes: judging whether channel quality of a current channel reaches a predetermined standard, if so, the step F is specifically:

    F1. decoding the data of the previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer by using the nth layer of the check matrix of the LDPC code;
    F2. judging the decoding result of the step F1, cascading the data of the previous n−1 layers and the data of the nth layer, combining the previous n−1 layers of the check matrix of the LDPC code and the nth layer of the check matrix in the case of incorrect decoding, decoding the cascaded data of the previous n−1 layer and the nth layer by using the combined check matrix, and judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding;

if the channel quality of the current channel fails to reach the predetermined standard, the step F is specifically:

    F3. cascading the data of the previous n−1 layers with the data of the nth layer, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix of the LDPC code, and decoding the cascaded data by using the combined check matrix.


According to an embodiment of the present invention, the constructing method of the step D is: a method for constructing a quasi-cyclic LDPC code; and the step D includes specifically:

    D1. setting parameters of a mother matrix;
    D2. constructing the mother matrix M0 based on the set parameters; constructing a base check matrix H0 based on the mother matrix M0 by power method for constructing quasi-cyclic code, the base check matrix H0 serving as the first layer of the check matrix;
    D3. setting an initial value of m to be 2;
    D4. constructing a mother matrix Mm−1 of the mth layer of a check matrix;
    D5. generating a cyclic permutation matrix by power method to substitute a selected block in Mm−1, so that the mth layer of a check matrix Hm−1 is obtained;
    D6. judging whether m reaches a predetermined value, if so, terminating this procedure; else, increasing the value of m by 1 and returning back to step D4.


According to an embodiment of the present invention, the method for constructing each layer of the check matrix of the layered LDPC code is a bit-filling method or a progressive edge-growth algorithm.
According to an embodiment of the present invention, the LDPC code of said each layer is block-type LDPC code.
The present invention further provides a computer program for executing the above mentioned decoding method.
The present invention further provides a computer-readable medium for carrying the computer program for executing the above mentioned decoding method.
The present invention further provides a communication system based on LDPC coding which comprises at least one data transmitting terminal and at least one data receiving terminal,
the data receiving terminal including a coding device for constructing each layer of a check matrix of a layered LDPC code used as an error correcting code and, prior to initially sending data by a data transmitting terminal, performing first-layer-coding of the data to be sent by using a first layer of a check matrix of the LDPC code, sending the first-layer-coded data and, prior to sending data for (n−1)th retransmission by the data transmitting terminal, performing nth-layer-coding of the data by using the nth layer of a check matrix of the LDPC code, sending the nth-layer-coded data;

the data receiving terminal including a decoding device for pre-constructing and storing each layer of a check matrix of a layered LDPC code and, after a data receiving terminal receives initially sent data of first layer, decoding the received data by using the first layer of the check matrix of the LDPC code and judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding and, after the data receiving terminal receives data for (n−1)th retransmission, layered-decoding the received data by using the nth layer of the check matrix of the LDPC code; judging the decoding result, and informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding, wherein n is an integer no less than 2.

The present invention further provides an LDPC coding device, comprising:
an error correcting code constructing unit for constructing each layer of a check matrix of a layered LDPC code used as an error correcting code; a coding unit provided at a data transmitting terminal for layered-coding data for pre-transmission by using the layered LDPC code constructed by the error correcting code constructing unit.
According to an embodiment of the present invention, the coding unit includes a coding module for coding and a hierarchy determining unit for determining hierarchy of coding: in the case of initially sent data, the coding module being triggered to perform first-layer-coding of said data by using the first layer of a check matrix of the LDPC code; in the case of data for (n−1)th retransmission sent by data transmitting terminal, hierarchy n being determined, the coding module being triggered to perform nth-layer-coding of coded data of the previous n−1 layers by using the nth layer of a check matrix of the LDPC code, wherein n is an integer no less than 2.
According to an embodiment of the present invention, said each layer of the LDPC code is block-type LDPC code.
The present invention further provides an LDPC decoding device, comprising:
an error correcting code constructing unit for constructing each layer of a check matrix of a layered LDPC code used as an error correcting code;
a decoding unit provided at a data receiving terminal for layered-decoding the received data by using the layered LDPC code constructed by the error correcting code constructing unit.
According to an embodiment of the present invention, the decoding unit includes specifically a decoding module, a hierarchy determining unit, and a decoding result judging unit;
the decoding unit being used for decoding; the hierarchy determining unit being used for determining hierarchy of decoding, after the data receiving terminal receives the initially sent data, the decoding module being triggered to layered-decoding the received data by using a first layer of a matrix of the LDPC code; after the data receiving terminal receives data for (n−1)th retransmission, a hierarchy n being determined, the decoding module being triggered to layered-decoding the received data by using the nth layer of a matrix of the LDPC code, wherein n is an integer no less than 2; the decoding result judging unit being used for judging the decoding result, the data transmitting terminal being informed to retransmit the data in the case of incorrect decoding.
According to an embodiment of the present invention, the decoding module further includes a first decoding module and a second decoding module, and the decoding result judging unit further includes a first decoding result judging unit and a second decoding result judging unit, wherein:
the first decoding module is used for decoding data of previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer by using the nth layer of the check matrix of the LDPC code;

the first decoding result judging unit is used for judging the decoding result, triggering the second decoding module in the case of incorrect decoding;

the second decoding module is used for cascading the data of the previous n−1 layers and the nth layer, combining the previous n−1 layers of the check matrix of the LDPC code and the nth layer of the check matrix, decoding the cascaded data of the previous n−1 layers and the nth layer by using the combined check matrix, and outputting the decoding result to the second decoding result judging unit;

the second decoding result judging unit is used for judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding.

According to an embodiment of the present invention, the LDPC code of said each layer is block-type LDPC code.
The present invention further provides an electronic device which is comprising:
at least one data processor, at least one memory connected with the data processor, and a coder connected with the data processor, wherein:
the coder is used for constructing each layer of a check matrix of a layered LDPC code used as an error correcting code and; prior to initially sending data, performing first-layer-coding of the data to be sent using the first layer of a check matrix of the LDPC code and; prior to sending data for (n−1)th retransmission, performing nth-layer-coding of the data by using the nth layer of a check matrix of the LDPC code.
According to an embodiment of the present invention, the method for constructing the layered LDPC is: a method for constructing a quasi-cyclic LDPC code, specifically comprising the following steps:

    G1. setting parameters of a mother matrix;
    G2. constructing the mother matrix M0 based on the set parameters; constructing a base check matrix H0 based on the mother matrix M0 by power method for constructing quasi-cyclic code, the base check matrix H0 serving as the check matrix of the first layer;
    G3. setting an initial value of m to be 2;
    G4. constructing a mother matrix Mm−1 of the mth layer of a check matrix;
    G5. generating a cyclic permutation matrix by power method to substitute a selected block in Mm−1, so that the mth layer of a check matrix Hm−1 is obtained;
    G6. judging whether m reaches a predetermined value, if so, terminating this procedure; else, increasing the value of m by 1 and returning back to step G4.


The present invention further provides an electronic device, comprising: at least one data processor, at least one memory connected with the data processor, and a decoder connected with the data processor, wherein
the decoder is used for pre-constructing and storing each layer of a check matrix of a layered LDPC code and, after a data receiving terminal receives initially sent data of first layer, decoding the received data by using the first layer of the check matrix of the LDPC code and judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding, and, after the data receiving terminal receives data for (n−1)th retransmission, layered-decoding the received data by using the nth layer of the check matrix of the LDPC code; judging the decoding result, and informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding, wherein n is an integer no less than 2.
According to an embodiment of the present invention, after reception of the data for (n−1)th retransmission, the following steps are included:

    H1. decoding the data of the previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer by using the nth layer of the check matrix of the LDPC code;
    H2. judging the decoding result of the step H1, cascading the data of the previous n−1 layers and the data of the nth layer in the case of incorrect decoding, combining the previous n−1 layers of the check matrix of the LDPC code and the nth layer of the check matrix, decoding the cascaded data of the previous n−1 layers and the nth layer by using the combined check matrix, and judging the decoding result, and informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding.


According to an embodiment of the present invention, after reception of the data for (n−1)th retransmission, the following step is included:

    H3. cascading the data of the previous n−1 layers with the data of the nth layer, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix, and decoding the cascaded data by using the combined check matrix.


According to an embodiment of the present invention, after reception of the data for (n−1)th retransmission, the following step is further included: judging whether channel quality of a current channel reaches a predetermined standard, conducting the following step if so:

    H1. decoding the data of the previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer by using the nth layer of the check matrix of the LDPC code;
    H2. judging the decoding result of the step H1, cascading the data of the previous n−1 layers and the data of the nth layer in the case of incorrect decoding, combining the previous n−1 layers of the check matrix of the LDPC code and the nth layer of the check matrix, decoding the cascaded data of the previous n−1 layers and the nth layer by using the combined check matrix, and judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding;

and cascading the data of the previous n−1 layers with the data of the nth layer, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix of the LDPC code, and decoding the cascaded data by using the combined check matrix if the channel quality of the current channel fails to reach the predetermined standard.



According to an embodiment of the present invention, the electronic device comprises a mobile electronic device.
According to an embodiment of the present invention, the electronic device comprises a mobile phone.
According to an embodiment of the present invention, the electronic device comprises a base station.
According to an embodiment of the present invention, the electronic device comprises an access point AP of a wireless local network.
The technical solution of the present invention has one or more of the following advantages:

    1. The error correcting code applied in the present invention is an LDPC code, which is the optimized error correcting code in present, so that it is possible to construct more flexible check matrix having lower range of code rate and check the decoding without CRC check each time when the iteration-decoding is finished, so that the system costs are reduced. LDPC coding includes various quasi-linear coding methods, wherein the application of parallel decoding algorithm decreases the decoding delay greatly, and it is greatly superior to the current TURBO code in decoding processing speed and buffering and has a better performance on coding and decoding codes exclusive of short ones. Regarding the high speed downlink data, LDPC code allows the coding work with higher complexity to be finished at the base station and the coding work with lower complexity to be finished by the mobile station, thereby simplifying the processing at the mobile station, reducing the costs and power consumption and shortening the standby time.
    2. In the present invention a layered LDPC coding/decoding method is applied, wherein the decoding result of an upper layer is not influenced by a lower decoding; when a correct decoding of the data of the upper layer is received at the receiving terminal, it is unnecessary that the transmitting terminal performs coding of a next layer, so that the amount of calculation for coding, coding delay and requirement on buffer at the transmitting terminal is reduced.
    3. Each layer of the check matrix in the present invention comprises a quasi-undertriangular matrix, so that coding of each layer has a quasi-linear complexity, which is relative low.
    4. In the present invention, regarding decoding at the receiving terminal, multilayer cascaded data are decoded by using a lower layer of check matrix so as to reduce the decoding complexity, and it is also possible to obtain the complete coding gain by decoding with a complete check matrix. Hence, the decoding method of the present invention is flexible, and the specific decoding mode is optionally selectable as required. Especially in the case of a relative good channel quality of the communication channel, it will reduce the processing complexity greatly.
    5. The layered coding method according to the present invention is universal, hence it allows the check matrix to be constructed by a quasi-cyclic LDPC coding method, or by a bit-filling method, a progressive edge-growth (PEG) method and similar derived methods.
    6. Due to the application of LDPC code in the present invention, lengths of the coding and the transmission block can be adjusted by perforation or repetition to perform service adaptation if the coding length and the length of the transmission block fail to meet the requirements of service applications; thus, the present invention is adapted to various service applications and has a broad range of adaptation. The present invention is not only applicable to mobile communication but also has an application aspect in the fields such as file transmission, Internet etc.





BRIEF DESCRIPTION OF DRAWINGS
FIG. 1 is a flow chart of an embodiment of coding of the present invention;
FIG. 2 is a basic structure diagram of a layered LDPC code;
FIG. 3 is a flow chart of am embodiment of decoding of the present invention;
FIG. 4 is a flow chart of implementation of the coding process and the corresponding decoding process of the present invention;
FIG. 5 is a schematic diagram of a decoding process of the layered LDPC code;
FIG. 6 is a schematic structure diagram of the coding and decoding communication system of the present invention;
FIG. 7 is a schematic diagram of performance simulation of the layered LDPC code of the present invention;
FIG. 8 is a structural flow chart of an electronic device implementing the coding and decoding embodiments of the present invention.



MODE OF CARRYING OUT THE INVENTION
Now, the present invention is further explained in detail by the embodiments and drawings.
The core of the coding method of the present invention is to use a layered-low parity-check (LDPC) code as an error correcting code, so as to layered-code the data for pre-transmission by the LDPC code at the data transmitting terminal.
FIG. 1 is a flow chart of the embodiment of the coding method of the present invention. See FIG. 1, said flow includes:
Step 101, constructing each layer of a check matrix of the layered LDPC code in accordance with service and retransmission HARQ mechanism;
Step 102, the data transmitting terminal coding the data for pre-transmission by using the Nth layer of a check matrix of the LDPC code to obtain data of the Nth layer, and then sending them,
The initial value of N is 1, and this step is just coding the data for pre-transmission by using the first layer of the check matrix of the LDPC code to obtain the data of the first layer. In the step 102, it is unnecessary to perform second-layer-coding unless the data transmitting terminal receives a retransmission request, viz. NACK message;
Step 103, the data transmitting terminal judging whether a retransmission request, viz. NACK message, from the data receiving terminal is received, and conducting Step 104 if so, else, terminating the flow;
Step 104, judging whether to reach the number of an upper limits of retransmission, terminating the flow if so, else, conducting Step 105,
Step 104 is an optional step, and Step 105 may also be conducted directly after the reception of the NACK request in Step 103;
Step 105, increasing N by 1, the data transmitting terminal performing Nth-layer-coding, i.e. coding the coded data of previous N−1 layers by using the Nth layer of the check matrix of the LDPC code to obtain data of Nth layer, and then sending them. After sending the data of the (N−1)th layer, the data transmitting terminal may cache it for the coding of the Nth layer, and delete them if no NACK request is received.
For example, for second-layer-coding, the coding result of the first layer is coded by using the second layer of the check matrix of the LDPC; for third-layer-coding, the coding result of the second layer and the previous coding results are coded by using the third layer of the check matrix of the LDPC; and the coding of each layer thereafter is performed by analogy.
The coding method of the present invention does not limit the number of layers of the layered LDPC code, and the number of layers can be set according to the requirement of services.
The core of the decoding method of the present invention is to use a low-density parity-check (LDPC) code as an error correcting code, so as to layered-code the data for pre-transmission by the LDPC code at the data transmitting terminal and to perform layered-decoding of the received data at the data receiving terminal by using the LDPC code.
To achieve an optimized technical effect, a layered LDPC code is used for decoding in the following embodiment.
In the following embodiment, the coding solution of the present invention is described more clearly and completely though the detailed constructing theory and detailed constructing method of the LDPC code.
FIG. 2 is a basic structure diagram of the layered LDPC code. As shown in FIG. 2, “O” represents zero matrix, the number of columns in each layer of the matrix is the length of code having been coded, the number of rows is the check bit length, and the length of information bit is the number of column minus the number of rows.
The LDPC code of the present invention is constructed based on a specific HARQ mechanism. Supposed that the relative parameters based on the HARQ transmission solution in this embodiment are: a length of information bit of 508 bit, a first-layer-coding length of 1016 bit, a second-layer-coding length of 1778−1016=762 bit, and a third-layer-coding length of 2540−1778=762 bit.
In the present invention, each layer of the check matrix can be constructed specifically by quasi-cyclic LDPC code method (QC LDPC), and other constructing methods, such as a bit-filling method, PEG etc., may also be used for the construction.
QC LDPC code is used in this embodiment for constructing the check matrix. QC LDPC code is a kind of LDPC codes composed of block cyclic permutation matrix with high efficiency and is easy to store. In this embodiment, a kind of QC LDPC codes with low complexity are applied.
A quasi cyclic code in the form of a quasi-undertriangular matrix, called block-type LDPC code (B-LDPC code), is used in this embodiment in the case of keeping the performance of the QC LDPC code and the validity of coding. Here supposed the check matrix of the B-LDPC code is H and H is an mp×np order matrix that is defined according to the following formula (1):




  
    
      
        H
        =
        
          [
          
            
              
                
                  P
                  
                    a
                    11
                  
                
              
              
                
                  P
                  
                    a
                    12
                  
                
              
              
                ...
              
              
                
                  P
                  
                    a
                    
                      1
                      ⁢
                      
                        (
                        
                          n
                          -
                          1
                        
                        )
                      
                    
                  
                
              
              
                
                  P
                  
                    a
                    
                      1
                      ⁢
                      n
                    
                  
                
              
            
            
              
                
                  P
                  
                    a
                    21
                  
                
              
              
                
                  P
                  
                    a
                    22
                  
                
              
              
                ...
              
              
                
                  P
                  
                    a
                    
                      2
                      ⁢
                      
                        (
                        
                          n
                          -
                          1
                        
                        )
                      
                    
                  
                
              
              
                
                  P
                  
                    a
                    
                      2
                      ⁢
                      n
                    
                  
                
              
            
            
              
                ⋮
              
              
                ⋮
              
              
                ...
              
              
                ⋮
              
              
                ⋮
              
            
            
              
                
                  P
                  
                    a
                    
                      m
                      ⁢
                      
                        
                      
                      ⁢
                      1
                    
                  
                
              
              
                
                  P
                  
                    a
                    
                      m
                      ⁢
                      
                        
                      
                      ⁢
                      2
                    
                  
                
              
              
                ...
              
              
                
                  P
                  
                    a
                    
                      m
                      ⁡
                      
                        (
                        
                          n
                          -
                          1
                        
                        )
                      
                    
                  
                
              
              
                
                  P
                  
                    a
                    mn
                  
                
              
            
          
          ]
        
      
    
    
      
        (
        1
        )
      
    
  




Here for easily understanding, H is divided into two parts: information part Hi and check part Hp, i.e. H=[Hi Hp]. Here, Hp is defined as a quasi-undertriangular matrix. H can be set as an mp×(m+k)p order check matrix shown by the following formula (2):




  
    
      
        
          
            
              H
              =
              
                [
                
                  
                    H
                    i
                  
                  ❘
                  
                    H
                    p
                  
                
                ]
              
            
          
        
        
          
            
              =
              
                [
                
                  
                    
                      
                        P
                        
                          b
                          1
                        
                      
                    
                    
                      I
                    
                    
                      0
                    
                    
                      ...
                    
                    
                      0
                    
                    
                      0
                    
                  
                  
                    
                      0
                    
                    
                      
                        P
                        
                          b
                          2
                        
                      
                    
                    
                      I
                    
                    
                      ...
                    
                    
                      0
                    
                    
                      0
                    
                  
                  
                    
                      ⋮
                    
                    
                      0
                    
                    
                      
                        P
                        
                          b
                          13
                        
                      
                    
                    
                      ...
                    
                    
                      0
                    
                    
                      0
                    
                  
                  
                    
                      
                        
                          H
                          i
                        
                        ⁢
                        
                          P
                          y
                        
                      
                    
                    
                      ⋮
                    
                    
                      ⋮
                    
                    
                      ...
                    
                    
                      ⋮
                    
                    
                      ⋮
                    
                  
                  
                    
                      ⋮
                    
                    
                      ⋮
                    
                    
                      ⋮
                    
                    
                      ...
                    
                    
                      I
                    
                    
                      0
                    
                  
                  
                    
                      0
                    
                    
                      0
                    
                    
                      0
                    
                    
                      ...
                    
                    
                      
                        P
                        
                          b
                          
                            m
                            -
                            1
                          
                        
                      
                    
                    
                      I
                    
                  
                  
                    
                      
                        P
                        x
                      
                    
                    
                      0
                    
                    
                      0
                    
                    
                      ...
                    
                    
                      0
                    
                    
                      
                        P
                        
                          b
                          m
                        
                      
                    
                  
                
                ]
              
            
          
        
      
    
    
      
        (
        2
        )
      
    
  




Wherein P is a p×p order cyclic permutation matrix, viz. a cyclic shift matrix of unit matrix, a length of coded information bit is (n−m)p, a length of check bit is mp, and a code length is np, wherein p is the number of dimension of the cyclic permutation matrix and is usually a prime number. The LDPC code having a check matrix as shown by formula (2) is called as block-type LDPC code (B-LDPC code).
In this embodiment, Richardson-Urbanke coding method may be applied to the B-LDPC code, for resolving H into the blocked matrix shown by the following formula (3):




  
    
      
        H
        =
        
          [
          
            
              
                A
              
              
                B
              
              
                T
              
            
            
              
                C
              
              
                D
              
              
                E
              
            
          
          ]
        
      
    
    
      
        (
        3
        )
      
    
  




Wherein A is an (m−1)p×kp dimensional blocked matrix, B is an (m−1)p×p dimensional blocked matrix, T is an (m−1)p×(m−1)p dimensional undertriangular blocked matrix, C is a p×kp dimensional blocked matrix, D=Px is a p×p dimensional blocked matrix, E is an p×(m−1)p dimensional blocked matrix, and n=m+k.
Supposed Hp is nonsingular, it can be known by Gauss Elimination Method that φ=−ET1B+D is nonspecific. As what applied in this embodiment is a system code, c may be a set of code words defined by H, then HcT=0T, therefore, the following equations (4) and (5) are obtained:

AsT+Bp1T+Tp2T=0  (4)

(−ET−1A+C)sT+−φ−1(−ET−1B+D)p1T=0  (5)

wherein s represents the information part, p1 and p2 represent the check parts, and the lengths of check codes are p and (m−1)p, respectively, then the following formulae (6) and (7) are obtained:

p1T=−φ−1(ET−1A+C)sT=−φ−1(−ET−1AsT+CsT)  (6)

p2T=−T−1(AsT+Bp1T)  (7)

As the matrix φ−1 is usually a non-sparse matrix, p1 has a complexity of O(N)+O(p2), wherein N=(np) is the code length. However, if φ is a unit matrix, the complexity of the coding is linear.
In order to calculate φ, H in the formulae (2) and (3) is considered. It is easy to know that T1 may be recorded as a matrix as formula (8):




  
    
      
        
          T
          
            -
            1
          
        
        =
        
          [
          
            
              
                I
              
              
                0
              
              
                0
              
              
                ...
              
              
                0
              
              
                0
              
              
                0
              
            
            
              
                
                  P
                  
                    b
                    2
                  
                
              
              
                I
              
              
                0
              
              
                ...
              
              
                0
              
              
                0
              
              
                0
              
            
            
              
                
                  P
                  
                    (
                    
                      2
                      ,
                      3
                    
                    )
                  
                
              
              
                
                  P
                  
                    b
                    3
                  
                
              
              
                I
              
              
                ...
              
              
                0
              
              
                0
              
              
                0
              
            
            
              
                ⋮
              
              
                ⋮
              
              
                ⋮
              
              
                ...
              
              
                ⋮
              
              
                0
              
              
                0
              
            
            
              
                
                  P
                  
                    (
                    
                      2
                      ,
                      
                        m
                        -
                        2
                      
                    
                    )
                  
                
              
              
                
                  P
                  
                    (
                    
                      3
                      ,
                      
                        m
                        -
                        2
                      
                    
                    )
                  
                
              
              
                
                  P
                  
                    (
                    
                      4
                      ,
                      
                        m
                        -
                        2
                      
                    
                    )
                  
                
              
              
                ...
              
              
                
                  P
                  
                    b
                    
                      m
                      -
                      2
                    
                  
                
              
              
                I
              
              
                0
              
            
            
              
                
                  P
                  
                    (
                    
                      2
                      ,
                      
                        m
                        -
                        1
                      
                    
                    )
                  
                
              
              
                
                  P
                  
                    (
                    
                      3
                      ,
                      
                        m
                        -
                        1
                      
                    
                    )
                  
                
              
              
                
                  P
                  
                    (
                    
                      4
                      ,
                      
                        m
                        -
                        1
                      
                    
                    )
                  
                
              
              
                ...
              
              
                
                  P
                  
                    (
                    
                      
                        m
                        -
                        2
                      
                      ,
                      
                        m
                        -
                        1
                      
                    
                    )
                  
                
              
              
                
                  P
                  
                    b
                    
                      m
                      -
                      1
                    
                  
                
              
              
                I
              
            
          
          ]
        
      
    
    
      
        (
        8
        )
      
    
  




wherein





  
    
      
        
          P
          
            (
            
              i
              ,
              j
            
            )
          
        
        =
        
          
            
              ∏
              
                k
                =
                i
              
              j
            
            ⁢
            
              P
              
                b
                k
              
            
          
          =
          
            P
            
              
                b
                i
              
              +
              
                b
                
                  i
                  +
                  1
                
              
              +
              ⋯
              +
              
                b
                j
              
            
          
        
      
    
    
      
        (
        9
        )
      
    
  




Due to the following equations (10) and (11),

BT=└(Pbl)T0 . . . (Py)T0 . . . 0┘  (10)

E=└00 . . . 0Pbm┘  (11)

The formula (12) can be obtained:

ET−1B=P(l,m)+P(l+1,m)Py  (12)

wherein Py is located at the lth block of B, l is usually about 1⁄2 of m.

If x and y are selected according to the formula (13):




  
    
      
        x
        ≡
        
          
            ∑
            
              i
              =
              1
            
            m
          
          ⁢
          
            
              b
              
                i
                ⁢
                
                  
                
              
            
            ⁢
            mod
            ⁢
            
              
            
            ⁢
            p
            ⁢
            
              
            
            ⁢
            and
            ⁢
            
              
            
            ⁢
            y
          
        
        ≡
        
          p
          -
          
            (
            
              
                ∑
                
                  i
                  =
                  
                    l
                    +
                    1
                  
                
                m
              
              ⁢
              
                
                  b
                  
                    i
                    ⁢
                    
                      
                    
                  
                
                ⁢
                mod
                ⁢
                
                  
                
                ⁢
                p
              
            
            )
          
        
      
    
    
      
        (
        13
        )
      
    
  




or selected according to the formula (14):





  
    
      
        
          
            ∑
            
              i
              =
              1
            
            m
          
          ⁢
          
            b
            i
          
        
        ≡
        
          0
          ⁢
          
            
          
          ⁢
          mod
          ⁢
          
            
          
          ⁢
          p
          ⁢
          
            
          
          ⁢
          and
          ⁢
          
            
              
            
            ⁢
            
              
            
          
          ⁢
          x
        
        ≡
        
          y
          +
          
            
              ∑
              
                i
                =
                
                  l
                  +
                  1
                
              
              m
            
            ⁢
            
              
                b
                i
              
              ⁢
              
                
              
              ⁢
              mod
              ⁢
              
                
              
              ⁢
              p
            
          
        
      
    
    
      
        (
        14
        )
      
    
  




then matrix φ=−ET1B+D is just a unit matrix.

A preferable constructing method of B-LDPC code is shown by the following Steps 21-28:
Step 21, setting a degree distribution rule for a B-LDPC code based on the density evolution theory, that is. a degree distribution function is determined, m row blocks and n=(m+k) column blocks are set and dimension p of the cyclic permutation matrix is set, wherein p is a prime number. f1 is set as the distribution of variable nodes connected with i check nodes, then the dimension of the cyclic permutation matrix is ignored, here




  
    f
    2
  
  =
  
    
      
        
          m
          -
          1
        
        n
      
      ⁢
      
        
      
      ⁢
      and
      ⁢
      
        
      
      ⁢
      
        f
        i
      
    
    =
    
      
        
          
            p
            i
          
          n
        
        ⁢
        
          
        
        ⁢
        for
        ⁢
        
          
        
        ⁢
        3
      
      ≤
      i
      ≤
      
        m
        .
      
    
  




Here p1 is a non negative integer, p3≧1, and





  
    
      
        
          
            ∑
            
              i
              =
              2
            
            m
          
          ⁢
          
            f
            i
          
        
        =
        1
      
    
    
      
        (
        15
        )
      
    
  




Step 22, under the condition that the fixed m×n order mother matrix M has a right half Mp as shown in formula (16), constructing the left half Mi of the mother matrix M by the bit-filling method or PEG method basing on the degree distribution rule in Step 21, allowing M for having a periphery as long as possible and a number of short block rings as little as possible, determining the mother matrix M in the form as shown by the following formula (16):




  
    
      
        
          
            
              M
              =
              
                ⌊
                
                  
                    M
                    i
                  
                  ❘
                  
                    M
                    p
                  
                
                ⌋
              
            
          
        
        
          
            
              =
              
                [
                
                  
                    
                      1
                    
                    
                      
                        
                          
                        
                        ⁢
                        1
                      
                    
                    
                      0
                    
                    
                      ⋯
                    
                    
                      0
                    
                    
                      0
                    
                  
                  
                    
                      0
                    
                    
                      1
                    
                    
                      1
                    
                    
                      ⋯
                    
                    
                      0
                    
                    
                      0
                    
                  
                  
                    
                      ⋮
                    
                    
                      0
                    
                    
                      1
                    
                    
                      ⋯
                    
                    
                      0
                    
                    
                      0
                    
                  
                  
                    
                      
                        
                          M
                          i
                        
                        ⁢
                        1
                      
                    
                    
                      ⋮
                    
                    
                      ⋮
                    
                    
                      ⋯
                    
                    
                      ⋮
                    
                    
                      ⋮
                    
                  
                  
                    
                      ⋮
                    
                    
                      ⋮
                    
                    
                      ⋮
                    
                    
                      ⋯
                    
                    
                      1
                    
                    
                      0
                    
                  
                  
                    
                      0
                    
                    
                      0
                    
                    
                      0
                    
                    
                      ⋯
                    
                    
                      1
                    
                    
                      1
                    
                  
                  
                    
                      1
                    
                    
                      0
                    
                    
                      0
                    
                    
                      ⋯
                    
                    
                      0
                    
                    
                      1
                    
                  
                
                ]
              
            
          
        
      
    
    
      
        (
        16
        )
      
    
  




Hi and Hp in the check matrix of formula (2) are obtained respectively by substituting the position of “1” in Hi and Hp of the mother matrix M with the cyclic permutation matrix;

Step 23, supposed the check part Hp of the check matrix is as shown in formula (2), generating Pbi by the power method for constructing quasi-cyclic code to meet the requirement on the periphery length, selecting px and py to satisfy the formula (13) or (14), causing φ to be a unit matrix;
Step 24, initializing H=[0Hp], wherein 0 is an mp×kp order zero matrix.
Step 25, constructing Pi by the power method for constructing quasi-cyclic code to substitute the position block in H corresponding to each “1” having a column weight of 3 in the matrix Mi wherein 0≦i≦p−1;
Step 26, selecting a position of “1” in the mother matrix M in each case in Step 25, selecting a cyclic permutation matrix by the power method for generating a quasi-cyclic code in the case that a structure of the B-LDPC code is not changed, and adding the selected cyclic permutation matrix into selected position, thereby updating the corresponding position block in H, and setting a corresponding periphery as long as possible and a number of short block rings as little as possible if it is allowed;
Step 27, repeating Step 25 and Step 26, till each “1” having a column weight of 3 in the mother matrix is substituted by a cyclic permutation matrix;
Step 28, for each column weight j>3, repeating the same Step 25, Step 26, and Step 27;
In the above mentioned Step 23, Mi in the mother matrix M is constructible by various methods, and a bit-filling method or a PEG method may be used to construct the m×n order mother matrix in this embodiment, so that the mother matrix has a periphery as long as possible.
Next, each step in the embodiment according to FIG. 1 is described in detail based on the above mentioned basic concepts and theoretical description.
The first step is: constructing each layer of a check matrix of a layered LDPC code in accordance with service and retransmission HARQ solution.
Constructing a layered structure of the LDPC code is the key to ensure the layered coding and decoding characteristic, not only the coding of a lower layer should be ensured not to influence the coding of an upper layer, but also the coding should be ensured to have a linear complexity, in addition, the performance of the coding solution should also be ensured. The specific constructing method is as follows:
Step 31, setting a length k0 of information bit of mother matrix, a length n0 of integrally transmitted code word of the mother matrix, and size p of a cyclic block in the LDPC code; determining a length of information bit in the code word as K0=k0*p and a length of the initially transmitted code word as N0=n0*p, determining a code rate of the initial transmission as R0=K0/N0, and supposing the check matrix extend l*p bits each time, l being a integer no less than 1;
Step 32, constructing the mother matrix M0 in the form shown by formula (16), constructing an (N0−K0)*N0 order base check matrix H0 by the power method for constructing the quasi-cyclic code, viz. the above mentioned Step 21 to Step 28, based on the mother matrix M0, H0 serving as the first layer of the check matrix;
Step 33, for the second layer of check matrix, using the bit-filling method or PEG method to construct a mother matrix M1 on the basis of the mother matrix M0 of the first layer of the check matrix H0, wherein it is in the form as shown in the following formula (17):




  
    
      
        
          M
          1
        
        =
        
          (
          
            
              
                
                  M
                  0
                
              
              
                0
              
            
            
              
                
                  C
                  11
                
              
              
                
                  C
                  12
                
              
            
          
          )
        
      
    
    
      
        (
        17
        )
      
    
  




wherein M0 is (n0−k0)*n0 dimensional, M1 is (n0−k0+l)*(n0+l) dimensional, C11 is l*n0 dimensional, and C12 is a quasi-undertriangular matrix. Moreover, short block rings are arranged as few as possible in M1 if it is allowed;

Step 34, as the construction of M1 ensures a periphery as long as possible and a number of minimum rings as little as possible, generating cyclic permutation matrix by the power method for generating QC LDPC to substitute the positions of “1” in C11 and C12, so as to obtain Q1 and P1, so that it is possible to make the corresponding periphery as long as possible and the number of short ring length as little as possible if it is allowed, thereby obtaining the second layer of the corresponding check matrix as shown by the formula (18):




  
    
      
        
          H
          1
        
        =
        
          (
          
            
              
                
                  H
                  0
                
              
              
                0
              
            
            
              
                
                  Q
                  1
                
              
              
                
                  P
                  1
                
              
            
          
          )
        
      
    
    
      
        (
        18
        )
      
    
  




wherein P1 is in the form of Hp in the formula (2), viz. is a quasi-undertriangular matrix;

Step 35, by analogy, constructing the mth layer of a mother matrix sequentially in the structure as shown by the formula (19) with the method similar to Step 33 and Step 34, and constructing the mth layer of a corresponding check matrix in accordance with the following formula (20), wherein the constructed code rate is k0/(n0+(m−1)l).




  
    
      
        
          M
          
            m
            -
            1
          
        
        =
        
          (
          
            
              
                
                  M
                  
                    m
                    -
                    2
                  
                
              
              
                0
              
            
            
              
                
                  C
                  
                    
                      m
                      -
                      1
                    
                    ,
                    1
                  
                
              
              
                
                  C
                  
                    
                      m
                      -
                      1
                    
                    ,
                    2
                  
                
              
            
          
          )
        
      
    
    
      
        (
        19
        )
      
    
  
  
    
      
        
          H
          
            m
            -
            1
          
        
        =
        
          (
          
            
              
                
                  H
                  
                    m
                    -
                    2
                  
                
              
              
                0
              
            
            
              
                
                  Q
                  
                    m
                    -
                    1
                  
                
              
              
                
                  P
                  
                    m
                    -
                    1
                  
                
              
            
          
          )
        
      
    
    
      
        (
        20
        )
      
    
  




Here, in the case of a short code or a code with moderate length, the QC LDPC code having said layered structure may also be constructed by using the general power method for constructing QC LDPC code.
The second step is: coding the data for pre-transmission by using the first layer of the check matrix.
Here, the data for pre-transmission is coded with the first layer of the check matrix having a structure as shown by formula (2), the first-layer-coded data code is c0[s p1 p2], wherein s is a bit of known information, p1, p2 are check bits.
The third step is: performing second-layer-coding if the data transmitting terminal receives a NACK request for the first time.
In the formula (18), H0 is in the form of a blocked matrix shown by the formula (3), therefore, a combined check matrix H1 of the first layer and second layer can be obtained in the form as shown by the formula (21):




  
    
      
        
          H
          1
        
        =
        
          (
          
            
              
                A
              
              
                B
              
              
                T
              
              
                0
              
            
            
              
                C
              
              
                D
              
              
                E
              
              
                0
              
            
            
              
                
                  Q
                  11
                
              
              
                
                  Q
                  12
                
              
              
                
                  Q
                  13
                
              
              
                
                  P
                  1
                
              
            
          
          )
        
      
    
    
      
        (
        21
        )
      
    
  




wherein Q1 can be resolved into blocked matrix [Q11 Q12 Q13] having corresponding number of dimensions, P1 is an lp×lp dimensional blocked matrix composed of cyclic permutation matrix. The complexity of coding may further be kept linear if P1 is constructed as a quasi-undertriangular matrix.

Supposed the second-layer-coded data code is c1, which is a set of code words c1=[s p1 p2 p3] coded by H1. H1 c1T=0T can be resolved into the following three equations (22), (23), (24):

AsT+Bp1T+Tp2T=0  (22)

(−ET−1A+C)sT+(−ET−1B+D)p1T=0  (23)

Q11sT+Q12p1T+Q13p2T+P1p3T=0  (24)

And an equation (25) is derivable from the equation (24)

p3T=P1−1(Q11sT+Q12p1T+Q13p2T)  (25)

wherein s is a bit of known information, p1 and p2 are known results of the first-layer-coding. According to the formula 25, a quick coding method of B-LDPC code is used to finish the coding, and result p3 of the second layer is sent. Coding of the added incremental redundant data has no influence on the sent code words, and the complexity of the coding remains linear.

Similarly, if the mth layer of the redundant data is retransmitted, Hm−1 has a structure as shown by the formula (26):




  
    
      
        
          H
          
            m
            -
            1
          
        
        =
        
          (
          
            
              
                A
              
              
                B
              
              
                T
              
              
                0
              
              
                0
              
              
                0
              
            
            
              
                C
              
              
                D
              
              
                E
              
              
                0
              
              
                0
              
              
                0
              
            
            
              
                
                  Q
                  11
                
              
              
                
                  Q
                  12
                
              
              
                
                  Q
                  13
                
              
              
                
                  P
                  1
                
              
              
                0
              
              
                0
              
            
            
              
                
                  
                
              
              
                
                  
                
              
              
                
                  
                    
                  
                  ⁢
                  ⋯
                
              
              
                
                  
                
              
              
                
                  
                
              
              
                
                  
                
              
            
            
              
                
                  Q
                  
                    
                      m
                      -
                      1
                    
                    ,
                    1
                  
                
              
              
                
                  Q
                  
                    
                      m
                      -
                      1
                    
                    ,
                    2
                  
                
              
              
                
                  Q
                  
                    
                      m
                      -
                      1
                    
                    ,
                    3
                  
                
              
              
                ⋯
              
              
                
                  Q
                  
                    m
                    -
                    
                      1.
                      ⁢
                      m
                    
                    +
                    1
                  
                
              
              
                
                  P
                  
                    m
                    -
                    1
                  
                
              
            
          
          )
        
      
    
    
      
        (
        26
        )
      
    
  




wherein m=N, the Nth layer of the matrix is the last line of Hm−1. Correspondingly, the coding result of the mth layer is:

pm+1T=Pm−1−1(Qm−1,1sT+Qm−1,2p1T+Qm−1,3p2T+ . . . +Qm−1,m+1pmT)  (27)

wherein s is a bit of known information, p1, p2, p3, . . . , pm are known coding results of the previous layer, the superscript T represents transpose, and the superscript −1 represents inversion.

The fourth step is: if the data transmitting terminal receives NACK request again, performing coding of next layer, and repeating the fourth step and the fifth step, until the transmitting terminal receives an ACK message representing a successful decoding of the receiving terminal or until a limited number of times of retransmission reaches.
Supposed now it is necessary to transmit redundant check data of the mth layer, coding is performed by using the mth layer of the constructed check matrix, the incremental redundant result of the coding is pm+1. The fourth step and the fifth step are repeated until the transmitting terminal receives an ACK message representing a successful decoding of the receiving terminal or until limited number of times of retransmission reaches.
FIG. 3 is a flow chart of an embodiment of the decoding method of the present invention. See FIG. 3, said flow includes:
Step 301, constructing each layer of a check matrix of the layered LDPC code in accordance with service and retransmission HARQ mechanism;
Step 302, at the data receiving terminal, after testing the received data, performing decoding by using the Nth layer of a check matrix of the LDPC code. The initial value of N is 1;
Here, only the first layer of the check matrix is necessary for decoding data of the first layer, and the decoding may be carried out by parallel simplified BP decoding algorithm
Step 303, judging whether the decoding is correct, conducting Step 304 if so, else, conducting Step 305;
Step 304, sending an ACK response representing a correct reception to the transmitting terminal, and terminating the flow;
Step 305, judging whether to reach a predetermined number of upper limit of retransmission, terminating the flow if so, else, conducting Step 306;
Step 305 is an optional step, and Step 306 may also be conducted directly after the failure of decoding is judged in Step 303.
Step 306, increasing the value of N by 1, sending a retransmission request, viz. NACK request, from the data receiving terminal to the data transmitting terminal;
After the reception of the retransmission data, the data receiving terminal layered-decodes the received data by using the Nth layer of the check matrix of the LDPC code. Two layered-decoding methods may be applied here, one of them is shown as FIG. 3 where the following Step 307 to Step 309 are conducted:
Step 307, the data receiving terminal receiving the retransmission data, decoding cascaded data of the received data for retransmission and the data of previous N−1 layers by using the Nth layer of the check matrix of the LDPC code. Here, the data for retransmission is just the data of the Nth layer. And “data of the previous N−1 layers” just refers to the data of all layers upper than the Nth layer;
It specifically includes: decoding the data of the previous N−1 layers by using the previous N−1 layers of the check matrix of the LDPC code, cascading the decoding result of data of the previous N−1 layers and the data of the Nth layer, decoding cascaded data of the decoding result of the previous N−1 layers and the Nth layer by using the Nth layer of the check matrix of the LDPC code. And “data of the previous N−1 layers” just refers to the data of all layers upper than the Nth layer;
Step 308, judging whether the decoding is correct, conducting Step 304 if so, else, conducting Step 309;
Step 309, combining the previous N−1 layers of the check matrix of the LDPC code and the Nth layer of the check matrix, decoding the cascaded data of the previous N−1 layers and the Nth layer by using the combined check matrix, and returning back to Step 303.
Another layered-decoding method as an alternative solution for the above mentioned Step 307 to Step 309 is:
Cascading the data of the previous N−1 layers and the data of the Nth layer, combining the previous N−1 layers of the check matrix of the LDPC code and the Nth layer of the check matrix, decoding the cascaded data by using the combined check matrix, and returning back to Step 303.
In the method contained in the decoding method of the present invention, when the data receiving terminal receives the data of the Nth layer, the data of the Nth layer may be cached and read from the cache during the sequential cascading process in the case of incorrect decoding.
The decoding method of the present invention does not limit the number of layers of the layered LDPC code, and the number of layers can be set according to the requirement of services.
FIG. 4 is a flow chart of implementation of the coding process and the corresponding decoding process of the present invention. Referring to FIG. 4, the flow chart of implementation of the coding process and the corresponding decoding process of the present invention includes:
Step 401, constructing each layer of a check matrix of the layered LDPC code in accordance with service and retransmission HARQ mechanism;
Step 402, the data transmitting terminal coding the data for pre-transmission by using the Nth layer of a check matrix of the LDPC code to obtain data of the Nth layer, and then sending them;
The initial value of N is 1, and this step is just coding the data for pre-transmission by using the first layer of the check matrix of the LDPC code to obtain the data of the first layer. In the step 402, it is unnecessary to perform second-layer-coding unless the data transmitting terminal receives a retransmission request, viz. NACK message.
Step 403, at the data receiving terminal, after testing the received data of the Nth layer, performing decoding by using the Nth layer of a check matrix of the LDPC code;
Here, only the first layer of the check matrix is necessary for decoding data of the first layer, and the decoding may be carried out by parallel simplified BP decoding algorithm;
Step 404, judging whether the decoding is correct, conducting Step 405 if so, else, conducting Step 406;
Step 405, send an ACK response representing a correct reception to the transmitting terminal, and terminating the flow;
Step 406, judging whether to reach the predetermined number of upper limits of retransmission, terminating the flow if so, else, conducting Step 407;
Step 407, increasing the value of N by 1, sending a retransmission request, viz. NACK request, from the data receiving terminal to the data transmitting terminal;
Step 408, the data transmitting terminal receiving the NACK request, performing Nth-layer-coding, viz. coding the coded data of the previous N−1 layers by using the Nth layer of the check matrix of the LDPC code to obtain data of the Nth layer, and then sending them. After sending the data of the (N−1)th layer, the data transmitting terminal caching them for coding the Nth layer, and deleting them if no NACK request is received.
For instance, for second-layer-coding, the coding result of the first layer is coded by using the second layer of the check matrix of the LDPC; for third-layer-coding, the coding result of the second layer and the previous coding results are coded by using the third layer of the check matrix of the LDPC; and the coding of each layer thereafter is performed by analogy.
After the reception of data, the data receiving terminal layered-decodes the received data by using the Nth layer of the check matrix of the LDPC code. Two layered-decoding methods may be applied here, one of them is shown as FIG. 4 in which the following Step 409 to Step 411 are conducted:
Step 409, the data receiving terminal decoding the cascaded data of the received data of the Nth layer and the data of the previous N−1 layers by using the Nth layer of the check matrix of the LDPC code;
It specifically includes: decoding the data of the previous N−1 layers by using the previous N−1 layers of the check matrix of the LDPC code, cascading the decoded data of the previous N−1 layers and the data of the Nth layer, decoding the cascaded data of the decoded data of the previous N−1 layers and the data of the Nth layer by using the Nth layer of the check matrix of the LDPC code.
Step 410, judging whether the coding is correct, conducting Step 405 if so, else, conducting Step 411;
Step 411, combining the previous N−1 layers of the check matrix of the LDPC code and the Nth layer of the check matrix, decoding the cascaded data of the previous N−1 layers and the Nth layer by using the combined check matrix, and returning back to Step 404.
Another layered-decoding method as an alternative solution for the above mentioned Step 401 to Step 411 is:
Cascading the data of the previous N−1 layers and the data of the Nth layer, combining the previous N−1 layers of the check matrix and the Nth layer of the check matrix of the LDPC code, decoding the cascaded data using the combined check matrix, and returning back to Step 404.
In the method contained in the method of the present invention, when the data receiving terminal receives the data of the Nth layer, the data of the Nth layer may be cached and read from the cache during the sequential cascading process in the case of incorrect decoding.
FIG. 5 is a schematic diagram of a decoding process of the layered LDPC code. In FIG. 5, the square with diagonals from top left to bottom right represents an information bit of the transmission data, the square with net-formed diagonals represents a check bit of the first layer of the transmission data, the square with diagonals from bottom left to top right represents a check bit of the second layer of the transmission data, and the blank square represents a reception error bit. Limited by the space, FIG. 5 just shows two layers of coding and decoding, and multilayer coding and decoding can be deduced directly from the situation shown in FIG. 5.
As mentioned above, two decoding methods are applicable at the data receiving terminal. (1) cascading the coded data of the first layer and the received data of the second layer, trying to use the second layer of the check matrix for decoding, sending an ACK response and terminating the process in the case of correct decoding; else, cascading the cached data of the first layer and the received data of the second layer, performing the decoding by using combination of the first layer and the second layer of the check matrix, sending an ACK response and terminating the process in the case of correct decoding; else, sending an NACK request to send incremental redundant information; (2) cascading the cached data of the first layer and the received data of the second layer, performing decoding by using combination of the check matrix of the first layer and the second layer of the check matrix, sending an ACK response and terminating the process in the case of correct decoding, else, sending an NACK request to send incremental redundant information.
The following processes are applied for the first decoding method:
Step 51, cascading the first-layered-coded code word d0 and the received data r1 of the second layer. Of course, a commonly known hard decision may also be conducted here to the first-layered-coded code word to eliminate a gain, and then the hard-decided code word d0 is cascaded with the received data r1 of the second layer;
Step 52, confidencal information of c0 transferred in an additive white Gaussian noise (AWGN) channel being:




  
    
      
        
          L
          ⁡
          
            (
            
              c
              0
              j
            
            )
          
        
        =
        
          {
          
            
              
                
                  
                    4
                    *
                    a
                  
                  
                    σ
                    2
                  
                
              
              
                
                  
                    if
                    ⁢
                    
                      
                    
                    ⁢
                    
                      d
                      0
                      j
                    
                  
                  =
                  0
                
              
            
            
              
                
                  -
                  
                    
                      4
                      *
                      a
                    
                    
                      σ
                      2
                    
                  
                
              
              
                
                  
                    if
                    ⁢
                    
                      
                    
                    ⁢
                    
                      d
                      0
                      j
                    
                  
                  =
                  1
                
              
            
          
        
      
    
    
      
        (
        28
        )
      
    
  




wherein d0j is the jth bit of d0, σ2 is variance of channel noise, α is a constant selected based on an average of the received data r1 of the second layer.

Step 53, confidencal information of the received data r1 of the second layer being:




  
    
      
        
          L
          ⁡
          
            (
            
              r
              1
              j
            
            )
          
        
        =
        
          
            4
            *
            
              r
              1
              j
            
          
          
            σ
            2
          
        
      
    
    
      
        (
        29
        )
      
    
  




Step 54, performing the decoding by using the second layer of the check matrix by the simplified BP algorithm based on the formula (28) and formula (29), sending an ACK response and terminating the process in the case of correct decoding; else, cascading the saved received data r0 of the first layer and the received data r1 of the second layer, performing the decoding by using the combined check matrix shown by the formula (21), sending an ACK response and terminating the process in the case of correct decoding; else, sending an NACK request to send incremental redundant information.
The second decoding method includes cascading the cached data r0 of the first layer and the data r1 of the second layer and performing decoding by using the combined check matrix shown by the formula (21).
In the case of reception of an NACK request, the data transmitting terminal performs coding of the next layer. Supposed now transmission of redundant check data of the mth layer is necessary, coding is performed by using the constructed mth layer of check matrix, wherein the coding incremental redundant result is pm+1.
Correspondingly, the first decoding method is performed by the following processes:
Step 61, cascading the (m−1)th-layer-coded code word dm−2 and the received data rm−1 of the mth layer. Of course a hard decision may also be conducted to the (m−1)-layered-coded code word, and the cascading is performed after the hard decision.
Step 62, confidential information of cm−2 transferred in an AWGN channel being:




  
    
      
        
          L
          ⁡
          
            (
            
              c
              
                m
                -
                2
              
              j
            
            )
          
        
        =
        
          {
          
            
              
                
                  
                    4
                    *
                    a
                  
                  
                    σ
                    2
                  
                
              
              
                
                  
                    if
                    ⁢
                    
                      
                    
                    ⁢
                    
                      d
                      
                        m
                        -
                        2
                      
                      j
                    
                  
                  =
                  0
                
              
            
            
              
                
                  -
                  
                    
                      4
                      *
                      a
                    
                    
                      σ
                      2
                    
                  
                
              
              
                
                  
                    if
                    ⁢
                    
                      
                    
                    ⁢
                    
                      d
                      
                        m
                        -
                        2
                      
                      j
                    
                  
                  =
                  1
                
              
            
          
        
      
    
    
      
        (
        30
        )
      
    
  




wherein dm−2j is the jth bit of dm−2, σ2 is variance of channel noise, α is a constant selected based on an average of the received data rm−1 of the mth layer.

Step 63, confidential information of the received data rm−1 of the mth layer being:




  
    
      
        
          L
          ⁡
          
            (
            
              r
              
                m
                -
                1
              
              j
            
            )
          
        
        =
        
          
            4
            *
            
              r
              
                m
                -
                1
              
              j
            
          
          
            σ
            2
          
        
      
    
    
      
        (
        31
        )
      
    
  




Step 64, performing the decoding by using the mth layer of the check matrix with the simplified BP algorithm based on the formula (30) and formula (31), sending an ACK response and terminating the process in the case of correct decoding; else, cascading all the cached upper-layer data r0, r1, . . . , rm−2 and the received data rm−1 of the mth layer, performing the decoding by using the combined check matrix shown by the formula (26), sending an ACK response and terminating the process in the case of correct decoding; else, sending an NACK request to send incremental redundant information.
The second decoding method includes cascading all the cached upper-layer data r0, r1, . . . , rm−2 and the received data rm−1 and the received data rm−1 of the mth layer and performing the decoding by using the combined check matrix shown by the formula (26).
Now, the performances of the above mentioned two decoding methods are compared in detail. a QC LDPC code is applied wherein the information bit has length of K0=508, the code rates of each of the first layer, second layer and third layer are respectively 4/8, 4/14, 4/20, the code rate of the mother code is 4/8, a data length of 127*6 is retransmitted each time, and the simplified mother matrix constructing method is used, and the cyclic permutation block is in a size of 127*127. The performance of the first decoding method is compared with that of the second decoding method in the follows. Since the decoded data of the first layer is cascaded with the received data of the second layer and the second layer of the check matrix is used for decoding in the first decoding method, the first decoding method is also called “monolayer decoding”; and the second decoding method is also called “complete decoding”.
The following table 1 shows the simulation results of the probability of successful decoding of the two methods:









TABLE 1





signal to noise
monolayer
complete


ratio (dB)
decoding (%)
decoding (%)

















0.6
12
100


0.8
41
100


1
71
100


1.2
87.8
100


1.4
93.1
100


1.6
85.1
100


1.8
86.2
100









The following table 2 shows the simulation results of the average times of decoding iteration of the two methods.









TABLE 2





signal to noise
monolayer
complete


ratio (dB)
decoding
decoding

















0.6
21.12
9.07


0.8
14.68
8.39


1
10.15
7.96


1.2
6.65
7.50


1.4
6.30
7.00


1.6
6.07
6.64


1.8
5.52
6.30









It can be seen from the results of the table 1 and table 2: (1) regarding the probability of successful decoding, when the first decoding method is used at a signal to noise ratio of 1 dB-0.6 dB, the probability of successful decoding by using a monolayer of check matrix reduces along with the depravation of the channel quality; and in the case of a signal to noise ratio between 1.2 dB and 1.8 dB, probability of successful decoding by using the monolayer check matrix reaches 85% and more; while the entire check matrix is applied in the second decoding method, under the condition of identical signal to noise ratios, the probability of successful decoding reaches 100%; (2) regarding the times of decoding iteration, at a signal to noise ratio of 1.2 dB-1.8 dB, the average times of iteration is 6.135 when a monolayer of check matrix is used for decoding, while the average times of iteration is 6.86 when the entire check matrix is used for decoding, the latter carries out 0.725 times more than the former. Regarding the complexity of decoding, the complexity of each time of iteration is directly proportional to the number of 1 in the check matrix, and the check matrices applied in the two kinds of decoding are quite different, that is, one layer of the entire layered check matrix is applied for decoding by a monolayer of the check matrix, while the entire check matrix is applied for the entire decoding, hence the complexity of decoding by a monolayer of the check matrix is far too smaller than that of decoding by the entire check matrix.
It can be seen from the above analysis that the probability of successful decoding of the first decoding method is quite high and it integrally reduces the complexity of the algorithm in good condition of channels; at a signal to noise ratio of 1 dB-0.6 dB, the probability of successful decoding of the first decoding method decreases relative rapidly and the number of the decoding iteration increases rapidly along with the reduction of the signal to noise ratio, thus, now it is meaningless to apply the monolayer of the check matrix for decoding, and the second decoding method may be applied now for decoding.
In a real system, which decoding solution is to be applied may be decided based on the communication channel quality of the receiving terminal, e.g. based on an evaluation value of the signal to noise ratio. Therefore, a pre-determined standard of channel quality of the communication channel may be preset for the method of the present invention, e.g. presetting an evaluation value of the signal to noise ratio. Before decoding, it is further judged whether the channel quality of the current communication channel reaches the preset standard. If so, the first decoding method is applied for decoding, else, the second decoding method is applied for decoding.
Based on the above mentioned coding and decoding methods, the present invention further discloses a coding and decoding communication system based on LDPC code. FIG. 6 is a schematic structure diagram of the coding and decoding communication system. Referring to FIG. 6, the coding and decoding communication system of the present invention includes data transmitting terminal and data receiving terminal, wherein the data transmitting terminal includes a coding device, and the data receiving terminal includes a decoding device.
Wherein the coding device includes an error correcting code constructing unit 610 and a coding unit 620, wherein:
The error correcting code constructing unit 610 is used for constructing an LDPC code used as an error correcting code. The error correcting code constructing unit 610 may be provided at both the data transmitting terminal and the data receiving terminal simultaneously, it may also be provided at one of the terminals and send the constructed LDPC code to the other terminal by message interaction.
The coding unit 620 is provided at the data transmitting terminal of the hybrid ARQ system, and includes a coding module 622 for coding the data for pre-transmission by using the LDPC code constructed by the error correcting code constructing unit 610; the coded data is sent to the data receiving terminal by the transmitting unit of the communication system. As the transmitting unit belongs to commonly knowledge of the art, it is not shown in FIG. 6.
The LDPC code constructed by the device of the present invention has a layered structure, the error correcting code constructing unit 610 includes specifically a check matrix constructing unit for constructing each layer of check matrix of the layered LDPC code. Regarding the exact constructing method, the method of the above mentioned Step 31 to Step 35 may be taken in consideration.
The coding unit 620 further includes a hierarchy determining unit for determining the hierarchy of coding; in the case of initially sent data, the coding module 622 is triggered to perform first-layer-coding of the data by using the first layer of the check matrix of the LDPC code; in the case of data for (n−1)th retransmission sent by the data transmitting terminal, the hierarchy n of coding is determined, the coding module is triggered to nth-layer-cod the coded data of the previous n−1 layers by using the nth layer of the check matrix, wherein n is an integer no less than 2.
Wherein the decoding device includes an error correcting code constructing unit 630 and a decoding unit 640, wherein:
The error correcting code constructing unit 630 is used for constructing an LDPC code used as an error correcting code. The error correcting code constructing unit 630 may be provided at both the data transmitting terminal and the data receiving terminal simultaneously, it may also be provided at one of the terminals and send the constructed LDPC code to the other terminal by message interaction.
The decoding unit 640 is provided at the data receiving terminal of the hybrid ARQ system and includes a decoding module 642 for decoding the received data by using the LDPC code constructed by the error correcting code constructing unit 630.
The LDPC code constructed by the device of the present invention has a layered structure, the error correcting code constructing unit 630 includes specifically a check matrix constructing unit for constructing each layer of check matrix of the layered LDPC code. Regarding the exact constructing method, the method of the above mentioned Step 31 to Step 35 may be taken in consideration.
The decoding unit further includes a hierarchy determining unit 641 and a decoding result judging unit 643, the hierarchy determining unit 641 is used for determining a hierarchy N. In the case of reception of initial transmission data at the data receiving terminal, the decoding module is triggered to layered-decode the received data by using the first layer of the check matrix of the LDPC, in the case of reception of data for (n−1)th retransmission at the data receiving terminal, the hierarchy n is determined, and the decoding module is triggered to layered-decode the received data by using the nth layer of the check matrix of the LDPC code, wherein n is an integer no less than 2; the decoding result judging unit 643 is used for judging the decoding result, in the case of incorrect decoding, the value of N increase by 1 and the data receiving terminal is triggered to send a retransmission request to the data transmitting terminal
The decoding module 642 further includes a first decoding module and a second decoding module, and the decoding result judging unit further comprises a first decoding result judging unit and a second decoding result judging unit, wherein:
The first decoding module is used for decoding the data of the previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer by using the nth layer of the check matrix of the LDPC code, and outputting decoding result to the first decoding result judging unit;
The first decoding result judging unit is used for judging the decoding result and triggering the second decoding unit in the case of incorrect decoding;
The second decoding module is used for cascading the data of the previous n−1 layers and the data of the nth layer, combining the previous n−1 layers of the check matrix of the LDPC code and the nth layer of the check matrix, decoding the cascaded data of the previous n−1 layers and the nth layer by using the combined check matrix, and outputting the decoding result to the second decoding result judging unit;
The second decoding result judging unit is used for judging the decoding result, and informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding.
FIG. 7 is a schematic diagram of performance simulation of the layered LDPC code of the present invention. Referring to FIG. 7, supposed that a QC LDPC code is applied wherein the information bit has a length of K0=508, the code rate of each of the first layer, second layer and third layer is respectively 4/8, 4/14, 4/20, the code rate of the mother code is 4/8, a data length of 127*6 is retransmitted each time, and the simplified mother matrix constructing method is used. Wherein, the cyclic permutation block is in a size of 127*127. In FIG. 7, the abscissa indicates symbol energy/noise (Es/N0), the ordinate indicates bit error rate (BER) which shows performance parameter of the LDPC code. The trajectory 701 represents the performance of a B-LDPC code with a code rate of 508/2540, the trajectory 702 represents the performance of a HARQ-based LDPC code with a code rate of 508/2540, the trajectory 703 represents the performance of a HARQ-based LDPC code with a code rate of 508/1778, the trajectory 704 represents the performance of a B-LDPC code with a code rate of 508/1778, the trajectory 705 represents the performance of a HARQ-based LDPC code with a code rate of 508/1016, and the trajectory 706 represents the performance of a B-LDPC code with a code rate of 508/1016. Moreover, the trajectory 705 and the trajectory 706 overlap each other in FIG. 7.
It can be seen from the simulation result in FIG. 7 that the performance of the layered LDPC code constructed based on HARQ technology is substantively in consistency with that of the integrally optimized B-LDPC at a relative high code rate. However, with reduction of the code rate, the performance of said method decreases somewhat as compared with the B-LDPC code, and it reduces about 0.6 dB at a code rate of 0.2. B-LDPC is an integrally optimized LDPC code, and the HARQ-based layered LDPC adopts optimally constructed layered LDPC code. Thus, the present invention commendably satisfies the composite demand on the aspects such as performance, complexity, and code delay in the implementation of coding, while substantively ensuring the coding performance and relative low coding complexity.
FIG. 8 is a structural flow chart of an electronic device implementing the coding and decoding embodiments of the present invention. In FIG. 8, user equipment 810 realizes communication by access to an access network 820. The user equipment 810 includes a data processor 813, a memory 812 connected to the data processor 813, and a wireless transceiver 814 capable of receiving and transmitting. The user equipment 810 realizes intercommunication with the access network 820 via the wireless transceiver 814. The memory 812 has program 811 stored thereon. The access network 820 includes a data processor 823, a memory 822 connected to the data processor 823, and a wireless transceiver 824 capable of receiving and transmitting. The access network 820 realizes intercommunication with the user equipment 810 via the wireless transceiver 824. The memory 822 has program 821 stored thereon. The access network 820 connects to one or more external networks or systems, such as mobile communication system or Internet, through data channels. A part of said contents is not shown in FIG. 8 as being commonly knowledge of the art.
The data processor 813 and the data processor 823 execute the corresponding program 811 and program 821 which contain program instruction therein for implementing the above described embodiment of the present invention to realize coding and decoding of low-density parity-check (LDPC) code. The embodiment of the present invention can be realized via the data processor 813 and data processor 823 in the user equipment 810 and the access network 820 by executing computer software program, or realized via hardware or in the form of combination of software and hardware.
Evidently, the user equipment 810 in this embodiment includes but is not limited to the following equipment: user terminal equipment such as mobile phone, personal digital assistant (PDA), laptop and so on. The access network 820 in this embodiment includes but is not limited to the following equipment: access network equipment connecting with the system to which the user accesses, such as base station, AP (Access Point) of a wireless local network and so on.
Based on the above coding method, the present invention further provides a computer program for executing the coding method in the above embodiment.
Based on the above coding method, the present invention further provides a computer readable medium for carrying a computer program executing the coding method in the above embodiment.
Based on the above decoding method, the present invention further provides a computer program for executing the decoding method in the above embodiment.
Based on the above decoding method, the present invention further provides a computer readable medium for carrying a computer program executing the decoding method in the above embodiment.
The cited term “computer readable medium” refers to an optional medium providing program to be executed to the data processor. Such a medium may be in various forms, including but not limited to nonvolatile medium, volatile medium, and transmission medium. The nonvolatile medium includes e.g. memory device such as optical disc or magnetic disk, and the volatile medium includes main memory such as dynamic memory.
The transmission medium includes coaxial cable, copper line and optical fiber, including lines containing bus. The transmission medium may also be embodied in acoustic, optical form, or in the form of electromagnetic wave, as those generated in RF and IR data communication. The computer readable medium is usually in the form of e.g. diskette, floppy disk, hard disk, tape or any other magnetic medium or CD-ROM, CDRW, DVD or any other optical medium or punched card, punched tape, optical mark reader paper or any physical medium punched or identifiably tagged or RAM, PROM, and EPROM, FLASH-EPROM or any other memory feature or cassette or carrier wave, or any other computer readable medium. Computer readable media in different form can be used for providing program to be executed to the data processor. For example, a program for carrying out at least part of the present invention may be initially generated on a magnetic disc of a remote computer.
The above is just preferable embodiments of the present invention. It should be indicated that the person skilled in the art is capable to carry out several improvement and retouch without deviating from the principle of the present invention, and these improvement and retouch shall also be considered as being within the scope of protection of the present invention.

## Claims

1. A method for coding of a LDPC code, comprising:
A. constructing each layer of check matrix of the layered LDPC code used as an error correcting code;
B. prior to initially sending data by a data transmitting terminal, performing first-layer-coding of the data to be sent by using a first layer of the check matrix of the LDPC code, sending the first-layer-coded data;
C. prior to sending data for (n−1)th retransmission by the data transmitting terminal, performing nth-layer-coding of the data by using an nth layer of the check matrix of the LDPC code;
D. sending the nth-layer-coded data, wherein n is an integer no less than 2, wherein the method for constructing each layer of check matrix of the layered LDPC code of step A is a method for constructing a quasi-cyclic LDPC code and the step A comprises:
A1. setting parameters of a mother matrix;
A2. constructing the mother matrix M0 based on the set parameters; constructing a base check matrix H0 based on the mother matrix M0 by power method for constructing quasi-cyclic code, the base check matrix H0 serving as the first layer of the check matrix;
A3. setting an initial value of m to be 2;
A4. constructing a mother matrix Mm−1 of the mth layer of the check matrix;
A5. generating a cyclic permutation matrix by power method to substitute a selected block in Mm−1, so that the mth layer of a check matrix Hm−1 is obtained;
A6. judging whether m reaches a predetermined value, terminating this procedure if so; else, increasing the value of m by 1 and returning back to step A4, and
wherein the method for constructing each layer of the check matrix of the layered LDPC code is a bit-filling method or a progressive edge-growth algorithm, and
wherein the data for the coding in step C are the coded data of all previous n−1 layers;
the nth-layer-coding of the data by using the nth layer of the check matrix of the LDPC code in step C is specifically:
determining structures of previous n layers of check matrix Hm−1 in accordance with the formula:





  
    
      H
      
        m
        -
        1
      
    
    =
    
      (
      
        
          
            A
          
          
            B
          
          
            T
          
          
            0
          
          
            0
          
          
            0
          
        
        
          
            C
          
          
            D
          
          
            E
          
          
            0
          
          
            0
          
          
            0
          
        
        
          
            
              Q
              11
            
          
          
            
              Q
              12
            
          
          
            
              Q
              13
            
          
          
            
              P
              1
            
          
          
            0
          
          
            0
          
        
        
          
            
              
            
          
          
            
              
            
          
          
            
              
                
              
              ⁢
              ⋯
            
          
          
            
              
            
          
          
            
              
            
          
          
            
              
            
          
        
        
          
            
              Q
              
                
                  m
                  -
                  1
                
                ,
                1
              
            
          
          
            
              Q
              
                
                  m
                  -
                  1
                
                ,
                2
              
            
          
          
            
              Q
              
                
                  m
                  -
                  1
                
                ,
                3
              
            
          
          
            ⋯
          
          
            
              Q
              
                m
                -
                
                  1.
                  ⁢
                  m
                
                +
                1
              
            
          
          
            
              P
              
                m
                -
                1
              
            
          
        
      
      )
    
  
  ,



 wherein m=n, and the nth layer of the check matrix is the last line of Hm−1; and
determining a coding result pm+1T of the mth layer in accordance with the formula: pm+1T=Pm−1−1(Qm−1,1sT+Qm−1,2p1T+Qm−1,3p2T+ . . . +Qm−1,m+1pmT), wherein s is a known information bit, p1, p1, p3, . . . , pm are known coding results of coding of upper layers relative to the mth layer, the superscript T represents transpose, and the superscript −1 represents inversion, and
the LDPC code of said each layer is a block-type LDPC code.

2. A computer program for executing the coding method according to claim 1.

3. A computer-readable medium for carrying the computer program for executing the coding method according to claim 1.

4. A method for decoding of a LDPC code, comprising:
E. pre-constructing and storing each layer of a check matrix of a layered LDPC code;
F. after a data receiving terminal receives initially sent data of the first layer, decoding the received data by using a first layer of the check matrix of the LDPC code and judging the decoding result, and informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding;
G. after the data receiving terminal receives data for (n−1)th retransmission, layered-decoding the received data by using an nth layer of the check matrix of the LDPC code;
judging the decoding result, and informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding, wherein n is an integer no less than 2, wherein the step F comprises:
F1. decoding the data of the previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer by using the nth layer of the check matrix of the LDPC code;
F2. judging the decoding result of the step F1, cascading the data of the previous n−1 layers and the data of the nth layer in the case of incorrect decoding, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix of the LDPC code, decoding the cascaded data of the previous n−1 layers and the nth layer by using the combined check matrix, and judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding; and
F3. cascading the data of the previous n−1 layers with the data of the nth layer, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix of the LDPC code, and decoding the cascaded data by using the combined check matrix.

5. The method for decoding of a LDPC code according to claim 4, wherein said method further includes: judging whether channel quality of a current channel reaches a predetermined standard, if so, the step F being specifically:
F1. decoding the data of the previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer by using the nth layer of the check matrix of the LDPC code;
F2. judging the decoding result of the step F1, cascading the data of the previous n−1 layers and the data of the nth layer in the case of incorrect decoding, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix of the LDPC code, decoding the cascaded data of the previous n−1 layers and the data of the nth layer by using the combined check matrix, and judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding;
if the channel quality of the current channel fails to reach the predetermined standard, the step F being specifically:
F3. cascading the data of the previous n−1 layers with the data of the nth layer, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix, and decoding the cascaded data by using the combined check matrix.

6. The method for decoding of a LDPC code according to claim 4, wherein the constructing method of the step D is: a method for constructing a quasi-cyclic LDPC code; and the step D includes specifically:
H1. setting parameters of a mother matrix;
H2. constructing the mother matrix M0 based on the set parameters; constructing a base check matrix H0 based on the mother matrix M0 by power method for constructing quasi-cyclic code, the base check matrix H0 serving as the first layer of the check matrix;
H3. setting an initial value of m to be 2;
H4. constructing a mother matrix Mm−1 of the mth layer of the check matrix;
H5. generating a cyclic permutation matrix by power method to substitute a selected block in Mm−1, so that the mth layer of a check matrix Hm−1 is obtained;
H6. judging whether m reaches a predetermined value, terminating this procedure if so; else, increasing the value of m by 1 and returning back to step D4;
wherein the method for constructing each layer of the check matrix of the layered LDPC code is a bit-filling method or a progressive edge-growth algorithm, and the LDPC code of said each layer is a block-type LDPC code.

7. A computer program for executing the method for decoding according to claim 6.

8. A computer-readable medium for carrying the computer program for executing the method for decoding according claim 6.

9. A device for decoding a LDPC code, comprising:
an error correcting code constructing unit for constructing each layer of a check matrix of a layered LDPC code used as an error correcting code;
a decoding unit provided at a data receiving terminal for layered-decoding the received data by using the layered LDPC code constructed by the error correcting code constructing unit, wherein the decoding unit includes specifically a decoding module, a hierarchy determining unit, and a decoding result judging unit,
the decoding unit being used for decoding,
the hierarchy determining unit being used for determining hierarchy of decoding, after the data receiving terminal receives the initially sent data, the decoding module being triggered to layered-decoding the received data by using the first layer of the check matrix of the LDPC code; after the data receiving terminal receives data for (n−1)th retransmission, hierarchy n being determined, the decoding module being triggered to layered-decoding the received data by using the nth layer of the check matrix of the LDPC code, wherein n is an integer no less than 2,
the decoding result judging unit being used for judging the decoding result and informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding, and
wherein the decoding module further includes a first decoding module and a second decoding module, and the decoding result judging unit further includes a first decoding result judging unit and a second decoding result judging unit, wherein,
the first decoding module is used for decoding data of previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer by using the nth layer of the check matrix of the LDPC code, and outputting the decoding result to the first decoding result judging unit,
the first decoding result judging unit is used for judging the decoding result and triggering the second decoding module in the case of incorrect decoding,
the second decoding module is used for cascading the data of the previous n−1 layers and the data of the nth layer, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix of the LDPC code, decoding the cascaded data of the previous n−1 layers and the nth layer by using the combined check matrix, and outputting the decoding result to the second decoding result judging unit,
the second decoding result judging unit is used for judging the decoding result, and informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding, and
wherein the LDPC code of said each layer is a block-type LDPC code.

10. An electronic device comprising: at least one data processor, at least one memory connected with the data processor; and a coder connected with the data processor; wherein
the coder is used for constructing each layer of a check matrix of a layered LDPC code used as an error correcting code and, prior to initially sending data, performing first-layer-coding of the data to be sent by using a first layer of the check matrix of the LDPC code and, prior to sending data for (n−1)th retransmission, performing nth-layer-coding of the data by using an nth layer of the check matrix of the LDPC code, wherein the method for constructing the layered LDPC is a method for constructing a quasi-cyclic LDPC code, specifically comprising the following steps:
G1. setting parameters of a mother matrix;
G2. constructing the mother matrix M0 based on the set parameters; constructing a base check matrix H0 based on the mother matrix M0 by power method for constructing quasi-cyclic code, the base check matrix H0 serving as the first layer of the check matrix:
G3. setting an initial value of m to be 2;
G4. constructing a mother matrix Mm−1 of the mth layer of the check matrix;
G5. generating a cyclic permutation matrix by power method to substitute a selected block in Mm−1, so that the mth layer of a check matrix Hm−1 is obtained; and
G6. judging whether m reaches a predetermined value, terminating this procedure if so; else, increasing the value of m by 1 and returning back to step G4.

11. An electronic device, comprising: at least one data processor; at least one memory connected with the data processor; and a decoder connected with the data processor, wherein
the decoder is used for pre-constructing and storing each layer of a check matrix of a layered LDPC code and, after a data receiving terminal receives initially sent data of the first layer, decoding the received data by using a first layer of the check matrix of the LDPC code and judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding, and, after the data receiving terminal receives data for (n−1)th retransmission, layered-decoding the received data by using an nth layer of the check matrix of the LDPC code; judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding, wherein n is an integer no less than 2, wherein after reception of the data for (n−1)th retransmission, it conducts the following:
H1. decoding the data of the previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer by using the nth layer of the check matrix of the LDPC code;
H2. judging the decoding result of the step H1, cascading the data of the previous n−1 layers and the data of the nth layer in the case of incorrect decoding, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix of the LDPC code, decoding the cascaded data of the previous n−1 layers and the nth layer by using the combined check matrix, and judging the decoding result, informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding, and
wherein after reception of the data for (n−1)th retransmission, it conducts the following step:
H3. cascading the data of the previous n−1 layers with the data of the nth layer, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix of the LDPC code, and decoding the cascaded data by using the combined check matrix.

12. The electronic device according to claim 11, wherein after reception of the data for (n−1)th retransmission, it further conducts the following step: judging whether channel quality of a current channel reaches a predetermined standard, conducting the following step if so:
H1. decoding the data of the previous n−1 layers by using the previous n−1 layers of the check matrix of the LDPC code, cascading the decoding result of the data of the previous n−1 layers and the data of the nth layer, decoding the cascaded data of the decoding result of the data of the previous n−1 layers and the data of the nth layer by using the nth layer of the check matrix of the LDPC code;
H2. judging the decoding result of the step H1, cascading the data of the previous n−1 layers and the data of the nth layer in the case of incorrect decoding, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix of the LDPC code, decoding the cascaded data of the previous n−1 layers and the nth layer by using the combined check matrix, judging the decoding result, and informing the data transmitting terminal of retransmitting the data in the case of incorrect decoding;

and cascading the data of the previous n−1 layers with the data of the nth layer, combining the previous n−1 layers of the check matrix and the nth layer of the check matrix of the LDPC code, and decoding the cascaded data by using the combined check matrix if the channel quality of the current channel fails to reach the predetermined standard, and wherein the electronic device is selected from the group consisting of a mobile electronic device, a mobile phone, a base station and an access point AP of a wireless local network.