1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver...

18
1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance Error floor occurs at lower BER Decoding is not trellis based Iterative decoding More iterations than turbo decoding Simpler operations in each iteration step Not covered by patents!

Transcript of 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver...

Page 1: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

1

Low Density Parity Check codes• Performance similar to turbo codes• Do not require long interleaver to achieve good

performance• Better block error performance• Error floor occurs at lower BER• Decoding is not trellis based• Iterative decoding

• More iterations than turbo decoding• Simpler operations in each iteration step

• Not covered by patents!

Page 2: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

2

Introduction• A binary parity check matrix Hn-kn

• C = { vGF(2)n : vHT = 0 }

• (Regular) LDPC code: The null space of a matrix H which has the following properties:

• Its J rows are not necessarily linearly independent 1s in each row 1s in each column

• No pair of columns has more than one common 1 and are small compared to the number of rows (J) and

columns (n) in H

• Density r = /n = /J

• Irregular: The number of 1s in rows/columns may vary

Page 3: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

3

Example• J = n = 15 = = 4

Page 4: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

4

Gallager’s LDPC codes• Select and • Form a kk matrix H consisting of submatrices

H1,...,H, each of dimensions kk

• H1 is a matrix such that its ith row has its 1s confined to columns (i-1)+1 to i.

• The other submatrices are column permutations of H1

• The actual column permutations define the properties of the code

Page 5: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

5

Gallager’s LDPC codes: Example• Select = 4, = 3• Column permutations for H2 and H3 selected so that no two

columns have more than one 1 in common• (20,7,6) code

Page 6: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

6

Rows and parity checks• Each row of H forms a parity check• Let Al be the set of rows {h1

(l),...,h(l)} that have a one in

position l, i. e. the set of parity checks on symbol l.• Since no pair of columns has more than one common 1,

any code bit other than bit l is checked by at most one of the rows in Al.

• Thus there are rows orthogonal on l, and any error pattern of weight /2 can be decoded by one-step majority logic decoding. However, (especially when is small) this gives poor performance

• Gallager proposed two iterative decoding algorithms, one hard decision based and one soft decision based

Page 7: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

7

Brief overview of graph theoretic notations• An undirected graph G(V,E)• Degree of a vertex/node : Number of edges adjacent to it• Adjacent edges: Connected to the same vertex• Path in a graph: Alternating sequence of vertices and edges

(starting and ending in a vertex), where all vertices are distinct except for maybe the first and the last

• A tree: A graph without cycles• Connected graph: There is a path between any pair of

vertices• Bipartite graph: the set of vertices can be partitioned into

two disjoint parts; so that each edge goes from a vertex in one part to a vertex in the other

Page 8: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

8

Graphical description of LDPC codes• Tanner graph: A bipartite graph G(V,E), where

• V = V1 V2

• V1 is a set of n code-bit nodes v0,...,vn-1, each representing one of the n code bits

• V2 is a set of J check nodes s0,...,sJ-1, each representing one of the J parity checks

• There is an edge between v V1 and s V2 iff the code-bit corresponding to v is contained in the parity check s.

• No cycles of length 4 for the Tanner graph of an LDPC code

Page 9: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

9

Example

Page 10: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

10

Decoding of LDPC codes• Several decoding techniques available. Listed in order of

increasing complexity (and improving performance):• Majority logic decoding (MLG)• Bit flipping (BF)• Weighted bit flipping (WBF)• Iterative decoding based on belief propagation (IDBP)

also known as the sum-product algorithm (SPA)• A posteriori probability decoding (APP)

Page 11: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

11

Decoding notation• Codeword = channel input : v = (v0,..., vn-1), binary

• Assume BPSK modulation on AWGN channel

• Channel output : y = (y0,..., yn-1)

• Hard decisions : z = (z0,..., zn-1), zj = 1 (0) yj > (<) 0

• Rows of H : h1,..., hJ

• Syndrome : s = (s1,..., sJ) = z HT , sj = z hj = l=0...n-1zlhj,l

• Parity failure : at least one syndrome bit nonzero• Error pattern e = v + z

• Syndrome : s = (s1,..., sJ) = e HT , sj = e hj = l=0...n-1elhj,l

Page 12: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

12

