+ All Categories
Home > Documents > Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d)...

Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d)...

Date post: 17-May-2020
Category:
Upload: others
View: 27 times
Download: 0 times
Share this document with a friend
106
Low-Density Parity-Check Codes Part I - Introduction and Overview William Ryan, Associate Professor Electrical and Computer Engineering Department The University of Arizona Box 210104 Tucson, AZ 85721 [email protected] June 2005
Transcript
Page 1: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Low-Density Parity-Check Codes

Part I - Introduction and Overview

William Ryan, Associate ProfessorElectrical and Computer Engineering Department

The University of ArizonaBox 210104

Tucson, AZ [email protected]

June 2005

Page 2: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Block Code Fundamentals

we will consider only (n, k) linear block codes over the binary field FF2 = ({0, 1}, +, )

F2n = the n-dimensional vector space over FF2

the elements of F2n are the 2n n-tuples v = [v0, v1, …, vn-1] which we

consider to be row vectors

Definition. An (n, k) linear block code C with data word length k and codeword length n is a k-dimensional subspace of F2

n

since C is a subspace of dimension k, ∃ k linearly independent vectors which span C110 ,,, −kggg L

Page 3: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

the correspondence (mapping) is thus naturally written as

in matrix form, this is where

is the so-called generator matrix for C

clearly, there are 2k data words = [u0, u1, …, uk-1] and 2k

corresponding codewords = [c0, c1, …, cn-1] in the code C .

Block Code Fundamentals (cont’d)

cu →

1100 −−++= kk guguc L

Guc =

nkkg

g

g

G

=− ⎥

⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢

−−

−−

−−

=

1

1

0

M

cu

Page 4: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Block Code Fundamentals (cont’d)

being linearly independentG has rank kG may be row reduced and put in the form

(after possible column swapping which permutes the order of the bits in the code words)

• the null space C⊥ of the subspace C has dimension n-k and is spanned by n-k linearly independent vectors

• since each C⊥, we must have for any C that

{ }ig

⇒⇒

[ ]PIG M=

110 ,,, −−knhhh L

∈ih ∈c

ihc Ti ∀= ,0

Page 5: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Block Code Fundamentals (cont’d)

further, if is in F2n, but is not in C, then

• we may put this in a more compact matrix form by defining a so-called parity-check matrix H,

so that

if and only if C.

ihx Ti somefor ,0≠xx

