seminar report on low density parity check codes
DESCRIPTION
Notes regarding LDPC codesTRANSCRIPT
Low-density parity-check (LDPC) codes are a class of linear block LDPC codes. Their main advantage is that they provide a performance which is very close to the capacity for a lot of different channels and linear time complex algorithms for decoding. Furthermore are they suited for implementations that make heavy use of parallelism.They were first introduced by Robert Gallager in his PhD thesis in 1960. But due to the computational effort in implementing coder and encoder for such codes and the introduction of Reed-Solomon codes. They were mostly ignored until about ten years ago.
Representations for LDPC codes
Basically there are two different possibilities to represent LDPC codes. Like all linear block codes they can be described via matrices. The second possibility is a graphical representation.
Matrix Representation
Let’s look at an example for a low-density parity-check matrix first. The matrix defined in equation (1) is a parity check matrix with dimension n × m for a (8, 4) code.We can now define two numbers describing this matrix. wr for the number of 1’s in each row and wc for the columns. For a matrix to be called low-density the two conditions wc <<n and wr << m must satisfied. In order to do this, the parity check matrix should usually be very large, so the example matrix can’t be really called low-density.
Graphical Representation:
Tanner introduced an effective graphical representation for LDPC codes. Not only provide these graphs a complete representation of the code, they also help to describe the decoding algorithm.Tanner graphs are bipartite graphs. That means that the nodes of the graph are separated into two distinctive sets and edges are only connecting nodes of two different types. The two types of nodes in a Tanner graph are called variable nodes (v-nodes) and check nodes (c-nodes). The above is an example for such a Tanner graph and represents the same code as the matrix in 1. The creation of such a graph is rather straight forward. It consists of m check nodes (the number of parity bits) and n variable nodes (the number of bits in a codeword). Check node fi is connected to variable node cj if the element hij of H is a 1.
Regular and irregular LDPC codes:
f0 f1 f2 f3
c0 c1 c2 c3 c4 c5 c6 c7
fj
A LDPC code is called regular if wc is constant for every column and wr = wc · (n/m) is also constant for every row. The example matrix from equation (1) is regular with wc = 2 and wr = 4. It’s also possible to see the regularity of this code while looking at the graphical representation. There is the same number of incoming edges for every v-node and also for all the c-nodes. If H is low density but the numbers of 1’s in each row or column aren’t constant the code is called a irregular LDPC code.
Construction of LDPC codes:
Several different algorithms exist to construct suitable LDPC codes. Gallager himself introduced one. Furthermore MacKay proposed one to semi-randomly generate sparse parity check matrices. This is quite interesting since it indicates that constructing good performing LDPC codes is not a hard problem. In fact, completely randomly chosen codes are good with a high probability. The problem that will arise,is that the encoding complexity of such codes is usually rather high.Before describing decoding algorithms, the feature of LDPC codes to perform near the Shannon limit1 of a channel exists only for large block lengths. For example there have been simulations that perform within 0.04 dB of the Shannon limit at a bit error rate of 10−6 with an block length of 107. An interesting fact is that those high performance codes are irregular.The large block length results also in large parity-check and generator matrices. The complexity of multiplying a codeword with a matrix depends on the amount of 1’s in the matrix. If we put the sparse matrix H in the form [PT I] via Gaussian elimination the generator matrix G can be calculated as G = [I P]. The sub-matrix P is generally not sparse so that the encoding complexity will be quite high.Since the complexity grows in O(n2) even sparse matrices don’t result in a good performance if the block length gets very high. So iterative decoding (and encoding) algorithms are used. Those algorithms perform local calculations and pass those local results via messages.This step is typically repeated several times. The term ”local calculations” already indicates that a divide and conquere strategy, which separates a complex problem into manage-
able sub-problems, is realized. A sparse parity check matrix now helps this algorithms in several ways. First it helps to keep both the local calculations simple and also reduces the complexity of combining the sub-problems by reducing the number of needed messages to exchange all the information. Furthermore it was observed that iterative decoding algorithms of sparse codes perform very close to the optimal maximum likelihood decoder.
Encoding:
Encoding of LDPC codes uses the property HxT=0 where x is the codeword and H is the sparse parity check matrix A straightforward encoding scheme requires three steps: a) Gaussian elimination to transform the H matrix into a lower triangular form b) split x into information bits and parity bits, i.e., x = (s; p1; p2) where s is vector of information bits, p1, p2 are vectors of parity bits c) Solve the equation HxT=0 using forward substitution methodSince afterwards the H matrix will no longer be sparse, it takes
O (n2), or more precisely, n2( r (1−r )2 ) XOR operations for the actual
encoding.
Richardson Urbanke LDPC Encoding Model
RU method for constructing efficient encoders for LDPC codes
Assume we are given an m x n parity-check matrix H over F. By definition, the associated code consists of the set of n-tuples x over F such that H xT=0
Through Gaussian elimination bring the H matrix to lower triangular form as shown below
Split the vector x into systematic part s, 𝑠∈ F(n−m)and the parity part p, 𝑝 ∈ Fm such that x=(s, p)Construct a systematic encoder as follows: i) Fill s with the (n - m) desired information symbols. ii) Determine the m parity-check symbols using back-substitution More precisely, for l ∈ [m]
∑j=1
(n−m)
H l , j sj+∑j=1
(l−1)
Hl ,n+ j−1 pj
We bring the H matrix to the form
A B TC D E
where A is of size (m - g) x (n - m), B is (m - g) x g, C is g x (n - m), D is g x g and finally E is g x (m x g )Multiplying the above matrix from left by
I 0
−ET−1 I
we get
A B T
−ET−1 A+C −ET−1B+D 0
Let x = (s; p1; p2) where s denotes the systematic part, p1 and p2 combined denote the parity part, p1 has length g, and
p2 has length (m - g).
So according to the equation HxT =0 , we have
𝐴sT+𝐵 p1T+𝑇p2T =0
and
(−𝐸T−1 𝐴)+𝐶sT+ (−𝐸 T−1 𝐵+𝐷) p1T=0
Now if ∅= (−𝐸 T−1 𝐵+𝐷) and for the moment assume ∅ is non-singular, then
p1T= - ∅−1 (𝐸T−1𝐴+𝐶) sT
And once the - ∅−1 (𝐸T−1𝐴+𝐶) sTmatrix has been computed, the determination of p1 can be done.
In a similar manner, from the first equation, p2 can be determined as
p2T=−T−1 (AsT+𝐵p1T)
Computation of p1T= - ∅−1 (𝐸T−1𝐴+𝐶) sT
Computation of p2T= - ∅−1 (𝐸T−1B+D) sT
Label and Decide Algorithm
Identify information bits and parity bits through a labelling process on the Tanner graph.
Assaign numerical values to the bit nodes labelled as information bits and also calculate the missing values of parity bits sequentially.
Algorithm:
flag <- 0
Get the values of all the bits labelled as information bits
while there are parity bits undetermined do
if there exists one undetermined parity bit xβ whose value can be computed from the available information bits and already determined parity bits then
Compute the value of x.
else
flag <- 1, exit the while loop
end if
end while
if flag=1 then
encoding is unsuccessful
else
output the encoded codeword
end if
Steps for encoding:
Step 1: Determine the values of all the information bits x14,
x15, x16, x10, x12, x13, x5, x7, and x8(marked as in the tanner graph above).
Step 2: Compute the parity bit (marked as in the above graph) x11 from the parity check equation
C7 : x11 = x14 ⊕ x15 ⊕ x16;
Step 3: Compute the parity bit x6 from the parity check equation
C5 : x6 = x10 ⊕ x15 ⊕ x11 ⊕ x13;
Compute the parity bit x9 from the parity check equation
C6 : x9 = x11 ⊕ x12 ⊕ x16 ⊕ x13;
Step 4: Compute the parity bits x1, x2, x3, and x4 in the first tier by the parity check equations C1, C2, C3, and C4 respectively.
C1= x1 = x10 ⊕ x5 ⊕ x7,
C2 =x2 = x5 ⊕ x6 ⊕ x12 ⊕ x9,
C3= x3 =x5 ⊕ x7 ⊕ x11 ⊕ x14 ⊕ x8,
C4 =x4 = x6 ⊕ x8 ⊕ x10 ⊕ x9 ⊕ x13.
Decoding:
Hard Decision Decoding
All v-nodes ci send a message to their c-nodes fj ‘s (the information which the v-node ci has , is the corresponding received i th bit of c ,yi ).
Every check nodes fj calculate a response to every connected variable node. The response message contains the bit that fj believes to be the correct one for this v-node ci assuming that the other v-nodes connected to fj are correct.
(This might also be the point at which the decoding algorithm terminates (if all the check equations are fulfilled)).
The v-nodes receive the messages from the check nodes and use this additional information to decide if their originally received bit is OK.
Go to step 2.
overview over messages received and sent by the c-nodes in step 2 of the message passing algorithm
Step 3 of the described decoding algorithm. The v-nodesuse the answer messages from the c-nodes to perform a majority vote on
the bit value
Soft Decision Decoding
Based on the concept of belief propagation.(yields in a better decoding performance )
1. All variable nodes send their qij messages. Since no other information is available at this step, qij(1) = Pi and qij(0) =1 − Pi.
2.The check nodes calculate their response messages rji
rji(0)= 1/2 + 1/2 ∏_(𝑖′∈𝑉𝑗∖𝑖)(1−2qi’j (1))
rji(1)= 1- rji(0)
The variable nodes update their response messages to the check nodes. This is done according to the following equations
"qij (0)= Kij(1−Pi)" ∏j ∈ci\j rj’i(0)
qij (1)=Kij(Pi)" ∏j ∈ci\j rj’i(1)
At this point the v-nodes also update their current estimation ˄ci of their variable ci. This is done by calculating the probabilities for 0 and 1 and voting for the bigger one. The used equations
Qi(0) = Ki (1−Pi) ∏j ∈ci rji(0)
Qi(1) = Ki Pi ∏j ∈ci rji(1)
are quite similar to the ones to compute qij (b) but now the information from every c-node is used.
^ci ={ 1 if Qi(1) >Qi(0)
0 𝑠𝑒If the current estimated codeword fulfils now the parity check equations the algorithm terminates. Otherwise termination is ensured through a maximum number of iterations.
4. Go to step 2.
Applications:
LDPC codes are used as error correcting code in the new DVB-S2 standard for the satellite transmission of digital television
LDPC codes used as the FEC scheme for the ITU-T G.hn standard
G.hn chose LDPC over turbo codes because of its lower decoding complexity (especially when operating at data rates close to 1 Gbit/s) and because the proposed turbo codes exhibited a significant error floor at the desired range of operation
LDPC is also used for 10GBase-T Ethernet, which sends data at 10 gigabits per second over twisted-pair cables.
LDPC codes are also used as a part of the Wi-Fi 802.11 standard as an optional part of 802.11n, in the High Throughput (HT) PHY specification
References:
R. G. Gallager, Low-Density Parity Check Codes, MIT Press, Cambridge, MA, 1963.
D. J. C. Mackay, “Good error-correcting codes based on very sparse matrices,” IEEE Trans. Inform. Theory, vol. 45, no. 2
C. E. Shannon, ‘A mathematical theory of communication’," Bell System Technical Journal,vol. 27
L. Bazzi, T. Richardson, and R. Urbanke, \Exact thresholds and optimal codes for the binary symmetric channel and Gallager's decoding algorithm A," IEEE Trans. Inform. Theory, vol. 47, 2001.
T. Richardson and R. Urbanke, \Ecient encoding of low-density parity-check codes," IEEE Trans. Inform. Theory, vol. 47, 2001.