LDPC Introduction

Low Density Parity Check (LDPC) Codes are a class of linear block codes. They are called Low Density Parity Check as the parity check matrix (H) fully describing the code is sparse (number of 1's is very low in comparison to the number of 0's). Due to the sparse property of the parity check matrix, the memory complexity of the code is relatively low in comparison to other codes when considering large codes. LDPC Codes are divided into two types:

Regular LDPC Codes: The parity check matrix (H) has constant number of 1's "v" in each column and constant number of 1's "c" in each row.

Irregular LDPC Codes: The number of 1's is not constant in each column or row of the parity check matrix (H).

As mentioned previously LDPC codes are considered as linear block codes, so they have "k input bits" and "n output bits" and their parity check matrix (H) is expressed as an (m$\times$n) matrix, where m=n-k. The number of 1's in (H) is constant and equal to (m$\cdot$c = n$\cdot$v) and so the design rate is expressed as: $$r_{d}=\dfrac{k}{n}=\dfrac{n-m}{n}=1-\dfrac{m}{n}=1-\dfrac{v_{average}}{c_{average}}$$ The "density" of an LDPC Code is expressed as: $$\dfrac{\rm{Number\:of\:1's}}{\rm{Total\:elements\:in\:H}}=\dfrac{m \cdot c}{m \cdot n}(Regular)=\dfrac{c}{n}=\dfrac{v}{m}$$ $$c \triangleq \rm{number\:of\:check\:nodes}$$ $$v \triangleq \rm{number\:of\:variable\:nodes}$$