,

)(1

10

xnknknh

hh

H

−− ⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

−−

−−

−−

∆ M

0=THc

∈c

Page 6: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Block Code Fundamentals (cont’d)

suppose has w 1’s (i.e., the Hamming weight of , wH( ) = w) and the locations of those 1’s are L1, L2, …, Lw

• then the computation effectively adds w rows of HT, rows L1, L2, …, Lw, to obtain the vector

• one important consequence of this fact is that the minimum distance dmin

(= minimum weight wmin) of C is exactly the minimum number of rows of HT which can be added together to obtain

c cc

0=THc0

0

Page 7: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Block Code Fundamentals (cont’d)

Example. (7,4) Hamming Code

we can see that no two rows sum to , but row 0 + row 1 + row 6 =

dmin = 3

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

=

100010001

110101011111

KKKTH

0 0

Page 8: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Low-Density Parity-Check Codes

• note that the parity-check matrix H is so called because it performs m = n-k separate parity checks on a received word

Example. With HT as given above, the n-k = 3 parity checks implied by

are

Definition. A low-density parity-check (LDPC) code is a linear block code for which the parity-check matrix H has a low density of 1’s

ecy +=

0?=THy

0?0?0?

632053104210

yyyyyyyyyyyy

+++++++++

Page 9: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Low-Density Parity-Check Codes (cont’d)

Definition. A regular (n, k) LDPC code is a linear block code whose parity-check matrix H contains exactly Wc 1's per column and exactly Wr = Wc(n/m) 1’s per row, where Wc << m.

Remarks• note multiplying both sides of Wc << m by n/m implies Wr << n.

•the code rate r = k/n can be computed from

Wc = 3 is a necessity for good codes (Gallager)

• if H is low density, but the number of 1’s per column or row is not constant, the code is an irregular LDPC code

LDPC codes were invented by Robert Gallager of MIT in his PhD dissertation (1960). They received virtually no attention from the coding community until the mid-1990’s.

rc

rcr

WW

WWW

r −=−

= 1

Page 10: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Representation of Linear Block Codes via Tanner Graphs

• one of the very few researchers who studied LDPC codes prior to the recent resurgence is Michael Tanner of UC Santa Cruz

• Tanner considered LDPC codes (and a generalization) and showed how they may be represented effectively by a so-called bipartite graph, now call a Tanner graph

Definition. A bipartite graph is a graph (nodes or vertices connected by undirected edges) whose nodes may be separated into two classes, and where edges may only connect two nodes not residing in the same class

Page 11: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Tanner Graphs (cont’d)

• the two classes of nodes in a Tanner graph are the variable nodes (or bitnodes) and the check nodes (or function nodes)

• the Tanner graph of a code is drawn according to the following rule:

check node j is connected to variable node iwhenever element hji in H is a 1

• one may deduce from this that there are m = n-k check nodes and nvariable nodes

• further, the m rows of H specify the m c-node connections, and the ncolumns of H specify the n v-node connections

Page 12: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Tanner Graphs (cont’d)

Example. (10, 5) block code with Wc = 2 and Wr = Wc(n/m) =4.

• observe that nodes c0, c1, c2, and c3 are connected to node f0 in accordance with the fact that in the first row of H, h00 = h01 = h02 = h03 = 1 (all others equal zero)

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

11010010001010100100011001001000011100010000001111

H

variablenodes

c2 c3c0c1 c4 c6c5 c8c7 c9

f0 f1 f2 f3 f4checknodes

Page 13: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Tanner Graphs (cont’d)

• (for convenience, the first row and first col of H are assigned an index of 0)

• observe an analogous situation for f1, f2, f 3, and f4.

• thus, as follows from the fact that , the bit values connected to the same check node must sum to zero

• note that the Tanner graph in this example is regular: each bit node is of degree 2 (has 2 edge connections and each check node is of degree 4)

• this is in accordance with the fact that Wc = 2 and Wr = 4

• we also see from this why Wr = Wc(n/m) for regular LDPC codes:

(# v-nodes) x (v-node degree) = nWc

must equal(#c-nodes) x (c-node degree) = mWr

0=THc

Page 14: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Tanner Graphs (cont’d)

Definition. A cycle of length l in a Tanner graph is a path comprising l edges which closes back on itself

• the Tanner graph in the above example possesses a length-6 cycle as made evident by the 6 bold edges in the figure

Definition. The girth of a Tanner graph is the minimum cycle length of the graph

• the shortest possible cycle in a bipartite graph is clearly a length-4 cycle

• length-4 cycles manifest themselves in the H matrix as four 1’s that lie on the corners of a submatrix of H:

r s

a b ⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

L

L

L

11

11

s

rH

a b

Page 15: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

• length-6 cycles are not quite as easily found in an H matrix:

• we are interested in cycles, particularly short cycles, because they degrade the iterative decoding algorithm for LDPC codes as will be made evident below

Tanner Graphs (cont’d)

r s t

a b c⎥⎥⎥

⎢⎢⎢

⎡=

1111

11

tsr

H

a b c

Page 16: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes

• clearly, the most obvious path to the construction of an LDPC code is via the construction of a low-density parity-check matrix with prescribed properties

• a number of design techniques exist in the literature, and we list a few:

• Gallager codes (semi-random construction)

• MacKay codes (semi-random construction)

• irregular and constrained-irregular LDPC codes (Richardson and Urbanke, Jin and McEliece, Yang and Ryan, Jones and Wesel, ...)

• finite geometry-based LDPC codes (Kou, Lin, Fossorier)

• combinatorial LDPC codes (Vasic et al.)

• LDPC codes based on array codes (Fan)

Page 17: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

Gallager CodesExample.

captured from Gallager’s dissertation

j = Wc and k = Wr

Page 18: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)Gallager Codes (cont’d)

• The H matrix for a Gallager code has the general form:

where H1 is p x p•Wr and has row weight Wr , and the submatrices Hi

are column-permuted versions of H1.

• Note H has column weight Wc and row weight Wr .

• The permutations must be chosen s. t. length-4 (and higher, if possible) cycles are avoided and the minimum distance of the code is large.

• Codes designs are often performed via computer search. Also see the 2nd edition of Lin and Costello (Prentice-Hall, 2004).

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

=

cWH

HH

H ...21

Page 19: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)Tanner Codes

• each bit node is associated with a code bit; each “check node” is associated with a subcode whose length is equal to the degree of the node.

degree n1

subcode 1 (n1, k1)checked by matrix

1H

Bit nodes:

Check nodes:

subcode 2 (n2, k2)checked by matrix

subcode m (nm, km)checked by matrix

2H mH

interleaver

degree n2 degree nm

Page 20: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)Tanner Codes (cont’d)

Example

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

111.........

1......11111

1...11......

1...111...11

Connections of Bit nodes and subcodes

Bit nodes 1 to n1

Subcode nodes 1 to m

⎥⎥⎥

⎢⎢⎢

101110011010101110001

H matrix of Hamming (7,4) code

Page 21: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)MacKay Codes

following MacKay (1999), we list ways to semi-randomly generate sparse matrices H in order of increasing algorithm complexity (but not necessarily improved performance)

1. H generated by starting from an all-zero matrix and randomly inverting Wc not necessarily distinct bits in each column (the resulting LDPC code will be irregular)

2. H generated by randomly creating weight-Wc columns

3. H generated with weight-Wc columns and (as near as possible) uniform row weight

4. H generated with weight-Wc columns, weight-Wr rows, and no two columns having overlap greater than one

5. H generated as in (4), plus short cycles are avoided

6. H generated as in (5), plus H = [H1 H2] is constrained so that H2 is invertible (or at least H is full rank)

see http://www.inference.phy.cam.ac.uk/mackay/ for MacKay’s large library of codes

Page 22: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)MacKay Codes (cont’d)

• frequently an H matrix is obtained that is not full rank

• this is generally not a problem which can be seen as follows:

• once H is constructed, we attempt to put it in the form H = [ PT I ]mxn

via Gauss-Jordan elimination (and possible column swapping) so that we may encode via G = [ I P ]

• if H is not full rank, Gauss-Jordan elimination will result in H of the form

where is and < m

• in this latter case, we instead use the matrix which is and corresponds to a higher code rate, , than the original design rate, .

⎥⎥⎦

⎢⎢⎣

⎡=

00

~ IPHT

