Method and system for decoding
Low-Density Parity-Check (LDPC) codes offer error correction at rates approaching the link channel capacity and reliable and efficient information transfer over bandwidth or return-channel constrained links with data-corrupting noise present. They also offer performance approaching channel capacity exponentially fast in terms of the code length, linear processing complexity, and parallelism that scales with code length. They also offer challenges relating to decoding complexity and error floors limiting achievable bit-error rates. Accordingly encoders with reduced complexity, reduced power consumption and improved performance are disclosed with various improvements including simplifying communications linking multiple processing nodes by passing messages where pulse widths are modulated with the corresponding message magnitude, delaying a check operation in dependence upon variable node states, running the decoder multiple times with different random number generator seeds for a constant channel value set, and employing a second decoder with a randomizing component when the attempt with the first decoder fails.
1 . A method comprising:
providing a decoder for decoding received digital data according to a decoding process comprising a plurality of processing nodes, wherein
at least one of:
(A) the decoder further comprises linking a common control line to a predetermined portion of the plurality of processing nodes wherein each processing node of the plurality of processing nodes comprises at least a control port coupled to the common control line for receiving a control message, and transmitting the control message on the common control line wherein the width of a pulse transmitted is modulated in dependence with a magnitude associated with the control message;
(B) the decoding process comprises estimating a probability associated with a predetermined portion of the decoding process in dependence upon the states of a predetermined subset of the plurality of processing nodes and a current belief relating to the decoding process;
(C) the decoder further comprises providing a random number generator and executing a predetermined portion of the decoding process multiple times on the same received digital data wherein each execution is performed with a different seed for the random number generator;
(D) the decoder further comprises providing a second decoder comprising a component to randomize the decoding trajectory of the second decoder wherein digital content is parsed to the second decoder upon determining that the decoder has failed to decode the received digital data, the digital content being one of the decoded result of the decoder and the received digital data;
(E) the decoder further comprises providing a counter forming a predetermined portion of the decoder and operating the counter at a first clock rate, the first clock rate being at a higher clock rate than a second clock rate relating to the rest of the decoder;
(F) the decoder further comprises providing a variable node as part of the decoder, providing a check node as cart of the decoder, providing an edge linking the variable node and the check node and providing a clock having a first clock and a second clock rate wherein the clock is coupled to the variable node and the one of the first clock rate and second clock rate for the clock is established in dependence upon a transition relating to the edge; and
(G) the decoder further comprises a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes, a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes, and the decoding process comprises passing a current belief and information relating to the state of the plurality of processing nodes to an estimator to estimate a probability, delaying a parity check determination relating to the plurality of check nodes, the delay being determined in dependence upon at least the states of the plurality of variable nodes, and performing a parity check operation relating to the plurality of check nodes, the parity check operation made in dependence upon the level of agreement of the variable nodes.
2 . The method according to claim 1 further comprising;
providing a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes;
providing a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes; and
determining a parity check relating to a predetermined subset of the plurality of check nodes in dependence upon a level of agreement between a predetermined subset of the plurality of variable nodes.
3 . The method according to claim 1 further comprising;
providing a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes;
providing a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes; and
delaying a parity check determination relating to the plurality of check nodes, the delay being determined in dependence upon at least the states of the plurality of variable nodes.
4 . A device comprising:
a decoder for decoding received digital data according to a decoding process comprising a plurality of processing nodes, the decoder comprising;
at least one of:
(A) a common control line coupled to a predetermined portion of the plurality of processing nodes, each processing node of the plurality of processing nodes comprising at least a control port coupled to the common control line for receiving a control message, and a transmitter for transmitting the control message on the common control line wherein the width of a pulse transmitted is modulated in dependence with a magnitude associated with the control message;
(B) an estimator for estimating a probability associated with a predetermined portion of the decoding process in dependence upon the states of a predetermined subset of the plurality of processing nodes and a current belief relating to the decoding process,
(C) a random number generator; and multiple executions of a predetermined portion of the decoding process multiple times on the same received digital data, each execution being performed with a different seed for the random number generator; and
(D) a second decoder comprising a component to randomize the decoding trajectory of the second decoder; wherein digital content is parsed to the second decoder upon determining that the decoder has failed to decode the received digital data, the digital content being one of the decoded result of the decoder and the received digital data.
5 . The device according to claim 4 further comprising;
a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes;
a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes; and
a parity checker for determining a parity check relating to a predetermined subset of the plurality of check nodes in dependence upon a level of agreement between a predetermined subset of the plurality of variable nodes.
6 . The device according to claim 4 further comprising;
a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes;
a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes; and
a delay circuit for delaying a parity check determination relating to the plurality of check nodes, the delay being determined in dependence upon at least the states of the plurality of variable nodes.
7 . The device according to claim 4 further comprising;
a counter forming a predetermined portion of the decoder; wherein
the counter is operated at a first clock rate, the first clock rate being at a higher clock rate than a second clock rate relating to the rest of the decoder.
8 . The device according to claim 4 further comprising;
a variable node as part of the decoder;
a check node as part of the decoder;
an edge linking the variable node and the check node;
a clock generator for providing a clock having a first clock rate and a second clock rate to the variable node, the one of the first clock rate and second clock rate for the clock being determined in dependence upon a transition relating to the edge.
9 . The device according to claim 4 wherein,
a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes;
a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes;
an estimator for generating an estimate a probability in dependence upon a current belief and information relating to the state of the plurality of processing nodes;
a delay circuit for delaying a parity check determination relating to the plurality of check nodes, the delay being determined in dependence upon at least the states of the plurality of variable nodes; and
a parity checker for performing a parity check operation relating to the plurality of check nodes in dependence upon the level of agreement of the variable nodes.
10 . A device comprising:
a decoder for decoding received digital data according to a decoding process comprising a plurality of processing nodes, the decoder comprising;
at least one of:
(A) a counter forming a predetermined portion of the decoder, wherein the counter is operated at a first clock rate, the first clock rate being at a higher clock rate than a second clock rate relating to the rest of the decoder;
(B) a variable node as part of the decoder, a check node as part of the decoder, an edge linking the variable node and the check node, and a clock generator coupled to the variable node for providing a clock having a first clock rate and a second clock rate, the one of the first clock rate and second clock rate being determined in dependence upon a transition relating to the edge; and
(C) a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes, a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes, an estimator for generating an estimate a probability in dependence upon a current belief and information relating to the state of the plurality of processing nodes, a delay circuit for delaying a parity check determination relating to the plurality of check nodes, the delay being determined in dependence upon at least the states of the plurality of variable nodes, and a parity checker for performing a parity check operation relating to the plurality of check nodes in dependence upon the level of agreement of the variable nodes.
11 . The device according to claim 10 further comprising;
a common control line coupled to a predetermined portion of the plurality of processing nodes, each processing node of the plurality of processing nodes comprising at least a control port coupled to the common control line for receiving a control message; and
a transmitter for transmitting the control message on the common control line wherein the width of a pulse transmitted is modulated in dependence with a magnitude associated with the control message.
12 . The device according to claim 10 further comprising;
an estimator for estimating a probability associated with a predetermined portion of the decoding process in dependence upon the states of a predetermined subset of the plurality of processing nodes and a current belief relating to the decoding process.
13 . The device according to claim 10 further comprising;
a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes;
a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes; and
a parity checker for determining a parity check relating to a predetermined subset of the plurality of check nodes in dependence upon a level of agreement between a predetermined subset of the plurality of variable nodes.
14 . The device according to claim 10 further comprising;
a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes;
a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes; and
a delay circuit for delaying a parity check determination relating to the plurality of check nodes, the delay being determined in dependence upon at least the states of the plurality of variable nodes.
15 . The device according to claim 10 further comprising;
a random number generator; and
multiple executions of a predetermined portion of the decoding process multiple times on the same received digital data, each execution being performed with a different seed for the random number generator.
16 . The device according to claim 10 further comprising;
a second decoder comprising a component to randomize the decoding trajectory of the second decoder; wherein
digital content is parsed to the second decoder upon determining that the decoder has failed to decode the received digital data, the digital content being one of the decoded result of the decoder and the received digital data.
17. A method comprising providing a decoder for decoding received digital data according to a decoding process comprising a plurality of processing nodes, wherein the decoding process comprises:
generating a list of candidate codewords by, for each of the codewords in the list of candidate codewords, estimating a probability associated with a predetermined portion of the decoding process in dependence upon the states of a predetermined subset of the plurality of processing nodes and a current belief relating to the decoding process, and calculating decision data for each of the processing nodes in the plurality of processing nodes;
for each of the codewords in the list of candidate codewords, determining a weight based on the decision data for each of the processing nodes, in the plurality of processing nodes, that is associated with the codeword; and
selecting, as the decoded digital data, a valid codeword from the list of candidate codewords, the valid codeword selected based on the weights.
18. The method of claim 17 , wherein each candidate codeword is generated in an independent decoding attempt.
19. The method of claim 18 , wherein the independent decoding attempts are calculated in parallel.
20. The method of claim 18 , wherein the independent decoding attempts are calculated in sequence.
21. The method of claim 18 , wherein the independent decoding attempts are calculated until an iteration budget is exceeded.
22. The method of claim 17 , wherein the weight associated with a candidate codeword is based on a parity of at least one of the processing nodes associated with the candidate codeword.
23. The method of claim 17 , wherein the weight associated with a candidate codeword is based on a sign bit for at least one of the processing nodes associated with the candidate codeword.
24. The method of claim 17 , wherein the weight associated with a candidate codeword is based on a sign bit for a predetermined portion of the decoding process.
25. The method of claim 17 , wherein the weight associated with a candidate codeword comprises a random component.
26. The method of claim 17 , wherein the decision data is further based on the estimated probability.
27. The method of claim 17 , wherein the decision data is further based on the states of the predetermined subset of the plurality of processing nodes.
28. The method of claim 17 , wherein the decision data is further based on the current belief relating to the decoding process.
29. The method of claim 17 , wherein the weight comprises a syndrome weight.
30. The method of claim 17 , further comprising:
providing a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes;
providing a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes; and
determining a parity check relating to a predetermined subset of the plurality of check nodes in dependence upon a level of agreement between a predetermined subset of the plurality of variable nodes.
31. The method of claim 17 , wherein the decoder comprises a polar decoder.
32. The method of claim 31 , wherein the polar decoder decodes the received digital data based on list decoding of at least one of the candidate codewords in the list of candidate codewords.
33. The method of claim 31 , further comprising a second decoder, the second decoder comprising a Low-Density Parity-Check (LDPC) decoder.
34. The method of claim 17 , wherein the decoder comprises a Low-Density Parity-Check (LDPC) decoder.
35. The method of claim 17 , wherein the plurality of processing nodes comprises a set of check nodes and a set of variable nodes.
36. The method of claim 35 , wherein the current belief is based on an output of at least one of the check nodes in the set of check nodes.
37. The method of claim 35 , wherein the number of the check nodes in the set of check nodes is less than the number of the variable nodes in the set of variable nodes.
38. The method of claim 35 , further comprising providing, by at least one variable node of the set of variable nodes, the probability in a signal.
39. The method of claim 35 , further comprising providing, by at least one of the set of check nodes, the probability in a signal.
40. The method of claim 17 , wherein the decoding process further comprises:
dividing the received digital data into a first set of digital data and a second of digital data;
decoding the first set of digital data using a first subset of the plurality of processing nodes to obtain a first decoded result;
decoding the second set of digital data using a second subset of the plurality of processing nodes and a second current belief based on the first decoded result to obtain a second decoded result; and
constructing a decoded message based on the first decoded result and the second decoded result.
41. The method of claim 17 , further comprising receiving the digital data via a communication channel having data-corrupting noise present in the communication channel.
42. The method of claim 17 , further comprising:
during the generating of the list of candidate codewords, detecting an error in a candidate codeword in the list of candidate codewords; and
removing the candidate codeword having the detected error from the list of candidate codewords.
43. The method of claim 17 , wherein:
the decoding process comprises following distinct decoding paths within the plurality of processing nodes of the decoder; and
the plurality of processing nodes comprises a set of variable nodes, a set of check nodes distinct from the set of variable nodes, and a plurality of associated edges, wherein a subset of the plurality of associated edges connects a variable node in the set of variable nodes to at least one of the check nodes in the set of check nodes.
44. The method of claim 43 , wherein the distinct decoding paths comprise variable nodes in the set of variable nodes, check nodes in the set of check nodes, and the associated edges in the plurality of associated edges connecting a particular variable node to a particular check node.
45. The method of claim 43 , wherein a subset of the set of variable nodes comprises degree-3 variable nodes.
46. The method of claim 45 , wherein a second subset of the set of variable nodes comprises degree-1 variable nodes.
47. The method of claim 45 , wherein each of the check nodes in the set of check nodes comprises a degree-1 check node.
48. The method of claim 17 , wherein the decoding process comprises obtaining a received signal vector of a first polar code.
49. The method of claim 48 , wherein the decoding process further comprises:
searching a codeword state space based on the received signal vector to identify a candidate codeword; and
constructing a decoded message based on the identified candidate codeword.
50. The method of claim 17 , wherein the current belief comprises a plurality of bits determined based on a subset of the plurality of processing nodes.
51. The method of claim 17 , wherein the estimated probability is based on an exclusive or operation performed on inputs to at least one of the processing nodes in the plurality of processing nodes.
52. The method of claim 17 , wherein at least one of the processing nodes in the plurality of processing nodes returns the current belief without any change to the states of the predetermined subset of the plurality of processing nodes.
53. The method of claim 17 , wherein each of the processing nodes in the plurality of processing nodes comprises an internal memory.
54. The method of claim 53 , wherein the internal memory of a particular processing node in the plurality of processing nodes stores a state of the particular processing node.
55. The method of claim 53 , wherein the internal memory of a particular processing node in the plurality of processing nodes stores a current belief of the particular processing node.
56. The method of claim 17 , wherein the plurality of processing nodes comprises a set of variable nodes, wherein the method further comprises generating, by at least one of the variable nodes in the set of variable nodes, a signal updating the states of the predetermined subset of the plurality of processing nodes.
57. The method of claim 17 , wherein the plurality of processing nodes comprises a set of variable nodes, wherein the method further comprises generating, by at least one of the variable nodes in the set of variable nodes, a signal updating the current belief.
58. The method of claim 17 , wherein the plurality of processing nodes comprises a set of check nodes, and wherein the method further comprises generating, by each of the check nodes in the set of check nodes, a signal having a predetermined value.
59. The method of claim 17 , further comprising performing a second decoding process using a second decoder, the second decoder comprising a second plurality of processing nodes, the second plurality of processing nodes comprising a set of variable nodes, a set of check nodes, and a set of associated edges;
indicating, by one of the check nodes in the set of check nodes, a parity check equation; and
indicating, by one of the variable nodes in the set of variable nodes, a codeword bit,
wherein, when the parity check equation includes the codeword bit, one of the edges in the set of associated edges connects the variable node to the check node.
60. The method of claim 59 , wherein each of the edges in the set of associated edges, that is associated with a particular variable node in the set of variable nodes, receives N inputs, wherein, for each of the edges, N-1 of the inputs of the N inputs are received from the particular variable node and one of the inputs of the N inputs is received from a bitstream generator.
61. The method of claim 60 , further comprising generating, by the bitstream generator, bits randomly with a given channel probability.
62. The method of claim 60 , further comprising:
calculating, for each of the edges, whether the N inputs of the edge are equal, and
generating an output corresponding to the edge, the output comprising a value of the N inputs when the N inputs are equal and the output comprising a randomly generated bit when the N inputs are not equal.
63. The method of claim 59 , further comprising receiving, by a particular check node of the check nodes in the set of check nodes, an input comprising a random bit, the states of the predetermined subset of the plurality of processing nodes, and the current belief; and
generating, by the particular check node, an output signal based on the random bit, the states, and the current belief.
64. The method of claim 17 , further comprising generating an output message by processing, using a second decoder, the valid codeword.
65. The method of claim 17 , wherein the probability comprises a log-likelihood ratio.
66. The method of claim 17 , wherein the probability is provided in a signal provided by at least one of the processing nodes of the plurality of processing nodes.
67. The method of claim 17 , further comprising decoding, by the predetermined subset of the plurality of processing nodes, a portion of the received digital data.
68. The method of claim 17 , wherein the predetermined subset of the plurality of processing nodes comprises at least one variable node.
69. The method of claim 17 , wherein the predetermined subset of the plurality of processing nodes comprises at least one check node.
70. The method of claim 17 , wherein estimating the probability associated with the predetermined portion of the decoding process is further in dependence upon a partial decoding of the received digital data.
71. The method of claim 17 , wherein estimating the probability associated with the predetermined portion of the decoding process is further in dependence upon a decoding of a portion of the received digital data.
72. The method of claim 17 , wherein the predetermined portion of the decoding process comprises performing a check operation calculated based on the states of a predetermined subset of the plurality of processing nodes.
73. The method of claim 17 , wherein the predetermined portion of the decoding process comprises performing an equality check operation calculated based on the states of a predetermined subset of the plurality of processing nodes.
74. The method of claim 17 , further comprising determining each of the candidate codewords in the list of candidate codewords using, for each of the candidate codewords, a distinct instance of the decoder.
75. A device comprising:
a decoder for decoding received digital data according to a decoding process comprising a plurality of processing nodes,
the decoder comprising an estimator for estimating a probability associated with a predetermined portion of the decoding process in dependence upon the state of a predetermined subset of the plurality of processing nodes and a current belief relating to the decoding process, the estimator comprising at least a portion of the plurality of processing nodes;
the plurality of processing nodes operable to:
generate a list of candidate codewords, for each codeword in the list of candidate codewords, estimating a probability associated with a predetermined portion of a decoding process in dependence upon states of a predetermined subset of the plurality of processing nodes and a current belief relating to the decoding process and calculating decision data for each of the processing nodes of the plurality of processing nodes;
for each codeword in the list of candidate codewords, determine a weight based on the decision data for each or the processing nodes associated with the codeword; and
select, as decoded digital data, a valid codeword from the list of candidate codewords, the valid codeword selected based on the weights for the codewords in the list of candidate codewords.
76. The device of claim 75 , wherein each candidate codeword is generated in an independent decoding attempt.
77. The device of claim 76 , wherein the independent decoding attempts are calculated in parallel.
78. The device of claim 76 , wherein the independent decoding attempts are calculated in sequence.
79. The device of claim 76 , wherein the independent decoding attempts are calculated until an iteration budget is exceeded.
80. The device of claim 75 , wherein the weight comprises a parity of at least one of the processing nodes of the plurality of processing nodes.
81. The device of claim 75 , wherein the weight comprises a sign bit for one of the processing nodes of the plurality of processing nodes.
82. The device of claim 75 , wherein the weight comprises a sign bit for a predetermined portion of the decoding process.
83. The device of claim 75 , wherein the weight comprises a random component.
84. The device of claim 75 , wherein the decision data is further based on the estimated probability.
85. The device of claim 75 , wherein the decision data is further based on the states of a predetermined subset of the plurality of processing nodes.
86. The device of claim 75 , wherein the decision data is further based on the current belief.
87. The device of claim 75 , wherein the weight comprises a syndrome weight.
88. The device of claim 75 , wherein the processing nodes are further operable to:
provide a plurality of check nodes forming a first predetermined portion of the plurality of processing nodes;
provide a plurality of variable nodes forming a second predetermined portion of the plurality of processing nodes; and
determine a parity check relating to a predetermined subset of the plurality of check nodes in dependence upon a level of agreement between a predetermined subset of the plurality of variable nodes.
89. The device of claim 75 , wherein the decoder comprises a polar decoder.
90. The device of claim 89 , wherein the polar decoder decodes the received digital data based on list decoding of at least one candidate codeword.
91. The device of claim 89 , further comprising a second decoder, the second decoder comprising a Low-Density Parity-Check (LDPC) decoder.
92. The device of claim 75 , wherein the decoder comprises a Low-Density Parity-Check (LDPC) decoder.
93. The device of claim 75 , wherein the plurality of processing nodes comprises a set of check nodes and a set of variable nodes.
94. The device of claim 93 , wherein the current belief is determined based on an output of at least one of the check nodes in the set of check nodes.
95. The device of claim 93 , wherein the number of check nodes in the set of check nodes is less than the number of variable nodes in the set of variable nodes.
96. The device of claim 93 , wherein the probability is provided in a signal provided by at least one of the variable nodes in the set of variable nodes.
97. The device of claim 93 , wherein the probability is provided in a signal provided by at least one of the check nodes in the set of check nodes.
98. The device of claim 75 , wherein the processing nodes are further operable to:
divide the received digital data into a first set of digital data and a second set of digital data;
decode the first set of digital data using a first subset of the plurality of processing nodes to obtain a first decoded result;
decode the second set of digital data using a second subset of the plurality of processing nodes and a belief determined based on the first decoded result to obtain a second decoded result; and
construct a decoded message based on the first decoded result and the second decoded result.
99. The device of claim 75 , wherein the processing nodes are further operable to receive the digital data via a communication channel having data-corrupting noise present in the communication channel.
100. The device of claim 75 , wherein the processing nodes are further operable to:
during the generating of the list of candidate codewords, detect an error in a candidate codeword in the list of candidate codewords; and
remove the candidate codeword having the detected error from the list of candidate codewords.
101. The device of claim 75 , wherein:
the decoding process comprises following distinct decoding paths within the plurality of processing nodes; and
the plurality of processing nodes comprising a set of variable nodes, a set of check nodes distinct from the set of variable nodes, and a plurality of associated edges, wherein a subset of the plurality of associated edges connects a variable node in the set of variable nodes to a check node in the set of check nodes.
102. The device of claim 101 , wherein the distinct decoding paths comprise variable nodes in the set of variable nodes, check nodes in the set of check nodes, and associated edges connecting a particular variable node of the set of variable nodes to a particular check node of the set of check nodes.
103. The device of claim 101 , wherein a first subset of the set of variable nodes comprises degree-3 variable nodes.
104. The device of claim 103 , wherein a second subset of the set of variable nodes comprises degree-1 variable nodes.
105. The device of claim 103 , wherein each of the check nodes of the set of check nodes comprises a degree-1 check node.
106. The device of claim 75 , wherein the decoding process comprises obtaining a received signal vector of a first polar code.
107. The device of claim 106 , wherein the processing nodes are further operable;
search a codeword state space based on the received signal vector to identify a candidate codeword; and
construct a decoded message based on the identified candidate codeword.
108. The device of claim 75 , wherein the current belief comprises a plurality of bits determined based on a subset of the plurality of processing nodes.
109. The device of claim 75 , wherein the estimated probability is determined based on an exclusive or operation performed on inputs to at least one processing node in the plurality of processing nodes.
110. The device of claim 75 , wherein at least one of the processing nodes in the plurality of processing nodes returns the current belief without any change to the states of the predetermined subset of the plurality of processing nodes.
111. The device of claim 75 wherein each processing node in the plurality of processing nodes comprises an internal memory.
112. The device of claim 111 , wherein the internal memory of a particular processing node in the plurality of processing nodes stores a state of the particular processing node.
113. The device of claim 111 , wherein the internal memory of a particular processing node in the plurality of processing nodes stores a current belief of the particular processing node.
114. The device of claim 75 , wherein the plurality of processing nodes comprises a set of variable nodes, wherein at least one variable node in the set of variable nodes generates a signal updating a state of the predetermined subset of the plurality of processing nodes.
115. The device of claim 75 , wherein the plurality of processing nodes comprises a set of variable nodes, wherein at least one variable node in the set of variable nodes generates a signal updating the current belief.
116. The device of claim 75 , wherein the plurality of processing nodes comprises a set of check nodes, wherein each check node in the set of check nodes generates a signal having a predetermined value.
117. The device of claim 75 , further comprising a second decoder comprising a second plurality of processing nodes that performs a second decoding process, wherein the second plurality of processing nodes comprises a set of variable nodes, a set of check nodes, and a set of associated edges, wherein an edge connects a variable node to a check node when a codeword bit indicated in the variable node is included in a parity check equation indicated by the check node.
118. The device of claim 117 , wherein each edge in a variable node receives N inputs, where N-1 inputs are received from the variable node and one input is received from a bitstream generator.
119. The device of claim 118 , wherein the bitstream generator generates bits randomly with a given channel probability.
120. The device of claim 118 , wherein each edge calculates whether its inputs are equal and generates an output, the output comprising a value of the inputs when the inputs are equal and the output comprising a randomly generated bit when the inputs are not equal.
121. The device of claim 117 , wherein a check node in the set of check nodes receives an input comprising a random bit, the states of a predetermined subset of the plurality of processing nodes, and the current belief; and
the check node generates an output signal based on the random bit, the states, and the current belief.
122. The device of claim 75 , further operable to generate an output message by processing, using a second decoder, the valid codeword.
123. The device of claim 75 , wherein the probability comprises a log-likelihood ratio.
124. The device of claim 75 , wherein the probability is provided in a signal provided by at least one of the plurality of processing nodes.
125. The device of claim 75 , wherein the predetermined subset of the plurality of processing nodes comprises at least one processing node that decodes a portion of the received digital data.
126. The device of claim 75 , wherein the predetermined subset of the plurality of processing nodes comprises at least one variable node.
127. The device of claim 75 , wherein the predetermined subset of the plurality of processing nodes comprises at least one check node.
128. The device of claim 75 , wherein the predetermined portion of the decoding process comprises a partial decoding of the received digital data.
129. The device of claim 75 , wherein the predetermined portion of the decoding process comprises a decoding of a portion of the received digital data.
130. The device of claim 75 , wherein the predetermined portion of the decoding process comprises a check operation calculated based on the states of a predetermined subset of the plurality of processing nodes.
131. The device of claim 75 , wherein the predetermined portion of the decoding process comprises an equality check operation calculated based on the states of a subset of the plurality of processing nodes.
132. The device of claim 75 , further operable to determine each of the candidate codewords in the list of candidate codewords using a distinct instance of the decoder.