This application claims the benefit under 35 U.S.C. §119(a) of a Chinese patent application filed on Dec. 28, 2007 in the Chinese Patent Office and assigned Serial No. 200710307835.1, the entire disclosure of which is hereby incorporated by reference.
1. Field of the Invention
The present invention relates to an encoding and decoding technology for a digital communication system. More particularly, the present invention relates to a method and device for decoding a Low Density Parity Check (LDPC) code.
2. Description of the Related Art
For a communication system, channel coding technology guarantees reliable communication in a channel that includes noise. Presently, modern coding techniques, such as Turbo coding, Low Density Parity Check (LDPC) coding and the like have been applied in some communication standards for forward error correction. In the Institute of Electrical and Electronics Engineers (IEEE) 802.16e mobile Worldwide Interoperability for Microwave Access (WiMAX) standard, both Turbo coding and LDPC coding are simultaneously used as a Forward Error Correction (FEC) code. Moreover, LDPC coding is used as channel coding in systems such as a Digital Video Broadcasting Satellite version 2 (DVB-S2), the Digital Television Terrestrial Broadcasting (DVB-T) system proposed by Tsinghua University and the Mobile Multimedia Broadcasting (CMMB) system proposed by TiMi corporation.
Since LDPC coding has superior error correction performance and lower decoding complexity, LDPC coding can be more effective than Turbo coding. When designing an LDPC decoding process, a parallel stage must be specified for the LDPC decoder. The parallel stage may include a block-level parallel structure and a sub-block-level parallel structure. Also, message storing during an iterative decoding process must be considered. In a conventional Belief Propagation (BP) algorithm, a current iteration operation utilizes a previous iteration result. Therefore, all iteration messages are necessary to be stored. However, in the BP algorithm, based on a variable node message vector (VN_M [3]) and the BP algorithm, based on a check node central (CN_C), a message is updated in a trigger schedule.
Accordingly, a previous iteration result may not be stored. Therefore, a reduced amount of memory for messages will be utilized for the BP algorithm. In addition, a necessary number of iterations for decoding is an important characteristic of the LDPC decoder. With the conventional BP algorithm, a necessary number of iterations for decoding is generally within a range from 30 to 50, depending on performance requirements. To obtain substantially the same performance, the necessary number of iterations for decoding with the CN_C BP algorithm is approximately half the number of iterations in the conventional BP algorithm. Further, decoding complexity for the check nodes must be reduced.
To implement decoding in parallel, it is necessary that a check matrix for an LDPC code has a special structure. The WiMax system and the DVB-T system use a quasi-cyclic LDPC code, which is based on a cyclic matrix. In the DVB-S2 system and a CMMB system, the structure applied to the LDPC code is more stochastic. The LDPC code is constructed based on a base matrix and certain expandable rules and includes potential parallel attributes. A number of parallel branches for the decoder and a procedure for message storing and updating are determined according to the structure of a check matrix for the LDPC code and the system throughput.
The conventional BP algorithm and the CN_C BP algorithm are described below in
In 103, M(n) is the set of check nodes connecting to variable node n, wherein (0≦n≦N−1) (e.g., M(3)={1,2}. In 104 N(m) is the set of variable nodes operated in the mth check equation, wherein (0≦m≦M−1) (e.g., N(3)={4,5,6,7}. Also, M(n)\m is set for the rest of M(n) elements from which m elements are deleted. Similarly, N(m)\n is set for the rest of N(m) elements from which n elements are deleted. In addition, qn→m(0) (qn→m(1)) is a condition probability in which information transmitted from the variable node n to the check node m indicates the variable node n is 0 or 1 based on the set M(n)\m. Similarly, rm→n (0) (rm→n (1)) is a condition probability in which information transmitted from the check node m to the variable node n indicates that the variable node n is 0 or 1 based on a set N(m)→n. Finally, a transmitting vector and the receiving vector includes x=(x0, x1, . . . , xN−1) and y=(y0, y1, . . . , yN−1), respectively.
In a probability domain, inputs of a BP decoding algorithm are A Posteriori Probabilities (APP). That is, qn→m(0)=Px/y(xn=0|yn) and qn→m(1)=Px/y(xn=1|yn), both of which are determined according to channel statistic characteristics. In addition, the Log Likelihood Ratio (LLR) is defined as LLRs zn→m(xn)≡ log(qn→m(0)/qn→m(1)) (variable message 105, that is, V_M) and Ln→m (xn)≡ log(rm→n(0)/rm→n(1)) (check message 106).
By a hyperbolic tangent rule, a conventional BP algorithm may be described as follows:
Initialization:
Suppose each variable node n has a posteriori probability of L(xn|yn)=log(P(xn=0|yn)/P(xn=1|yn)) (which refers to channel information Ch_M) and 3zn→m(xn)=L(xn″yn), m M(n).
Message Updating:
Step 1: (a check node updating): for each check node m and n N(m), calculating
L
m→n(xn)=[Πn′ N(m)\n sign(zn′→m(xn))]×2 tanh−1 [Πn′
N(m)\ntanh(|zn′→m(xn)|/2)] (1)
Step 2: (a variable node updating): for each variable node n, calculating
z
n→m′(zn)=L(xn|yn)+Σm′ M(n)\mLm→n′(xn) for each m ε M(n) (2)
z
n(xn)=L(xn|yn)+Σm M(n)Lm→n(xm) (3)
Decision in Decoding:
If Z(xn)≧0, then x̂n=0; and if Z(xn)<0, then x̂n=1. Thus a vector x̂=(x̂0, x̂1, . . . , x̂N−1) is obtained. If x̂HT=0, the decoding process stops, otherwise, step 1 is repeated. If the number of iterations for decoding reaches a preset maximum value itmax but x̂HT=0 cannot be satisfied, then decoding failure is indicated.
To determine an output message from each node during the current iteration, the previous iteration results zn→m and Lm→n are received from equations (1) and (2). To store the previous iteration results, memories of (2 dv+1)BN (dv denotes an average degree of node, B denotes a number of bits for a message) bits are required for an LDPC decoder.
In the CN_C BP algorithm, calculation is implemented to focus on the check nodes. The check node messages are updated, and corresponding variable node messages V_Ms are updated after the check node messages are updated. Since the variable node messages are updated immediately after the update of check node messages, the variable node message that has already updated is used for the update of the next check node message (during the same iteration), i.e., the variable node messages are applied in the iteration to speed the message convergence and reduce the number of iterations for decoding. The CN_C BP decoding algorithm is described as follows:
Initialization:
Suppose each V_M correspond to a channel message Ch_M, and messages are 0s.
Message Updating:
Step 1: let m=0;
Step 2: using equation (1), determining the check node message Lm→n (xn) for each n ;
Step 3: using equation (2), updating the variable node message zn→j(xn) for each n M(m) and j
N(n)\m; calculating zn(xn);
Step 4: m++; if m=M−1, one iteration process is completed; and if m<M−1, go to step 2.
Decision in Decoding:
If Z(xn)≧0, then x̂n=0, and if Z(xn)<0, then x̂n=1. Thus a vector x̂=(x̂0, x̂1, . . . , x̂N−1) is obtained. If x̂HT=0, the decoding process stops, otherwise step 1 is repeated. If the number of iterations reaches the preset maximum value itmax and x̂HT=0 cannot be satisfied, then decoding failure is indicated.
To further reduce an amount of memory for LDPC decoding, a variable node message vector is proposed for variable node message storing and updating, as shown in
With VN_M, using equation (4) the variable node message transmitted to the ith (i=0,1, . . . , dv−1) check node is
V
—
M(i)=VM—E(i)+Ch—M (4)
A hard decision message (D_M) corresponding to the variable node can be determined using equation (5):
D
—
M=Ch
—
M+(Σ
i
{0, 1 . . . , dv−1}
VM
—
E(i))/(dv−1 (5)
For the variable node v connecting with dv checking nodes c0, c1, . . . , cdv−1, the messages transmitted to the check nodes during iteration it are defined as C_M (it, 0), C_M (it, 1), . . . , C_M(it, dv−1). The variable node extrinsic messages are defined as VM_E (it,0), VM_E(it, 1), . . . , VM_E(it, dv−1). If the check node message C_M(it, j) corresponding to cj is updated to C_M(it+1, j) through iteration it+1, then according to an update rule , the variable node message vector can be updated using equation (6) for j {0, 1, . . . , dv−1} and k
N(v)\k.
VM
—
E(it+1, k)=C—M(it+1,j)+VM—E(it, k)−(Σl N(v)\jVM—E(it, l)−(dv−2) VM—E(it, j))/(dv−1) (6)
As described above, a conventional BP algorithm stores previous iteration results so that an increased amount of memory is necessary. In addition, in the conventional BP algorithm, each check node is processed as a subcode. Since a subcode has fewer codeword bits, information converges slowly in the iteration. However, with a trigger-scheduled updating of a variable node message in the CN_C BP algorithm, the update of a sequent check node message utilizes the variable node message so that the convergence is fast. In addition, the CN_C BP algorithm based on variable node message vector requires a reduced amount of memory.
Therefore a need exists for a method and device for reducing decoding complexity and number of iterations for a low density parity check code.
An aspect of the present invention is to address at least the above-mentioned problems and/or disadvantages and to provide at least the advantages described below. Accordingly, an aspect of the present invention is to provide a method for decoding a Low Density Parity Check (LDPC) based on a variable node message vector and a CN_C BP algorithm and also a decoder using the decoding method. With the proposed decoding method and the corresponding decoder, superior performance and fast convergence can be obtained.
In accordance with an aspect of present invention, an apparatus for decoding an LDPC is provided. The apparatus includes a variable node message memory for storing a variable node message vector; a memory access controller for controlling a node computing unit to read from and write to the variable node message memory and for controlling an iteration process for the apparatus, a node computing unit for updating a check node message and a variable node message, and for determining a decision message, the node computing unit comprising a variable node message generation unit for determining the variable node message for use in a check node message calculation unit according to the variable node message vector, a check node message calculation unit for updating the check node message, a variable node message updating unit for updating a corresponding variable node message, a hard decision calculation unit for determining the hard decision message for a corresponding variable node, and a parity check unit for calculating a parity bit and for outputting the parity bit results to a decoding termination controller.
In accordance with another aspect of present invention, a method for decoding an LDPC is provided. The method includes initializing an address table, a node computing unit and a variable node message memory, reading a variable node message vector, updating a check node message and the variable node message, and determining a hard decision message, and controlling an iteration process of LDPC decoding in response to a decoding termination control signal or outputting the decoding termination control signal according to a preset maximum number of iterations, wherein the reading of the variable node message vector further comprises determining the variable node message applied in the check node message calculation unit according to the variable node message vector, updating the check node messages, updating corresponding variable node message, determining the hard decision message for corresponding variable nodes, determining a check bit and outputting the check bit result to the decoding termination controller.
Other aspects, advantages and salient features of the invention will become apparent to those skilled in the art from the following detailed description, which, taken in conjunction with the annexed drawings, discloses exemplary embodiments of the invention.
The above and other aspects, features, and advantages of certain exemplary embodiments of the present invention will be more apparent from the following description taken in conjunction with the accompanying drawings, in which:
Throughout the drawings, it should be noted that like reference numbers are used to depict the same or similar elements, features, and structures.
The following description with reference to the accompany drawings is provided to assist in a comprehensive understanding of exemplary embodiments of the invention as defined by the claims and their equivalents. It includes various specific details to assist in that understanding but these are to be regarded as merely exemplary. Accordingly, those of ordinary skill in the art will recognize that various changes and modifications of the embodiments described herein can be made without departing from the scope and spirit of the invention. Also, descriptions of well-known functions and constructions are omitted for clarity and conciseness.
The terms and words used in the following description and claims are not limited to the bibliographical meanings, but, are merely used by the inventor to enable a clear and consistent understanding of the invention. Accordingly, it should be apparent to those skilled in the art that the following description of exemplary embodiments of the present invention are provided for illustration purpose only and not for the purpose of limiting the invention as defined by the appended claims and their equivalents.
It is to be understood that the singular forms “a,” “an,” and “the” include plural referents unless the context clearly dictates otherwise. Thus, for example, reference to “a component surface” includes reference to one or more of such surfaces.
By the term “substantially” it is meant that the recited characteristic, parameter, or value need not be achieved exactly, but that deviations or variations, including for example, tolerances, measurement error, measurement accuracy limitations and other factors known to skill in the art, may occur in amounts that do not preclude the effect the characteristic was intended to provide.
An exemplary embodiment of the present invention includes a novel Low Density Parity Check (LDPC) code decoder based on a variable node message vector and a Check Node Central Belief Propagation (CN_C BP) algorithm to obtain superior performance with reduced memory of messages inside the LDPC decoder and a number of average iterations.
In the following, an LDPC with a ½ code rate is taken to illustrate an operation process of the LDPC decoder.
An exemplary structure of the LDPC decoder is illustrated in
Referring to
The memory access controller 302 controls the node computing unit 303 to implement read and write operations to the variable node message memory 301.
Still referring to
The node computing unit 303 implements operations for updating check node messages or variable node messages and determining a decision message and the like.
The LDPC decoder, based on the CN_C BP algorithm and variable node message vector is described below.
As shown in
An LDPC code is adopted by a Satellite Terrestrial Interactive Multi-service Infrastructure (STiMi) in which a codeword length N=9216 and a number of parity check bits M=4608. If NB=16, then the NB includes 16 branches that are simultaneously implemented in parallel in the LDPC decoder.
In
It is a current number of iterations;
s is a current number of intrinsic iterations;
Smax is a maximum number of intrinsic iterations, i.e., M/NB;
Ms is an adjoint matrix of a current codeword, i.e., x̂HT;
As illustrated in
Further, in step 506 check node messages are updated. The variable node message vector is read in step 507. In step 508, the adjoint matrix Ms is computed. In step 509, if s=Smax−1, the process proceeds to step 511, otherwise, the process proceeds to step 510. In step 510 the number of intrinsic iterations is increased (s++) and the process returns to step 505. In step 511, if Ms equals 0, the decoding process is terminated and the decoded bits are output in step 516. Otherwise, if Ms does not equal 0, the process proceeds to step 512. In step 512, the current number of iterations is increased (it++). In step 513, if it=itmax−1, the decoding process is terminated and the decoded bits are output in step 515. Otherwise, if it is not equal to itmax−1, the process returns to step 504.
In the description above, the LDPC decoder, based on a variable node message vector and the CN_C BP algorithm, an implementation scheme for the LDPC decoder is given. In an exemplary implementation, the description is focused on the implementation method and means for the node computing unit 303 using function modules, such as the memory access controller, the decoding termination controller and the variable node message memory. However, the present invention is not limited thereto. Accordingly, any available method may implement the function modules.
An updating of check node messages and the updating of variable node messages are implemented in the node computing unit 303. The node computing unit 303 is a critical component of the LDPC decoder. The node computing unit 303 is designed based on the method of storing and updating the variable node message vector.
An exemplary structure of the node computing unit 303 is illustrated in
In
Still referring to
A flowchart of a determination period implemented in a node computing unit 303 is illustrated
In an STiMi, indices of variable nodes connecting with the first check node are specified by the check matrix of the LDPC with a ½ code rate as 0, 6, 12, 18, 25 and 30. With reference to
Referring to
Still referring to
After step 715, the decoder determines a next check node, stops current iteration and starts the next iteration, or completes an entire decoding process. In an exemplary implementation, operations of reading and writing the VN_Ms are implemented in serial and may be implemented in parallel after some modifications to the node computing unit 303.
The variable message generation unit (V_M_Gnrt) 610 generates variable messages necessary for updating a check message and a variable node message. For example, an index of the check node that is currently processed is denoted as i_Cur_CN. A variable node's variable node mark (VN_F) in a corresponding message vector of the variable node connecting with the check node equals 1. Here, i_Cur_CN also indicates an index of N_F whose value is 1, i.e., VN_F(i_Cur_CN)=1. Subscripts of VN_F, whose value is 1, are different from each other for different variable node message vectors. However, the subscripts correspond to the index of the check node currently being processed.
Here, i_Cur_CN=0. The indication signals VN_F(O)˜VN_F(2) for six variable node message vectors connecting with the check node are 100,100,100,100,100,100, respectively.
The variable message generation unit 610 includes a control signal generator 801, a variable message generator 802 and a temporary variable node extrinsic message (VM_E_temp) generator 803.
The control signal generator 801 determines the variable message after a node control signal V_control is generated. The control signal V_control is received according to a dv variable node, which is a vector of dv bits, marked VN_F (0)˜VN_F (dv−1) of each VN_M.
Accordingly, the control signal V_control is determined according to three node marks VN_F (0)˜VN_F (2) in each VN_M., which is a 3-bit vector.
The V_control signal indicates the index of the check node in processing. With the control signal V_control, the variable message generator 610 and the VM_E_temp generator 803 select an appropriate VM_E from VN_M. Meanwhile, the control signal V_control is transmitted to a VN_M_Updt unit.
The variable message generator is used to determine variable messages using equation (4). A current variable node extrinsic message VM_E implements a control function with the V_control signal, i.e., VM_E(i_Cur_CN). The obtained V_M is a message transmitted to a current check node i_Cur_CN from the variable node.
The VM_E currently used and controlled by the control signal V_control are selected to determine VM_E(0) using equation (4). The determined V_M is a message transmitted from the variable node to the check node 0.
A temporary variable node extrinsic message generator is used to generate a VM_E_temp message for the VN_M_Updt unit. During the process of generating the temporary variable node extrinsic message with a variable node extrinsic message, the VM_E_temp (i_Cur_CN) remains unchanged. Here, the input channel information Ch_M is used as the temporary channel information Ch_M_temp signal to be transmitted to the VN_M_Updt unit.
The variable VM_E_temp(0) remains unchanged and the Ch_M_temp signal is transmitted to the VN_M_Updt unit.
The check message calculation unit 612 is used for updating the check messages. Two implementation structures may be applied in the check message calculation unit 612. One implementation structure includes a serial structure and another implementation structure includes a parallel structure. In the parallel structure, the determination process does not start until all dc(=6) variable messages have reached the check message calculation unit 612 and any of the methods for updating the check message may be applied.
The variable node message updating (VN_M_Updt) unit performs an update of the variable node message vector. As shown in
The VN_M_Updt controller receives a V_control signal. From the VN_M_Updt controller, two control signals are output. One control signal 903 (a dv-bit vector (=3-bit vector)) is transmitted to a VM_E_Updt generation unit 902, and another control signal 904 (a one-bit signal) is transmitted to a hard decision calculation unit H_D_Calc. The hard decision calculation enable signal H_D_Calc_En is consistent with the VN_F (dv−1(=2)). If VN_F (dv−1)=1, the H_D_Calc_En is enabled.
In this case, the VN_F(2)s corresponding to six variable nodes all equal 0. Thus, H_D_Calc_En is disabled. If the index of a determined check node is 2 (and the indices of the corresponding variable nodes are 0, 8, 13, 20, 32 and 8270), the node mark VN_F (0)˜VN_F (2) of variable node message vector zero is 001. Accordingly, H_D_Calc_En is disabled.
Inputs of the VM_E_Updt generation unit 902 are check nodes (C_M) and VM_E temp signals, from which an updated variable node extrinsic message signal VM_E_Updt is output. The control signal is used to determine and select a correct VM_E_temp signal for current updating. That is, the update is implemented using equation (6) with the index i_Cur_CN and VM_E_Temp unchanged. More specifically, VM_E temp has been determined in the V_M_Gnrt unit. Therefore, the addition operation is used for the determination update. The VM_E_Updt generation unit writes VM_E_Updts back into the VN_M memory and transmits the VM_E_Updt (which is re-stated as H_D_Calc_VM_Es) to the H_D_Calc unit to determine a decision message. Meanwhile, the Ch_M temp (which is re-stated as H_D_Calc_Ch_M) is transmitted to the H_D_Calc unit.
In
D
—
M=H
—
D_Calc_Ch—M+(Σi {0, 1, . . . , dv−1}H—D_Calc—VM—E(i))/(dv−1) (7)
Under the control of the decoding start signal and the iterating start signal, in
In an exemplary implementation, performance simulations are performed to the LDPC decoder in order to achieve better performance. An average iteration number is reduced by approximately one half. A floating point and fixed point Bit Error Rate (BER) performance curves are respectively given in
Floating point performance curves of CN_C BP algorithm (circle dot) and conventional BP algorithm (square) are illustrated in
The average iterations numbers necessary for CN_C BP decoding and the conventional BP decoding under different signal-to-noise ratios are given in
While the invention has been shown and described with reference to certain exemplary embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims and their equivalents.
Number | Date | Country | Kind |
---|---|---|---|
200710307835.1 | Dec 2007 | CN | national |