TP~ )(x mnm ′−′ m′

]~[~ IPH T M= nm x′nmn /)( ′−

nmn /)( −

Page 23: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

Repeat-Accumulate (RA) Codes• the codes are “turbo-like” and are simple to design and understand (albeit, they are appropriate only for low rates)

• for q = 3,

where and both A and Π are 3k x 3k.

repeat block

q timesΠ D⊕1

1k bitsqk bits

permuterepeat accumulate

qk bits

rate = 1/q

[ ] AIIIG kkk ⋅Π⋅=

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1

11111

MO

L

A

Page 24: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

RA Codes (cont’d)• for q = 3,

(others are possible)

• note since A , A-1 so that

⎥⎥⎥

⎢⎢⎢

⎡⋅Π⋅= −−

kkk

kT

III

IAH 11

D⊕⇔

11 D⊕⇔ 1

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=−

11

111

11

1

O

OA

Page 25: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

RA Codes (cont’d)• an alternative graph to the Tanner graph corresponding to H above is

Π•

k-bit data word 3k-bit codeword

Page 26: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

Irregular Repeat-Accumulate (IRA) Codes• graphical representation:

k-bit data word p-bit parity wordΠ•

r1

r2

rk

a

a

a

a

a

a

Page 27: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

IRA Codes (cont’d)• non-systematic version:

codeword is parity word and rate is k/p, p > k

• systematic version:codeword is data word concatenated with parity word, rate is k/(k+p)

D⊕11u w

u

G Π

k x p1 x p

IRA encoder

Page 28: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

Extended Irregular Repeat Accumulate (eIRA) Codes• H is matrix is given below, where the column weight of H1 is > 2• note encoding may be performed directly from the H matrix by

recursively solving for the parity bits

• This matrix holds for both eIRA codes and IRA codes. What is different is the size of H1

T. eIRA: k x (n-k); IRA: k x p, p > k since it is a G matrix

⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢

=

111

...111

111

1HH

A-T

Page 29: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

eIRA Codes (cont’d)• can easily show that G = [ I H1

TA ], from which encoder below follows• always systematic• appropriate for high code rates

D⊕1

1u p

u

M Π

k x (n-k)1 x (n-k)

eIRAencoder

M Π = H1T

Page 30: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)Array Codes

• The parity-check matrix structure for the class of array codes is

simplified

where I is the identity matrix and is a p-by-p left- (or right-) cyclic shift of the identity matrix I by one position (p a prime integer), and =I , and

.

Example, p = 5:

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

−×−×−−

−××

)1()1(2)1(1

)1(2222

12

...

kjjj

k

k

I

II

IIII

H

ααα

αααααα

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

−−−−

−−

=

)1)(1(2)1(10

)1(24201210

0...000

kjjj

kk

H

α0α

matrix zero1 =−α

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

11

11

1

α

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

11

11

1

αor

Page 31: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

Array Codes (cont’d)• Add the j x j “dual diagonal” submatrix Hp corresponding to the parity check bits• Delete the first column of the above H matrix to remove length-4 cycles• We obtain the new H matrix:

• the code rate is k/(j+k), the right j x k submatrix Hi corresponds to the information bits • note that we may now encode using the H matrix by solving for the parity bits recursively: efficient encoding (more on this below)

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

−−−−−−

−−−

= .

)1(.....)2(2101......1.........00....1242.....

21...0010......001...100

kjjj

kk

H

Page 32: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

Codes Based on Finite Geometries and Combinatorics• The mathematics surrounding these codes is beyond the scope of this short course.

• Please see:• Shu Lin and Daniel Costello, Error Control Coding, Prentice-Hall, 2004.• The papers by Shu Lin and his colleagues.• The papers by Bane Vasic and his colleagues.• The papers by Steve Weller and his colleagues.

Page 33: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Construction of LDPC Codes (cont’d)

Codes Designed Using Density Evolution and Related Techniques• The mathematics surrounding these codes is beyond the scope of this short course.

• Please see:• the papers by Richardson and Urbanke (IEEE Trans. Inf. Thy, Feb. 2001)• the papers by ten Brink• the papers by Wesel

Page 34: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Encoding

• as discussed above, once H is generated, it may be put in the form

from which the systematic form of the generator matrix is obtained:

• encoding is performed via

although this is more complex than it appears for capacity-approaching LDPC codes (n large)

]~[~ IPH T M=

[ ]PIG M=

[ ] ,PuuGuc M==

Page 35: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Encoding (cont’d)

Example. Consider a (10000, 5000) linear block code. Then is 5000 x 10000 and P is 5000 x 5000. We may assume that the density of ones in P is ~ 0.5.

there are ~ 0.5(5000)2 = 12.5 x 106 ones in P

~ 12.5 x 106 addition (XOR) operations are required to encode one codeword

[ ]PIG M=

Page 36: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Encoding (cont’d)

• Richard and Urbanke (2001) have proposed a lower complexity (linear in the code length) encoding technique based on the H matrix (not to be discussed here)

• an alternative approach to simplified encoding is to design the codes via algebraic, geometric, or combinatoric methods

• such “structured” codes are often cyclic or quasi-cyclic and lend themselves to simple encoders based on shift-register circuits

• since they are simultaneously LDPC codes, the same decoding algorithms apply

• often these structured codes lack freedom in the choice of code rate and length

• an alternative to structured LDPC codes are the constrained irregular codes of Jin and McEliece and Yang and Ryan (also called irregular repeat-accumulate (IRA) and extended IRA codes) -- more on this later

Page 37: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results

• we present here selected performance curves from the literature to demonstrate the efficacy of LDPC codes

• the papers from which these plots were taken are listed in the reference section at the end of the note set

• we indicate the paper each plot is taken from to ensure proper credit is given (references are listed at the end of Part 2).

Page 38: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)

MacKay (March 1999, Trans IT)

• MacKay (and others) re-invented LDPC codes in the late 1990’s

• here are selected figures from his paper (see his paper for code construction details; his codes are regular or nearly regular)

Page 39: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)

MacKay (cont’d)

