part 1: overview of low density parity check(ldpc) codes
TRANSCRIPT
![Page 1: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/1.jpg)
Part 1:Overview of Low Density
Parity Check(LDPC) codes
![Page 2: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/2.jpg)
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 3: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/3.jpg)
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 4: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/4.jpg)
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 5: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/5.jpg)
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
![Page 6: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/6.jpg)
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
![Page 7: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/7.jpg)
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
![Page 8: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/8.jpg)
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
![Page 9: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/9.jpg)
Decoding
• Message passing decoder– Iterative algorithm
• Amenable to highly parallelized hardware implementation
![Page 10: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/10.jpg)
Code design
‘Optimal’ LPDC codes can be describedby distributions (x) and (x)
![Page 11: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/11.jpg)
Optimization
• Basic idea– Optimize the triple ( (x), (x), (x) )
€
f (0)(v) = π jΔ(v)+ g(0)(v)
x)
x)
![Page 12: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/12.jpg)
Optimization recursion
€
f (0)(v) = π jΔ(v)+ g(0)(v)
x)
x)
![Page 13: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/13.jpg)
Simulation Results
![Page 14: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/14.jpg)
Simulation Results
One encoder/one decoder
2-IID capacity
![Page 15: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/15.jpg)
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
![Page 16: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/16.jpg)
Part 2:Details of Low Density Parity Check(LDPC) codes: binary
symmetric channels
![Page 17: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/17.jpg)
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 18: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/18.jpg)
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 19: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/19.jpg)
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 20: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/20.jpg)
Low density parity check codes
Transmit
€
cn = (c1,c2 ,...,cn )
€
rn = (r1,r2 ,...,rn )
Receive
€
rn
![Page 21: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/21.jpg)
Bit flipping decoder
€
cn = (c1,c2 ,...,cn )
€
rn = (r1,r2 ,...,rn )
Receive
€
rn
0 0 0 ••• 0 0 1 0 ••• 1
![Page 22: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/22.jpg)
Motivating example
• Hard decoder: bit flipping decoder
Bit (variable)nodes
Checknodes
![Page 23: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/23.jpg)
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
![Page 24: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/24.jpg)
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
![Page 25: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/25.jpg)
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
![Page 26: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/26.jpg)
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
![Page 27: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/27.jpg)
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
![Page 28: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/28.jpg)
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
![Page 29: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/29.jpg)
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
![Page 30: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/30.jpg)
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
![Page 31: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/31.jpg)
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
![Page 32: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/32.jpg)
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
![Page 33: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/33.jpg)
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
![Page 34: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/34.jpg)
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
![Page 35: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/35.jpg)
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
![Page 36: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/36.jpg)
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
![Page 37: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/37.jpg)
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
![Page 38: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/38.jpg)
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!
![Page 39: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/39.jpg)
Example 2: Double error
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Iteration #1
![Page 40: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/40.jpg)
Example 2: Double error
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Iteration #1
![Page 41: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/41.jpg)
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 42: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/42.jpg)
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 43: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/43.jpg)
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
![Page 44: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/44.jpg)
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
![Page 45: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/45.jpg)
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
![Page 46: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/46.jpg)
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
![Page 47: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/47.jpg)
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 48: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/48.jpg)
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 49: Part 1: Overview of Low Density Parity Check(LDPC) codes](https://reader033.vdocument.in/reader033/viewer/2022061616/5697bfdc1a28abf838cb0fd9/html5/thumbnails/49.jpg)
Example 2: Double error
Iteration #2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Done