Upload
adam-williams
View
242
Download
2
Embed Size (px)
Citation preview
Part 1:Overview of Low Density
Parity Check(LDPC) codes
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
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
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
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 code can get within ~.005 db of channel capacity
Low density parity check codes
• Low density parity check
- H matrix has a large number of columns (n> 1000 or 10,000)
- Number of 1’s in H is small ( <<1%)
- H is constructed pseudorandomly subject to some constraints
Low density parity check codes
• Low density parity check
- H is constructed pseudorandomly subject to some constraints:
- fixed number of rows and columns - this fixes the rate
- randomly fill H with 1’s
- e.g. fixed number of 1’s per row/column
Encoding (Cont’d)
• Encoding in graph
m1,1 m1,2 m1,k-1 p1
Degree k
m1,1 m1,2 m1,k-1 p1
Degree k
m2,1 m2,2 m2,c-1 p2
Degree c
Decoding
• Message passing decoder– Iterative algorithm
• Amenable to highly parallelized hardware implementation
Code design
‘Optimal’ LPDC codes can be describedby distributions (x) and (x)
Optimization
• Basic idea– Optimize the triple ( (x), (x), (x) )
€
f (0)(v) = π jΔ(v)+ g(0)(v)
x)
x)
Optimization recursion
€
f (0)(v) = π jΔ(v)+ g(0)(v)
x)
x)
Simulation Results
Simulation Results
One encoder/one decoder
2-IID capacity
Simulation Results
One encoder/one decoder
A single LDPC code designed for one rate and then punctured for a range of rates canbe optimal for “all rates”
2-IID capacity
Part 2:Details of Low Density Parity Check(LDPC) codes: binary
symmetric channels
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
Motivating example
• Hard decoder: bit flipping decoder
Bit (variable)nodes
Checknodes
Motivating 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 00 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0Rec’d
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 00 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0Rec’d
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 00 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0Rec’d
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 0Rec’d
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 0Rec’d
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 0Rec’d
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 0Rec’d
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 0Rec’d
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 0Rec’d
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 0Rec’d
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 0Rec’d
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 0Rec’d
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 0Rec’d
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 0Rec’d
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 0Rec’d
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