Page 40: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)

MacKay (cont’d)

Page 41: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)

Irregular LDPC Codes

• our discussions above favored regular LDPC codes for their simplicity, although we gave examples of irregular LDPC codes

• recall an LDPC code is irregular if the number of 1’s per column of H and/or the number of 1’s per row of H varies

• in terms of the Tanner graph, this means that the v-node degree and/or the c-node degree is allowed to vary (the degree of a node is the number of edges connected to it)

• a number of researchers have examined the optimal degree distribution among nodes:

- MacKay, Trans. Comm., October 1999- Luby, et al., Trans. IT, February 2001- Richardson, et al., Trans. IT, February 2001- Chung, et al., Comm. Letters, February 2001

• the results have been spectacular, with performance surpassing the best turbo codes

Page 42: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)

Richardson et al. Irregular Codes• the plots below are for a (3, 6) – regular LDPC code, an optimized irregular LDPC code, and a turbo code

• the code parameters are ½ (106, 106/2) in all cases

Page 43: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)

Richardson et al. Irregular Codes (cont’d)• plot below: turbo codes (dashed) and irregular LDPC codes (solid); for block lengths of n=103, 104, 105, and 106; all rates are ½

Page 44: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)

Chung et al. Irregular LDPC Code

• the plot below is of two separate ½ (107, 107/2) irregular LDPC codes

Page 45: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)Kou et al. LDPC Codes (IEEE Trans. IT, Nov 2001)

• LDPC code based on Euclidean geometries (EG): (1023, 781)• LDPC code based on Projective geometries (PG):• Gallager code: (1057, 813)

Page 46: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)Kou et al. (cont’d)

Page 47: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)Kou et al. (cont’d)

Page 48: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)

Extended IRA Code Results (Yang, Ryan, and Li - 2004)

2.4 2.6 2.8 3 3.2 3.4 3.6 3.8 410

−6

10−5

10−4

10−3

10−2

10−1

Performance of LDPC Codes (Rate=0.82) on AWGN Channel

Eb/N

0 (dB)

Pb (

Pro

babi

lity

of B

it E

rror

)

Pb (Constrained Irregular)

Pb (Mackay)

Pb (Finite Geometry)

Pb (R&U Irregular)

Maximum 100 iterations

Page 49: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Selected Results (cont’d)

Extended IRA Code Results (cont’d)

2 2.5 3 3.5 4 4.510

−9

10−8

10−7

10−6

10−5

10−4

10−3

10−2

10−1

100

Constrained LDPC Codes (4161,3430) on AWGN Channel

Eb/N

0 (dB)

Pe (

Pro

babi

lity

of E

rror

)

Pb ( w

c = 3 )

Pcw

( wc = 3 )

Pb ( w

c = 4 )

Pcw

( wc = 4 )

Pb ( w

c = 5 )

Pcw

( wc = 5 )

Page 50: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

Low-Density Parity-Check Codes

Part II - The Iterative Decoder

William Ryan, Associate Professor

Electrical and Computer Engineering Department The University of Arizona

Box 210104

Tucson, AZ 85721

[email protected]

June 2005

Page 51: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

1

Decoding Overview • in addition to presenting LDPC codes in his seminal work in 1960, Gallager

also provided a decoding algorithm that is effectively optimal

• since that time, other researchers have independently discovered that

algorithm and related algorithms, albeit sometimes for different applications

• the algorithm iteratively computes the distributions of variables in graph-based

models and comes under different names, depending on the context:

- sum-product algorithm

- min-sum algorithm (approximation)

- forward-backward algorithm, BCJR algorithm (trellis-based graphical

models)

- belief-propagation algorithm, message-passing algorithm (machine

learning, AI, Bayesian networks)

Page 52: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

2

• the iterative decoding algorithm for turbo codes has been shown by McEliece

(1998) and others to be a specific instance of the sum-product/belief-

propagation algorithm

• the “sum-product," "belief propagation," and "message passing" all seem to

be commonly used for the algorithm applied to the decoding of LDPC codes

Page 53: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

3

Example: Distributed Soldier Counting

A. Soldiers in a line.

• Counting rule: Each soldier receives a number from his right (left), adds one

for himself, and passes the sum to his left (right).

• Total number of soldiers = (incoming number) + (outgoing number)

ryan
Pencil
ryan
Pencil
ryan
Pencil
ryan
Pencil
ryan
Pencil
ryan
Pencil
ryan
Pencil
Page 54: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

4

B. Soldiers in a Y Formation

• Counting rule: The “message” that soldier X passes to soldier Y is the sum

of all incoming messages, plus one for soldier X, minus soldier Y’s message

