40
LDPC (LOW DENSITY PARITY CHECK CODES) Oleh : Agung Ageyadi Ridwan NM Dianthy Marya

Presentasi LDPC

Embed Size (px)

Citation preview

Page 1: Presentasi LDPC

LDPC(LOW DENSITY PARITY CHECK CODES)

Oleh :Agung AgeyadiRidwan NMDianthy Marya

Page 2: Presentasi LDPC

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

Page 3: Presentasi LDPC

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

Page 4: Presentasi LDPC

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

Page 5: Presentasi LDPC

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

Page 6: Presentasi LDPC

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

Page 7: Presentasi LDPC

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

Page 8: Presentasi LDPC

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

Page 9: Presentasi LDPC

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

Page 10: Presentasi LDPC

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

Page 11: Presentasi LDPC

Low density parity check codes

Transmit

cn (c1,c2 ,...,cn )

rn (r1,r2 ,...,rn )

Receive

rn

Page 12: Presentasi LDPC

Bit flipping decoder

cn (c1,c2 ,...,cn )

rn (r1,r2 ,...,rn )

Receive

rn

0 0 0 ••• 0 0 1 0 ••• 1

Page 13: Presentasi LDPC

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

Page 14: Presentasi LDPC

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

Page 15: Presentasi LDPC

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

Page 16: Presentasi LDPC

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

Page 17: Presentasi LDPC

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

Page 18: Presentasi LDPC

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

Page 19: Presentasi LDPC

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

Page 20: Presentasi LDPC

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

Page 21: Presentasi LDPC

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

Page 22: Presentasi LDPC

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

Page 23: Presentasi LDPC

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

Page 24: Presentasi LDPC

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

Page 25: Presentasi LDPC

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

Page 26: Presentasi LDPC

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

Page 27: Presentasi LDPC

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

Page 28: Presentasi LDPC

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!

Page 29: Presentasi LDPC

Example 2: Double error

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

Iteration #1

Page 30: Presentasi LDPC

Example 2: Double error

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

Iteration #1

Page 31: Presentasi LDPC

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

Page 32: Presentasi LDPC

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

Page 33: Presentasi LDPC

Example 2: Double error

Iteration #2

0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

Page 34: Presentasi LDPC

Example 2: Double error

Iteration #2

0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

Page 35: Presentasi LDPC

Example 2: Double error

Iteration #2

0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

Page 36: Presentasi LDPC

Example 2: Double error

Iteration #2

0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

Page 37: Presentasi LDPC

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

Page 38: Presentasi LDPC

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

Page 39: Presentasi LDPC

Example 2: Double error

Iteration #2

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Done

Page 40: Presentasi LDPC

Thank You