presentasi ldpc
TRANSCRIPT
LDPC(LOW DENSITY PARITY CHECK CODES)
Oleh :Agung AgeyadiRidwan NMDianthy Marya
EVOLUSI ERROR CORRECTING CODES
ERROR CODING FAMILIES
BLOCK CODES
BHC BOSE-CHAUDHURI
& …
RSREED SOLOMON
BLOCK TURBO CODE
LDPCLOW DENSITY PARITY
CODE
CONVOLUTIONAL CODES
ODSOPTIMUM DISTANCE SPECTRUM
RCCRATE COMPATIBLE CONVOLUTIONAL
NESTED CONVOLUTIONAL CODES
RCPCRATE COMPATIBLE PUNCTURED
WHAT IS AN LDPC CODE ?
• Kode LDCP merupakan kode blok linier yang diperoleh dari sparse bipartite graph (Tanner graph).
• H (n-k, n) is the Parity Check Matrix and it is SPARSE.
• Variable Nodes ( in the left) correspond to the columns of H, there are n of them.
• Check Nodes( in the right) correspond to the rows, there are n-k in number.
• Valid code words are those vectors (c1,c2,…,cn) such that for all check nodes the sum of the neighboring positions among the message nodes is zero.
• Hence LDPC Code ~ H.cT = 0
Low Density Parity Check Codes
0521 ccc0641 ccc
06321 cccc
Consider the 6 bit long codeword in the form
which satisfies 3 parity check equations as shown below.
654321 ,,,,, ccccccc
We can now define 3x6 parity check matrix as,
100111
101001
010011
H
521 ccc
The density of ‘1’s in LDPC code parity check matrix is very low
Column weight - number of ‘1’s in a column
Number of times a symbol taking part in parity checks cw
Row weight - number of ‘1’s in a row Number of
Number of symbols taking part in a parity check rw
If the parity check matrix has uniform row weight and uniform column weight (same number of ‘1’ in a column and same number of ‘1’ in a row) we call that a regular parity check matrix.
and changes, therefore this is an irregular parity check matrix
rw cw
Low Density Parity Check Codes
100111
101001
010011
HThe parity check matrix defines a rate , code where
NKR KN ,MNK
NMH
Codeword is said to be valid if it satisfies the syndrome calculation
0. THcz
We can generate the codeword in by multiplying message with generator matrixm GGmc .
We can obtain the generator matrix from parity check matrix by, G H
1.) Arranging the parity check matrix in systematic form using row and column operations
2.) Rearranging the systematic parity check matrix
3.) We can verify our results as
110100
111010
101001
sysH KMMsys PIH
KTMK IPG
100111
010110
001011
G
0. THG
Low Density Parity Check Codes
100111
101001
010011
HTanner graph is a graphical representation of parity check matrix specifying parity check equations.
Tanner graph consists of N number of variable nodes and M number of check nodes
In Tanner graph mth check node is connected to nth variable node if and only if nth element in mth row in parity check matrix is a ‘1’.mnh H
1c 3c2c 4c 5c 6c
1z 3z2z
The marked path z2 → c1 → z3 → c6 → z2 is an example for short cycle of 4
The number of steps needed to return to the original position is known as the girth of the code
Low density parity check codes
R. G. Gallager, “Low-Density Parity Check Codes,” in 1962,
Simple parity-check code specified by a parity-check matrix or Tanner graph.
An ‘optimal’ LDPC can get within ~.005 db of channel capacity
Details: Encoding
• Encoder is derived from the the parity check matrix H• Row reduction of H into systematic form -- get G from this• If H is sparse then with high probability G will be dense• Not addressed here, but this continues to be a topic of great concern
rn
Details: Decoding
• the channel output can be either hardor soft information• Use the properties of the graph to decode• Decoding will be done in an iterative way: iterate between variable (bit) nodes and checks nodes
rn (r1,r2 ,...,rn )
rn
Low density parity check codes
rn (r1,r2 ,...,rn )
If p(x j 0 | rn ) p(x j 1| rn ) choose x j 0
If p(x j 1| rn ) p(x j 0 | rn ) choose x j 1
Consider the MAP rule discussed in the context of convolutional codes
Low density parity check codes
Transmit
cn (c1,c2 ,...,cn )
rn (r1,r2 ,...,rn )
Receive
rn
Bit flipping decoder
cn (c1,c2 ,...,cn )
rn (r1,r2 ,...,rn )
Receive
rn
0 0 0 ••• 0 0 1 0 ••• 1
example
• All 0’s codeword is sent0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit (variable)nodes
Checknodes
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Assume all 0’s codeword and a single error
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 1: Check node: Identify which parity checks are in error
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 1: Parity node check:Identify which parity checks are in error
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 1: Parity node check:Identify bits that are connected to those checks
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 2: Bit node check:For each bit node that is potentially in error -
identify number of unsatisfied checks for that bit node
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 2: Bit node check:For each bit node that is potentially in error -
identify number of unsatisfied checks for that bit node
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 2: Bit node check:For each bit node that is potentially in error -
identify number of unsatisfied checks for that bit node
0 2 0 1 1 1 0 0 0 0 1 0 1 1 0 0
Number of unsatisfied checks for this bit
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 2: Bit node check:For each bit node that is potentially in error -
identify number of unsatisfied checks for that bit node
0 2 0 1 1 1 0 0 0 0 1 0 1 1 0 0
Number of unsatisfied checks for this bit
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 2: Bit node check:For each bit node that is potentially in error -
identify number of unsatisfied checks for that bit node
0 2 0 1 1 1 0 0 0 0 1 0 1 1 0 0
Number of unsatisfied checks for all bits
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 2: Bit node check:Flip the bits with the most unsatisfied checks
0 2 0 1 1 1 0 0 0 0 1 0 1 1 0 0
Example 1: single error
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 2: Bit node check:Flip the bits with the most unsatisfied checks
0 2 0 1 1 1 0 0 0 0 1 0 1 1 0 0
Example 1: single error
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 2: Bit node check:Flip the bits with the most unsatisfied checks
0 2 0 1 1 1 0 0 0 0 1 0 1 1 0 0
Example 1: single error
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 3: parity node check:Check if all parities are satisfied
Example 1: single error
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 3: parity node check:Check if all parities are satisfied
Example 1: single error
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Step 3: parity node check:Check if all parities are satisfied
Done!
Example 2: Double error
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Iteration #1
Example 2: Double error
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Iteration #1
Example 2: Double error
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Iteration #1
2 0 1 1 0 1 1 1 0 2 1 1 0 1 1 2
Example 2: Double error
Iteration #1
2 0 1 1 0 1 1 1 0 2 1 1 0 1 1 2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
1 0 0 0 0 1 1 0 0 2 0 1 0 1 0 1
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 1 0 0 2 0 1 0 1 0 1
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Done
Thank You