Majority logic decoding• One-step MLG (see Chapter 8*)

• Let Al be the set of rows {h1(l),...,h

(l)} that have a one in position l, i. e. the set of parity checks on symbol l.

• Set of parity checks orthogonal on code bit l:

• Sl = { s = z h = e h = l=0...n-1elhl : h Al }

• If a majority of the parity checks on bit l are satisfied; conclude that el = 0. Otherwise, assume that el = 1.

• This decoding is guaranteed to result in a correct decoding if at most /2 errors occur.

• Problem: is by assumption a small number.

Page 13: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

13

Bit flipping decoding• Introduced by Gallager in 1961• Hard decision decoding:

First, form the hard decisions z = (z0,..., zn-1)

a) Compute the parity check sumss = (s1,..., sJ) = z HT , sj = z hj = l=0...n-1zlhj,l

b) For each bit l, find fl = the number of failed parity checks for bit l

c) Let S = the set of bits for which fl is large

d) Flip the value of the bits in S

e) Repeat from a) until all parity checks are satisfied, or a maximum number of iterations have been reached

Page 14: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

14

Bit flipping decoding (continued)• Let S = the set of bits for which fl is large

• For example:

• S = the set of bits for which fl exceeds some threshold that depends on the code parameters: , , minimum distance and channel SNR. If decoding fails, try again with reduced value of

• Simple alternative: S = the set of bits for which fl is maximum

• Comments:

• If few errors occur, decoding should commence in a few iterations

• On a poor channel, the number of iterations should be (allowed to grow) large

• Improvement: Adaptive thresholds

Page 15: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

15

Weighted MLG and BF decoding• Use weighting to include soft decision/reliability information in the

decoding decision• Hard decision decoding: First, form the hard decisions z = (z0,..., zn-1)• Weight: | yj|(l)min = min{| yi| : 0in-1, hj,i =1, h Al }

• The reliability of the jth parity check on l• Weighted MLG: Hard decision on

• El = s Sl (2s-1)| yj|(l)min

• ...where Sl = { s = z h = e h = l=0...n-1elhl : h Al }• Weighted BF:

a) Compute the parity checks s = (s1,..., sJ) = z HT

b) For each bit l, compute El .

c) Flip the value of the bit for which El is largestd) Repeat from a) until all parity checks are satisfied, or a maximum

number of iterations have been reached

Page 16: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

16

The sum-product decoding algorithm• Iterative decoding based on belief propagation

• Symbol-by-symbol SISO: The goal is to compute

• P( vl | y )

• L(vl) = log ( P( vl = 1| y )/P( vl = 0| y ) )

• A priori values: plx = P( vl = x), x{0,1}

• qj,lx,(i) = P(vl = x |check sums Al \ {hj} at ith iteration}

• hj = (hj,0, hj,1, ..., hj,n-1); support of hj = B(hj) = { l : hj,l = 1}

j,lx,(i) = P(sj=0| vl = x,{vt:tB(hj)\{l}}) tB(hj)\{l} qj,t

vt,(i)

• qj,lx,(i+1) = j,l

(i+1) ht Al \ {hj} t,l

x,(i)

j,l(i+1) chosen so that qj,l

0,(i+1) +qj,l1,(i+1) =1

• P (i)(vl = x | y )=l(i) hj Al

j,lx,(i-1)

l(i) chosen so that P (i)(vl = 0| y ) + P (i)(vl = 1 | y )=1

Page 17: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

17

The SPA on the Tanner graph• qj,l

x,(i) = P(vl = x |check sums Al \ {hj} at ith iteration}

j,lx,(i) = P(sj=0| vl = x,{vt:tB(hj)\{l}}) tB(hj)\{l} qj,t

vt,(i)

• qj,lx,(i+1) = j,l

(i+1) ht Al \ {hj} t,l

x,(i)

+ vl sj

qj,lx,(i)

qj,m

x,(i)

q j,nx,(i)

qj,m

x,(i+1)

qj,lx,(i+1)

q j,nx,(i+1)

j,lx,(i)

a,lx,(i)

b,l

x,(i)

Page 18: 1 Low Density Parity Check codes Performance similar to turbo codes Do not require long interleaver to achieve good performance Better block error performance.

18

Suggested exercises

• 17.1-17.11