re low density parity check (LDPC) codes. These codes were developed by Robert Gallagher as part of his PhD thesis in 1960 [12], but due to high processing complexity were not implemented in practice. They were rediscovered in the 1990s, and have since become very popular because of their performance approaching the Shannon limit. LDPC codes are a class of block codes similar to Hamming codes, and are encoded and checked using matrix manipulation. They are characterised by their size of the parity check matrix, usually in the order of several thousand rows and columns. This means that the input data block needs to be of same order of size which limits their application to very fast communication links such as gigabit and 10 gigabit Ethernet. LDPC parity check matrices are further character- ised by a low ratio of 1's compared with O's, which begets the 'low density parity check' name. Similar to all other error control codes, the LDPC encoder generates a mathematical rela- tion between the data and parity bits which can be used by the receiver to correct errors. The mathematical relation of the LDPC code may be explained using the so-called 'bipartite' diagram shown in Figure 6.21. Assume the parity check matrix H is as follows: 11100100 00100111 10011010 Error Control Coding C-nodes V-nodes Figure 6.21 The bipartite diagram for an LDPC decoder [13] Two types of nodes exist in the diagram: constant nodes (C-nodes), corresponding to the columns of H, and variable nodes (V-nodes) corresponding to the rows of H. The links connecting C-nodes and V-nodes in the bipartite diagram exist if the parity check matrix element is 1. For example the element in the intersection of row 3, column 6 is 1 and therefore C-node C3 is connected to V-node V6 by a link. In contrast the element in the intersection of row 2, column 5 is 0 and therefore C-node C2 and V-node V5 are not connected. The decoder places a received codeword on the variable nodes. The receiver rule is that the links ending in a constant node must modulo-2 add to z