Low density parity check (LDPC) code decoder using min*, min**, max* or max** and their respective inverses
First Claim
1. A Low Density Parity Check (LDPC) code Log-Likelihood Ratio (LLR) decoder that is operable to decode a bit within a signal, the decoder comprising:
- an initialization functional block that computes a Log-Likelihood ratio (LLR) of a channel metric and assigns an initial value of a variable node extrinsic information value to be the LLR of the channel metric, the channel metric corresponding to a communication channel over which the signal is communicated;
a check node processing functional block that computes a check node extrinsic information value using the value of the variable node extrinsic information value by employing min* processing, min** processing, max* processing, or max** processing;
a variable node processing functional block that computes a variable node extrinsic information value using the value of the variable node extrinsic information value and the check node extrinsic information value;
wherein the variable node processing functional block provides the variable node extrinsic information value as feedback to the check node processing functional block to perform a plurality of decoding iterations; and
a variable bit estimation functional block that estimates a value of the bit within the signal using the variable node extrinsic information value.
6 Assignments
0 Petitions
Accused Products
Abstract
Low Density Parity Check (LDPC) code decoder using min*, min**, max* or max** and their respective inverses. For the first time, min* processing is demonstrated for use in decoding LDPC-coded signals. In addition, max*, min**, or max** (and their respective inverses) may also be employed when performing calculations that are required to perform decoding of signals coded using LDPC code. These new parameters may be employed to provide for much improved decoding processing for LDPC codes when that decoding involves the determination of a minimal and/or maximal value, or a minimal and/or maximal log corrected value, from among a number of possible values. The total number of processing steps employed within the decoding of an LDPC-coded signal is significantly reduced be employing the min*, max*, min**, or max** (and their respective inverses) decoding processing described herein.
-
Citations
138 Claims
-
1. A Low Density Parity Check (LDPC) code Log-Likelihood Ratio (LLR) decoder that is operable to decode a bit within a signal, the decoder comprising:
-
an initialization functional block that computes a Log-Likelihood ratio (LLR) of a channel metric and assigns an initial value of a variable node extrinsic information value to be the LLR of the channel metric, the channel metric corresponding to a communication channel over which the signal is communicated;
a check node processing functional block that computes a check node extrinsic information value using the value of the variable node extrinsic information value by employing min* processing, min** processing, max* processing, or max** processing;
a variable node processing functional block that computes a variable node extrinsic information value using the value of the variable node extrinsic information value and the check node extrinsic information value;
wherein the variable node processing functional block provides the variable node extrinsic information value as feedback to the check node processing functional block to perform a plurality of decoding iterations; and
a variable bit estimation functional block that estimates a value of the bit within the signal using the variable node extrinsic information value. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A forward/backward Low Density Parity Check (LDPC) code decoder that is operable to decode a bit within a signal, the decoder comprising:
-
an initialization functional block that computes a logarithmic metric value of the signal;
a forward and backward check node processing functional block that employs min* processing or max* processing to calculate a plurality of forward metric values (alphas) and a plurality of backward metric values (betas) using an initial plurality of variable node extrinsic information values;
an extrinsic information value calculation functional block that employs min* processing or max* processing to calculate a plurality of check node extrinsic values using the plurality of forward metric values (alphas) and the plurality of backward metric values (betas);
wherein the extrinsic information value calculation functional block also employs min* processing or max* processing to calculate a plurality of variable node extrinsic values using the logarithmic metric value of the signal and the plurality of check node extrinsic values;
wherein the extrinsic information value calculation functional block that sums a variable node extrinsic value of the plurality of variable node extrinsic values and a check node extrinsic value of the plurality of check node extrinsic values;
wherein the extrinsic information value calculation functional block provides the sum generated by the extrinsic information value calculation functional block as feedback to the forward and backward check node processing functional block to perform a plurality of decoding iterations; and
a variable bit estimation functional block that estimates a value of the bit within the signal using the sum generated by the extrinsic information value calculation functional block. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31)
-
-
32. A Low Density Parity Check (LDPC) code Log-Likelihood Ratio (LLR) decoding method that decodes an LDPC coded signal, the method comprising:
-
computing a LLR of a channel metric;
during a first decoding iteration, setting a variable node extrinsic information to be the LLR of the channel metric;
identifying a set of check node edges;
computing a check node extrinsic information value using the variable node extrinsic information value by employing min* processing, min** processing, max* processing, or max** processing;
identifying a set of variable node edges;
computing a variable node extrinsic information value using the LLR of the channel metric and the check node extrinsic information value;
feeding back the variable node extrinsic information value for use in computing a subsequent check node extrinsic information value when performing iterative decoding; and
estimating a variable bit value using the variable node extrinsic information value. - View Dependent Claims (33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51)
-
-
52. A Low Density Parity Check (LDPC) code forward/backward decoding method, the method comprising:
-
retrieving a ratio of logarithmic metrics;
calculating a logarithmic metric value of a signal using the ratio of logarithmic metrics;
generating a plurality of initial values for a plurality of forward metric values (alphas) and a plurality of backward metric values (betas);
calculating a plurality of values for the plurality of forward metric values (alphas) by performing min* processing of an initial plurality of variable node extrinsic information values;
calculating a plurality of values for the plurality of backward metric values (betas) by performing min* processing or max* processing of an initial plurality of variable node extrinsic information values;
calculating a plurality of check node extrinsic information values by performing min* processing on the plurality of forward metric values (alphas) and the plurality of backward metric values (betas);
calculating a plurality of variable node extrinsic information values by performing min* processing or max* processing on the logarithmic metric value of the signal and the plurality of check node extrinsic values;
summing the plurality of check node extrinsic information values and the plurality of variable node extrinsic information values thereby generating a sum;
feeding back the sum of the plurality of check node extrinsic information values and the plurality of variable node extrinsic information values for use in calculating a subsequent plurality of values for the plurality of forward metric values (alphas) when performing iterative decoding; and
estimating a variable bit value using the sum. - View Dependent Claims (53, 54, 55, 56, 57)
-
-
58. A decoder that is operable to perform min** processing by employing min**−
- and min**+ processing, comprising;
a min**+ functional block that performs min**+ processing on a plurality of min** inputs thereby generating an intermediate variable; and
a min**−
functional block that performs min**−
processing on each of the min** inputs of the plurality of min** inputs and the intermediate variable thereby generating a plurality of min** outputs. - View Dependent Claims (59, 60, 61, 62, 63, 64, 65, 66, 67)
- and min**+ processing, comprising;
-
68. A decoder that is operable to perform min** processing by employing min**−
- and min**+ processing, comprising;
a min**+ functional block that sequentially performs min**+ processing on two min** input elements, the two min** input elements selected from a plurality of min** inputs, thereby generating an intermediate variable; and
a min**−
functional block that sequentially performs min**−
processing on two elements, the two elements comprising one of the min** inputs of the plurality of min** inputs and the intermediate variable, thereby generating a plurality of min** outputs; and
wherein the min**+ functional block performs a number of min**+ processes, the number of min**+ processes being less than a number of min** inputs of the plurality of min** inputs;
the min**−
functional block performs a number of min**−
processes, the number of min**−
processes being equal to the number of min** inputs of the plurality of min** inputs; and
the min**+ processing comprises an inverse function of the min**−
processing. - View Dependent Claims (69, 70, 71, 72)
- and min**+ processing, comprising;
-
73. A decoder that is operable to perform max** processing by employing max**−
- and max**+ processing, comprising;
a max**+ functional block that performs max**+ processing on a plurality of max** inputs thereby generating an intermediate variable; and
a max**−
functional block that performs max**−
processing on each of the max** inputs of the plurality of max** inputs and the intermediate variable thereby generating a plurality of max** outputs. - View Dependent Claims (74, 75, 76, 77, 78, 79, 80, 81)
- and max**+ processing, comprising;
-
82. A decoder that is operable to perform max** processing by employing max**−
- and max**+ processing, comprising;
a max**+ functional block that sequentially performs max**+ processing on two max** input elements, the two max** input elements selected from a plurality of max** inputs, thereby generating an intermediate variable; and
a max**−
functional block that sequentially performs max**−
processing on two elements, the two elements comprising one of the max** inputs of the plurality of max** inputs and the intermediate variable, thereby generating a plurality of max** outputs; and
wherein the max**+ functional block performs a number of max**+ processes, the number of max**+ processes being less than a number of max** inputs of the plurality of max** inputs;
the max**−
functional block performs a number of max**−
processes, the number of max**−
processes being equal to the number of max** inputs of the plurality of max** inputs; and
the max**+ processing comprises an inverse function of the max**−
processing. - View Dependent Claims (83, 84, 85, 86)
- and max**+ processing, comprising;
-
87. A min** processing method that employs min**−
- and min**+ processing, the method comprising;
performing min**+ processing on a plurality of min** inputs thereby generating an intermediate variable; and
performing min**−
processing on each of the min** inputs of the plurality of min** inputs and the intermediate variable thereby generating a plurality of min** outputs. - View Dependent Claims (88, 89, 90, 91, 92, 93, 94, 95, 96)
- and min**+ processing, the method comprising;
-
97. A max** processing method that employs max**−
- and max**+ processing, the method comprising;
performing max**+ processing on a plurality of max** inputs thereby generating an intermediate variable; and
performing max**−
processing on each of the max** inputs of the plurality of max** inputs and the intermediate variable thereby generating a plurality of max** outputs. - View Dependent Claims (98, 99, 100, 101, 102, 103, 104, 105, 106)
- and max**+ processing, the method comprising;
-
107. A decoder that performs min* check node processing when decoding an LDPC (Low Density Parity Check) coded signal, the decoder comprising:
-
a check node processing functional block that updates a check node extrinsic information value by employing min* processing;
a min* functional block, whose operation is directed by the check node processing functional block, that performs the min* processing on a first value and a second value;
wherein the min* functional block determines a first sign function value using the first value;
wherein the min* functional block determines a second sign function value using the second value;
wherein the min* functional block determines a minimum value from among the first value and the second value;
wherein the min* functional block retrieves from a ROM (Read Only Memory) a predetermined logarithmic correction factor that is an absolute value of a difference between the first value and the second value;
wherein the min* functional block subtracts the predetermined logarithmic correction factor from the minimum value thereby generating a min* resultant; and
wherein the min* functional block multiplies the first sign function value by the second sign function value and by the min* resultant. - View Dependent Claims (108, 109)
-
-
110. A decoder that performs min* check node processing when decoding an LDPC (Low Density Parity Check) coded signal, the decoder comprising:
-
a check node processing functional block that updates a check node extrinsic information value by employing min* processing;
a min* functional block, whose operation is directed by the check node processing functional block, that performs the min* processing on a first value and a second value;
wherein the min* functional block determines a first sign function value using the first value;
wherein the min* functional block determines a second sign function value using the second value;
wherein the min* functional block determines a minimum value from among the first value and the second value;
wherein the min* functional block retrieves from memory a predetermined logarithmic correction factor that corresponds to the first value and the second value; and
wherein the min* functional block calculates the updated check node extrinsic information value using the first sign function value, the second sign function value, the minimum value, and the predetermined logarithmic correction factor that is retrieved from memory. - View Dependent Claims (111, 112, 113, 114, 115, 116, 117)
-
-
118. A decoder that performs min* check node processing when decoding an LDPC (Low Density Parity Check) coded signal, the decoder comprising:
-
a check node processing functional block that updates a check node extrinsic information value by employing min* processing;
a min* functional block, whose operation is directed by the check node processing functional block, that performs the min* processing on a first value and a second value;
wherein the min* functional block determines a first sign function value using the first value;
wherein the min* functional block determines a second sign function value using the second value;
wherein the min* functional block determines a min* resultant using the first value and the second value; and
wherein the min* functional block calculates the updated check node extrinsic information value using the first sign function value, the second sign function value, and the min* resultant. - View Dependent Claims (119, 120, 121, 122, 123, 124)
-
-
125. A Low Density Parity Check (LDPC) code Log-Likelihood Ratio (LLR) decoder that is operable to decode a bit within a signal, the decoder comprising:
-
an initialization functional block that computes a Log-Likelihood ratio (LLR) of a channel metric and assigns an initial value of a variable node extrinsic information value to be the LLR of the channel metric, the channel metric corresponding to a communication channel over which the signal is communicated;
a check node processing functional block that computes a check node extrinsic information value using the value of the variable node extrinsic information value by employing min* processing;
a variable node processing functional block that computes a variable node extrinsic information value using the value of the variable node extrinsic information value and the check node extrinsic information value;
wherein the variable node processing functional block provides the variable node extrinsic information value as feedback to the check node processing functional block to perform a plurality of decoding iterations;
a variable bit estimation functional block that estimates a value of the bit within the signal using the variable node extrinsic information value;
wherein the check node processing functional block is operable to update the check node extrinsic information value by directing a min* functional block to perform min* processing on a first value and a second value;
wherein the min* functional block determines a first sign function value using the first value;
wherein the min* functional block determines a second sign function value using the second value;
wherein the min* functional block determines a minimum value from among the first value and the second value;
wherein the min* functional block retrieves from a ROM (Read Only Memory) a predetermined logarithmic correction factor that is an absolute value of a difference between the first value and the second value;
wherein the min* functional block subtracts the predetermined logarithmic correction factor from the minimum value thereby generating a min* resultant; and
wherein the min* functional block multiplies the first sign function value by the second sign function value and by the min* resultant. - View Dependent Claims (126, 127)
-
-
128. A method for updating a check node extrinsic information value by performing min* check node processing, the method comprising:
-
receiving a first value and a second value;
determining a first sign function value using the first value;
determining a second sign function value using the second value;
determining a minimum value from among the first value and the second value;
retrieving from a ROM (Read Only Memory) a predetermined logarithmic correction factor that is an absolute value of a difference between the first value and the second value;
subtracting the predetermined logarithmic correction factor from the minimum value thereby generating a min* resultant; and
multiplying the first sign function value by the second sign function value and by the min* resultant. - View Dependent Claims (129, 130)
-
-
131. A method for updating a check node extrinsic information value by performing min* check node processing, the method comprising:
-
receiving a first value and a second value;
determining a first sign function value using the first value;
determining a second sign function value using the second value;
determining a minimum value from among the first value and the second value;
retrieving from memory a predetermined logarithmic correction factor that corresponds to the first value and the second value; and
calculating the updated check node extrinsic information value using the first sign function value, the second sign function value, the minimum value, and the predetermined logarithmic correction factor that is retrieved from memory. - View Dependent Claims (132, 133, 134, 135, 136, 137, 138)
-
Specification