This web page describes the logic inside the Check Node function.
First consider a LDPC decoder as illustrated below which inputs probability values.
A block diagram of the Check Node function is shown below...
Gallager very cleverly derived the formula for the probability that the number of 1's in a set of probabilites is even on page 41 of his 1963 paper on LDPC codes.
p(# 1's is even) = 1/2 + 1/2[(1-2p1)(1-2p2)(1-2p3)...]
p(# 1's is odd) = 1 - p(# 1's is even) = -1/2 + 1/2[(1-2p1)(1-2p2)(1-2p3)...]
In the above example,
p1out = 1/2(1-2p2in)(1-2p3in) -1/2
p2out = 1/2(1-2p1in)(1-2p3in) -1/2
p3out = 1/2(1-2p1in)(1-2p2in) -1/2
The Check Node function could be implemented in a number of different ways...
It might make sense for the Check Node function to simply average the values it receives. [For the above example the value outputted by the Check Node would be pout = (p1in+p2in+p3in)/3.]
If one input value deviates more than some fixed amount from the other values, that value could be ignored similar to what the bit-flipping decoder does and the average of the others used as output.
One input value could be ignored and the output could be declared to be 1 or 0 if the other values are above or below predetermined thresholds.
Simulations may tell which method is the most effective.
Comments? To post comments, e-mail me, and I will reply with instructions.