ninformatio intrinsic n informatio extrinsic\)(

)(

+=

+=

+−=

∈→

∈→→→

XYXnZ

XZ

XXnZ

XYXZYX

II

IIII

• Total number of soldiers = (message soldier X passes to soldier Y) +

(message soldier Y passes to soldier X)

Page 55: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

5

C. Formation Contains a Cycle

• The situation is untenable: No viable counting strategy exists; there is also a

positive feedback effect within the cycle and the count tends to infinity.

• Conclusion: message-passing decoding cannot be optimal when the codes

graph contains a cycle

ryan
Pencil
ryan
Pencil
Page 56: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

6 6

The Turbo Principle

Page 57: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

7

The Turbo Principle Applied to LDPC Decoding

• the concept of extrinsic information is helpful in the understanding of the sum-

product/message-passing algorithm (the messages to be passed are extrinsic

information)

• we envision Tanner graph edges as information-flow pathways to be followed

in the iterative computation of various probabilistic quantities

• this is similar to (a generalization of) the use of trellis branches as paths in the

Viterbi algorithm implementation of maximum-likelihood sequence

detection/decoding

Page 58: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

8

• Consider the subgraph

• The arrows indicate the situation for 20 fx →

• All of the information that x0 possesses is sent to node f2, except for the

information that node f2 already possesses (extrinsic information)

• In one half-iteration of the decoding algorithm, such computations, ,

are made for all v-node/c-node pairs.

ji fx →

y0 (channel sample)

f0 f1 f2

x0

the information passed concerns

• Pr(x0 = +1 | y) or

• Pr(x0 = +1 | y) / Pr(x0 = -1 | y) or

• log[Pr(x0 = +1 | y) / Pr(x0 = -1 | y)]

Page 59: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

9

• In the other half-iteration, messages are passed in the opposite direction: from

c-nodes to v-nod s, . ij xf →

• Consider the sub raph corresponding to the other half-iteration

• The arrows indica

• node f0 passes a

nodes xi, excludin

• only information c

x x1 x x4

f0

the information passed concerns

Pr(check equation f0 is satisfied)

e

g

te the situation for f0 → x4

ll (extrinsic) information it has available to it to each of the bit

g the information the receiving node already possesses.

onsistent with c0 + c1 + c2 + c4 = 0 is sent

0 2

Page 60: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

10

Probability-Domain Decoder

• much like optimal (MAP) symbol-by-symbol decoding of trellis codes, we are

interested in computing the a posteriori probability (APP) that a given bit in c

equals one, given the received word y and the fact that c must satisfy some

constraints

• without loss of generality, let us focus on the decoding of bit ci ; thus we are

interested in computing

),1(Pr ii Syc =

where Si is the event that the bits in c satisfy the Wc parity-check equations

involving ci

Page 61: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

11

• later we will extend this to the more numerically stable computation of the log-

APP ratio, also call the log-likelihood ratio (LLR):

⎟⎟⎠

⎞⎜⎜⎝

⎛=

=

),1(Pr),0(Pr

logii

iiSycSyc

Lemma 1 (Gallager)

• consider a sequence of m independent binary digits ),,( 1 maaa K= in which

Pr(ak=1) = pk.

• Then the probability that a contains an even number of 1’s is

)21(21

21

1k

m

kp−∏+

= (*)

• The probability that a contains an odd number of 1’s is one minus this value:

)21(21

21

1k

m

kp−∏−

=

proof: Induction on m.

Page 62: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

12

Notation

• Vj = {v-nodes connected to c-node j}

• Vj \ i = {v-nodes connected to c-node j} \ {v-node i}

• Ci = {c-nodes connected to v-node i}

• Ci \ j = {c-nodes connected to v-node i} \ {c-node j}

• Pi = )/1Pr( ii yc =

Page 63: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

13

Notation (cont'd)

• = message (extrinsic information) to be passed from )(bqij

node xi to node fj regarding the probability that

}1,0{, εbbci =

= probability that bci = given extrinsic information from all check

nodes, except node fj, and channel sample yi

yi

qij(b)

fj

xi

rji(b)

Page 64: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

14

Notation (cont'd)

• rji(b) = message to be passed from node fj to node xi

= the probability of the jth check equation being satisfied given bit ci =

b and the other bits have separable distribution given by { } jjjiq≠′′

=========

fj

rji(b)

xi qij(b)

Page 65: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

15

we now observe from Lemma 1 that

∏ −+=∈′

′iVi

jijij

qr\

))1(21(21

21)0(

∏ −−=∈′

′iVi

jijij

qr\

))1(21(21

21)1(

• further, observe that, assuming independence of the { rji(b)},

∏−=∈′

′jCj

ijiiji

rPq\

)0()1()0(

∏=∈′

′jCj

ijiiji

rPq\

)1()1(

Page 66: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

16

• as indicated above, the algorithm iterates back and forth between and

; we already know how to pass the messages and around

from the Decoding Overview Section.

}{ ijq

}{ jir )(bqij )(brji

• before we give the iterative decoding algorithm, we will need the following

result

Lemma 2 Suppose iii nxy += , where and ),0(~ 2σηin

21)1Pr()1Pr( =−==+= ii xx .

Then 2/21

1)Pr(σyx

ie

yxx−+

== (with { }1±∈x )

proof (Bayes' rule and some algebra)

Page 67: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

17

Sum-Product Algorithm Summary - Probability Domain

(perform looping below ji,∀ for which 1=ijh )

(0) initialize:

2/21

1)|1Pr(1)0(σiy

iiiije

yxPq−+

=+==−=

2/21

1)|1Pr()1(σiy

iiiije

yxPq+

=−===

(1) ))1(21(21

21)0(

\∏ −+=∈′

′ijVi

jiji qr

)0(1)1( jiji rr −=

ci=0

ci=1

fj

rji(b)

xi

Page 68: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

18

Sum-Product Algorithm Summary (cont'd)

(2) )0()1()0(\

∏−=∈′

′jiCj

ijiijij rPKq

)1()1(\

∏=∈′

′jiCj

ijiijij rPKq

where the constants ijK are chosen to ensure 1)1()0( =+ ijij qq

(3) Compute i ∀

∏−=∈ iCj

jiiii rPKQ )0()1()0(

∏=∈ iCj

jiiii rPKQ )1()1(

where the constants Ki are chosen to ensure 1)1()0( =+ ii QQ

qij(b)

yi

fj

xi

Page 69: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

19

Sum-Product Algorithm Summary (cont'd)

(4) ⎩⎨⎧ >

=∀•else0

5.0)1(if1ˆ ii

Qci

• if ( )0Hc T = OR ( )ionsmax_iterat iterations# = OR (other stopping rule)

then STOP

else, go to (1)

=======

Page 70: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

20

Remarks

(a) if the graph corresponding to the H matrix contains no cycles (i.e., is a “tree”),

then and will converge to the true a posteriori probabilities for c)0(iQ )1(iQ i

as the number of iterations tends to ∞

(b) (for good LDPC codes) the algorithm is able to detect an “uncorrected”

codeword with near-unity probability (step (4)), unlike turbo codes [MacKay]

(c) this algorithm is applicable to the binary symmetric channel where

},1,0{,),Pr()( ∈== iiiij ybybcbq still holds; we can also extend it to the

binary erasure channel, fading channels, etc.

Page 71: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

21

Log Domain Decoder

• as with the probability-domain Viterbi and BCJR algorithms, the probability-

domain message-passing algorithm suffers because

1) multiplications are involved (additions are less costly to implement)

2) many multiplications of probabilities are involved which could become

numerically unstable (imagine a very long code with 50-100 iterations)

• thus, as with the Viterbi and BCJR algorithms, a log-domain version of the

message-passing algorithm is to be preferred

Page 72: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

22

• to do so, we first define the following LLR’s:

0=ic

)1Pr()1Pr(

log)(iiii

i yxyx

cL−=+=

1=ic

)1()0(

log)(

)1()0(

log)(

)1()0(

log)(

ij

iji

ij

ij

ij

ji

ji

ji

QQ

QL

qq

qL

rr

rL

Page 73: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

23

• we will also need the following result (trivial to show):

( )

1

1010

21

log21tanh

p

pppp

−=

−=⎟⎠⎞

⎜⎝⎛

(∗ )

• the initialization step thus becomes

2

1/2

1/2

/2

1

1log)()(

2

2

σ

σ

σ

i

y

y

iij

y

e

ecLqL

i

i

=

⎟⎟⎠

⎞⎜⎜⎝

⎛+

⎟⎟⎠

⎞⎜⎜⎝

⎛+

== −

−−

Page 74: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

24

• for step (1), we first rearrange the equation: )0(jir

( )∏ −+=∈′

′iVi

jijij

qr\

)1(211)0(2

( )∏ −=−⇒∈′

′iVi

jijij

qr\

)1(21)1(21

• from (*) on the previous page

∏ ⎟⎠⎞

⎜⎝⎛=⎟

⎠⎞

⎜⎝⎛

∈′′

iVijiji

jqLrL

\)(

21tanh)(

21tanh

(**)

or

⎟⎟

⎜⎜

⎛∏ ⎟

⎠⎞

⎜⎝⎛=

∈′′

iVijiji

jqLrL

\

1 )(21tanhtanh2)(

Page 75: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

25

• the problem with these expressions is that we are still left with a product

• we can remedy this as follows (Gallager):

rewrite as )( jiqL ′

ijijjiqL βα=′ )(

where

( )

)()(

ijij

ijijqL

qLsign≡

βα

• then (**) on the previous page can be written as

∏ ⎟⎠⎞

⎜⎝⎛

∏ ⋅=⎟⎠⎞

⎜⎝⎛

′′

′ iji

iijijrL βα

21tanh)(

21tanh

Page 76: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

26

• we then have

⎟⎟

⎜⎜

⎛∑⎟⎟

⎞⎜⎜⎝

⎛∏=

∑⎟⎠⎞

⎜⎝⎛

⎟⎟⎠

⎞⎜⎜⎝

⎛∏

=

∏ ⎟⎠⎞

⎜⎝⎛⋅⎟⎟

⎞⎜⎜⎝

⎛∏=

∈′′

′−−

′′

′−

ijRiji

iij

i

ji

iij

iji

iijjirL

/

log1log

)(

21tanhlog

logtanh2

21tanhtanh2)(

11

1

βφφα

βα

βα48476

where we have defined

1

1log21tanhlog)(

+=⎟

⎠⎞

⎜⎝⎛−≡ x

x

e

exxφ

Page 77: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

27

and used the fact that )()(1 xx φφ =− when x > 0:

( ) xe

exx

x=

+=

1

1log)()(

)(

φ

φφφ

• the function )(xφ is fairly well behaved, it looks like

and so may be implemented via look-up table

6 φ(x)

6 x

45o line

Page 78: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

28

• for step (2), we simply divide the eqn by the eqn and take the log

of both sides to obtain

)0(ijq )1(ijq

∑+=∈′

′jCj

ijiiji

rLcLqL/

)()()(

• step (3) is similarly modified

Page 79: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

29

Sum-Product Algorithm Summary - Log Domain

(perform looping below ji,∀ for which 1=ijh )

(0) initialize: 2/2)()( σiiij ycLqL ==

(1) ⎟⎟

⎜⎜

⎛∑⋅⎟

⎜⎜

⎛∏=

∈′′

∈′′

ijij Viji

VijijirL

\\)()( βφφα

x0 x1 x2 xi

fj

)(cm)(

1vm )(

3vm)(

2vm

Page 80: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

30

where

( )

1

1log

)2/tanh(log)()(

)(

+=

−≡≡

x

x

ijij

ijij

e

exx

qLqLsign

φβα

(2) ∑+=∈′

′jiCj

ijiij rLcLqL\

)()()(

f0 f1 fj

xi

)(vm)(1

cm)(

2cm

mi

Page 81: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

31

(3) ∑+=∈ iCj

jiii rLcLQL )()()(

(0) • ∀i,

⎩⎨⎧ <

=else0

0)(if1ˆ ii

QLc

• if ( )0Hc T = OR ( )ionsmax_iterat iterations# = OR (other stopping rule)

then STOP

else, go to (1)

=========

Page 82: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

32

Improved Notation: Log-SPA Algorithm for LDPC Codes on the AWGN Channel

1. initialize the channel messages for each v-node via

(all other messages set to zero); 20 /2 σiym =

2. update the v-node messages via

∑−

=+=

1

1

)(0

)( vd

k

ck

v mmm ;

3. update the c-node messages via

( )⎟⎟⎠

⎞⎜⎜⎝

⎛⋅= ∑∏

=

1

1

)()()( cd

k

vk

k

vk

cm βφφα ;

where )()()( of magnitude andsign theare and vvk

vk mβα

f0 f1 f2

x0

)(vm

0m

)(1

cm)(

2cm

x0 x1 x2 x4

f0

)(cm)(

1vm )(

3vm)(

2vm

Page 83: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

33

4. compute ∑=

+=vd

k

ck

v mmM1

)(0

)( and ( ))(ˆ vMsignx = for each code bit to obtain

(hence );

x

c

5. if ( )0Hc T = OR ( )ionsmax_iterat iterations# = OR (other stopping rule), STOP,

else go to step 2.

Page 84: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

34

Comments 1. The order of the steps in the above algorithm summary is different than the

summary given earlier in part to show that equivalent variations on the

algorithm exist

2. In fact, the following ordering of the steps saves some computations (with a

modification to Step 2):

Step 1

Step 4

Step 5

Step 2' This step is modified as: )()()( cd

vvv

mMm −=

(this is an extrinsic information calculation)

Step 3 (and then go up to Step 4)

Page 85: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

35

Example

consider an (8,4) product code (dmin=4) composed of a (3, 2) single parity

check code (dmin=2) along rows and columns:

thus,

c2 = c0+c1

c5 = c3+c4

c6 = c0+c3

c7 = c1+c4

from which

⎥⎥⎥⎥

⎢⎢⎢⎢

=

10010010010010010011100000000111

H

c0 c1 c2

c3 c4 c5

c6 c7

Page 86: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

36

the graph corresponding to H is

note that the code is neither low-density nor regular, but it will suffice to

demonstrate the decoding algorithm

x1 x4x0

x2 x3 x5 x6

f0 f1 f3f2

x7

Page 87: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

37

the codeword we choose for this example is

( )11

111111

)1(11

110101

−−−−+−+−

=→−=→= xxc ici

• the received word y is

0 1 2

3 4 5

6 7

.2 .2 _.9

.6 .5 1.1

.4 1.2

y y yy y y y

y y

+ += = + + −

− −

so that there are sign errors in y0 and y4

Page 88: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

38

● initialization (assume σ2=0.5):

ji,∀ for which 1=ijh :

set

2/2)()( σiiij ycLqL ==

Page 89: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

39

we obtain [ ]))(,),(( 70 QLQLLQ K≡ :

Page 90: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

40

Reduced Complexity Decoder: The Min-Sum Algorithm

• consider the update equation for in the log-domain decoder: )( jirL

⎟⎟⎠

⎞⎜⎜⎝

⎛∑⋅⎟⎟

⎞⎜⎜⎝

⎛∏=

′′

′ iji

iijjirL )()( βφφα

• notice now the shape of φ(x):

• we may conclude that the term corresponding to the smallest jiβ in the above

summation dominates so that

φ(x)

x

Page 91: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

41

( )

jii

jii

iji

′′

′′

′′

=

⎟⎠⎞

⎜⎝⎛

⎟⎠⎞

⎜⎝⎛

−⎟⎟⎠

⎞⎜⎜⎝

⎛∑

β

βφφβφφ

min

min~

• the second equality follows from ( ) xx =)(φφ

• the min-sum algorithm is thus simply the log-domain algorithm with step (1)

replaced by

jiRiRi

jijiijij

rL ′′′

′ ⋅∏=′ βαεε \\

min)()1(

• the min-sum algorithm converges in 10 iterations rather than 7 in the above

example (since it is an approximation)

• to illustrate the simplicity of the min-sum algorithm, we change the received

word in the example that follows.

Page 92: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

42

Example

2.14.1.15.7.9.8.5.1

−−−=−−

y

• assuming again 5.02 =σ ,

{ }

( )8.4,6.1,4.4,2,8.2,6.3,2.3,6

2)( 702

70

−−−−−=⎭⎬⎫

⎩⎨⎧

= == ii

iiycL

σ

Page 93: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

43

• the worked-out graph, first iteration:

STOP0ˆ ⇒=THc

========

Page 94: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

44

The Min-Sum-with-Correction-Term Algorithm

• In a code's Tanner graph, edges leading from bit nodes to check nodes

indicate that the sum of those bit must equal zero

• In the Tanner-graph based decoder, we may consider the computation of

extrinsic information departing a check node to be of the form

( )LL

LL

⊕⊕⊕⊕⊕≡

⊕⊕⊕⊕⊕=

⎟⎟⎟

⎜⎜⎜

⎛∑=

∈′′

kjhg

kjhg

Viiji

LLLL

bbbbL

bLrLij \

)(

(the operators for the last line should be )

• Now we imagine that we want to compute in serial fashion, accounting

for the bits

)( jirL

( )LL ,,,,, kjhg bbbb one at a time

Page 95: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

45

• Thus, we would only need to perform pairwise computations of the form

• It can be shown that

where

• It can also be shown that s(x, y) can successfully approximated by

see W. E. Ryan, "An Introduction to LDPC Codes," in CRC Handbook for Coding and Signal Processing for Recording Systems (B. Vasic, ed.) CRC Press, to be published in 2004. (http://www.ece.arizona.edu/~ryan/)

Page 96: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

46

Wc = Wr = 64

c = 0.5

Page 97: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

47

Wc = 4

Wr = 32

c = 0.5

Page 98: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

48

The Min-Sum-with-Attenuator Algorithm

• By plotting the min-sum LLR values against the "exact" SPA values (same

data and noise), we see that the min-sum LLR values are generally too

optimistic (too large, where large implies better reliability).

min-sum vs. SPA LLR's in the 1st iteration

Page 99: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

49

• By attenuating the min-sum values, the resulting LLR values are sometimes

optimistic and sometimes pessimistic (relative to the SPA), but a better

balance is struck, hence the improvement over the min-sum algorithm.

new step (1):

jiRiRi

jijiijij

ArL ′′′

′ ⋅∏⋅=′′ βαεε \\min)()1(

where 0 < A < 1 is the attenuation factor

Page 100: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

50

• It appears from the plot above that there might be some advantage to turning

off the attenuation factor after 5 iterations because the values become

generally pessimistic on the 6th iteration. We have not simulated this

modification to the MSa.x algorithm.

• Also, an attenuation factor of 0.8 is better than the factor of 0.5 shown here,

but clearly the factor of 0.5 is to be preferred for practical reasons.

• Below we present some simulation results for the following algorithms:

• SPA = sum-product algorithm

• MS = min-sum algorithm

• MSc = min-sum with a correction term

• MSa = min-sum with an attenuator

Page 101: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

51

Pb and Pcw curves for MS, MSa.5(min-sum with attenuator 0.5), MSc.5 (min-sum with correction term 0.5), and SPA, all with 50 decoding iterations.

Page 102: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

52

Repeat of the above, but with 10 iterations and without the min-sum curves.

Page 103: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

53

Repeat of the above, but with 5 iterations and without the min-sum curves.

Page 104: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

54

10

Code Review: Decoding Packet-LDPC on PEC

checknodes

variablenodes

0

1

2

3

4

C

C

C

C

C

(a) received codeword

1101

1001

0001

????

????

????

????

0111

1111

0010

checknodes

variablenodes

0

1

2

3

4

C

C

C

C

C

(b) iteration 1

1101

1001

0001

0101

0001

0100

????

0111

1111

0010

checknodes

variablenodes

0

1

2

3

4

C

C

C

C

C

(c) iteration 2

1101

1001

0001

0101

0001

0100

1000

0111

1111

0010

0

1

2

3

4

5

6

7

8

9

υ

υ

υ

υ

υ

υ

υ

υ

υ

υ

Iterative Decoding on the Packet Erasure Channel

An analogous algorithm of course applies for the binary erasure channel (BEC) or the burst erasure channel (BuEC).

Page 105: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

55

REFERENCES (FOR PARTS I AND II) Primary references used to write these notes: R. Gallager, "Low-density parity-check codes," IRE Trans. Information Theory, pp. 21-28, Jan. 1962. D. MacKay, "Good error correcting codes based on very sparse matrices," IEEE Trans. Information Theory, pp. 399431, March 1999. J. Fan, Constrained coding and soft iterative decoding for storage, Ph.D. dissertation, Stanford University, December 1999. (See also his Kluwer monograph.) Secondary references used to write these notes: R. M. Tanner, "A recursive approach to low complexity codes," IEEE Trans. Inf Theory, pp. 533-547, Sept. 1981. J. Hagenauer, et al., "Iterative decoding of binary block and convolutional codes," IEEE Trans. Inf Theory, pp. 429-445, March 1996. M. Fossorier, et al. "Reduced complexity iterative decoding of low-density parity-check codes based on belief propagation," IEEE Trans. Comm., pp. 673-680, May 1999. T. Richardson, et al. "Efficient encoding of low-density parity-check codes," IEEE Trans. Inf Theory, Feb. 200 1.

D. MacKay, et al. "Comparison of constructions of irregular Gallager codes," IEEE Trans. Comm.,

October 1999.

Page 106: Low-Density Parity-Check Codes - 123seminarsonly.com · Low-Density Parity-Check Codes (cont’d) Definition. A regular(n, k) LDPC code is a linear block code whose parity-check matrix

56

T. Richardson, et al. "Design of capacity-approaching irregular low-density parity-check codes," IEEE Trans. Inf Theory, Feb. 2001. M. Luby et al. "Improved low-density parity check codes using irregular graphs," IEEE Trans. Inf. Theory, Feb. 2001. S.-Y. Chung, et al. "On the design of low-density parity-check codes within 0.0045 dB of the Shannon limit," IEEE Comm. Letters, pp. 58-60, Feb. 2001. Y. Kou, S. Lin, and M. Fossorier, "Low density parity check codes based on finite geometries: A rediscovery and more," submitted to IEEE Trans. Inf. Theory. R. Lucas, M. Fossorier, Y. Kou, and S. Lin, "Iterative decoding of one-step majority-logic decodable codes based on belief propagation," IEEE Trans. Comm., pp. 931-937, June 2000. M. Yang, W. E. Ryan and Y. Li, "Design of Efficiently Encodable Moderate-Length High-Rate Irregular LDPC Codes," IEEE Trans. Comm., April 2004. W. E. Ryan, "An Introduction to LDPC Codes," in CRC Handbook for Coding and Signal Processing for Recording Systems (B. Vasic, ed.) CRC Press, to be published in 2004. (http://www.ece.arizona.edu/~ryan/)


Recommended