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
Decoding Message passing decoder –Iterative algorithm Amenable to highly parallelized hardware implementation
Code design ‘Optimal’ LPDC codes can be described by distributions (x) and (x)
Optimization Basic idea –Optimize the triple ( (x), (x), (x) ) x) x)
Optimization recursion x) x)
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 can be 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
Details: Decoding the channel output can be either hard or 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
Low density parity check codes Consider the MAP rule discussed in the context of convolutional codes
Low density parity check codes Transmit Receive
Bit flipping decoder Receive
Motivating example Hard decoder: bit flipping decoder Bit (variable) nodes Check nodes
Motivating example All 0’s codeword is sent Bit (variable) nodes Check nodes
Example 1: single error Rec’d Assume all 0’s codeword and a single error
Example 1: single error Rec’d Step 1: Check node: Identify which parity checks are in error
Example 1: single error Rec’d Step 1: Parity node check: Identify which parity checks are in error
Example 1: single error Rec’d Step 1: Parity node check: Identify bits that are connected to those checks
Example 1: single error Rec’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 Rec’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 Rec’d Step 2: Bit node check: For each bit node that is potentially in error - identify number of unsatisfied checks for that bit node Number of unsatisfied checks for this bit
Example 1: single error Rec’d Step 2: Bit node check: For each bit node that is potentially in error - identify number of unsatisfied checks for that bit node Number of unsatisfied checks for this bit
Example 1: single error Rec’d Step 2: Bit node check: For each bit node that is potentially in error - identify number of unsatisfied checks for that bit node Number of unsatisfied checks for all bits
Example 1: single error Rec’d Step 2: Bit node check: Flip the bits with the most unsatisfied checks
Example 1: single error Rec’d Step 2: Bit node check: Flip the bits with the most unsatisfied checks
Example 1: single error Rec’d Step 2: Bit node check: Flip the bits with the most unsatisfied checks
Example 1: single error Rec’d Step 3: parity node check: Check if all parities are satisfied
Example 1: single error Rec’d Step 3: parity node check: Check if all parities are satisfied
Example 1: single error Rec’d Step 3: parity node check: Check if all parities are satisfied Done!
Example 2: Double error Iteration #1
Example 2: Double error Iteration #1
Example 2: Double error Iteration #
Example 2: Double error Iteration #
Example 2: Double error Iteration #
Example 2: Double error Iteration #
Example 2: Double error Iteration #
Example 2: Double error Iteration #
Example 2: Double error Iteration #
Example 2: Double error Iteration #
Example 2: Double error Iteration # Done