IP Library Granted Patent US 10,727,874
Granted Patent B2
US 10,727,874 · App. 16/041,642 · Granted Jul 28, 2020

Non-concatenated FEC codes for ultra-high speed optical transport networks

Inventors: Damian Alfonso Morero (Santa Clara, CA); Mario Alejandro Castrillon (Santa Clara, CA); Matias German Schnidrig (Santa Clara, CA); Mario Rafael Hueda (Santa Clara, CA)
Assignee: INPHI CORPORATION
H03M13/616H03M13/112H03M13/116H03M13/1137H03M13/6577
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,727,874
App. No.
16/041,642
Granted
Jul 28, 2020
Kind
B2
Abstract

A decoder performs forward error correction based on quasi-cyclic regular column-partition low density parity check codes. A method for designing the parity check matrix reduces the number of short-cycles of the matrix to increase performance. An adaptive quantization post-processing technique further improves performance by eliminating error floors associated with the decoding. A parallel decoder architecture performs iterative decoding using a parallel pipelined architecture.

Claims (58)

1. A method for forward error correction with a decoder using a parity check matrix comprising a plurality of sub-matrices, the method comprising:

receiving, by a plurality of check node processing units of the decoder, a forward error correction codeword;

performing, by each of the check node processing units in parallel, a check node computation on the forward error correction codeword using a different row of the parity check matrix;

wherein performing each check node computation includes

computing, by an input computation stage of the check node processing unit, initial computation values from a plurality of variable node messages;

wherein computing the initial computation values includes

determining, by a minimum computation unit of the input computation stage, a first minimum value and a second minimum value of the variable node messages;

determining, by the minimum computation unit, an identity of a variable node corresponding to the first minimum value; and

determining, by a sign product computation unit, a product of signs of the variable node messages received from the plurality of variable nodes messages;

receiving, by a pipelined message memory having at least two memory stages, the initial computation values at an initial memory stage of the message memory;

shifting, by the pipelined message memory, the initial computation values to a subsequent memory stage in the pipelined message memory at a predefined clock interval; and

receiving, by an output computation stage, the initial computation values from a final memory stage of the pipelined message memory and to generate a plurality of check node output messages;

receiving, by each of a plurality of variable node processing units, the plurality of check node output messages;

performing, by each of the plurality of variable node processing units, variable node update computations corresponding to different columns belonging to a same sub-matrix of the parity check matrix to generate the variable node messages;

receiving, by an output circuit, the variable node messages; and

generating, by the output circuit, a decoded codeword based on the variable node messages.

2. The method of claim 1 wherein performing each check node computation further includes

computing, by the input computation stage at a given time instance, initial computation values associated with a second iteration of an iterative decoding algorithm applied to a first codeword;

storing, by the pipelined message memory, initial computation values for a first iteration of the iterative decoding algorithm applied to a second codeword; and

computing, by the output computation stage, a plurality of check node output messages associated with a first iteration of the iterative decoding algorithm applied to the first codeword.

3. The method of claim 1 wherein the parity check matrix is row-regular and column-regular such that the parity check matrix has a first same number of 1s in each row and a second same number of 1s in each column.

4. The method of claim 1 wherein the parity check matrix is quasi-cyclic such that a circular shift of a valid codeword by an integer amount results in another valid codeword.

5. The method of claim 1 wherein the parity check matrix comprises an array of circulant sub-matrices, wherein each of the circulant sub-matrices comprises a square matrix in which a first row is a cyclic shift of a last row, and each other row is a cyclic shift of a row directly above it.

6. The method of claim 1 wherein the parity check matrix comprises an array of circulants, each circulant having 2048 rows and 2048 columns of values, and each circulant having two non-zero diagonals, wherein each of the array of circulants comprises a square matrix in which a first row is a cyclic shift of a last row, and each other row is a cyclic shift of a row directly above it, wherein the array of circulants comprises one of a 2×12 array, a 2×13 array, and a 2×14 array.

7. The method of claim 1 wherein the forward error correcting codeword has a length comprising a first integer multiple of a power of 2, and wherein the decoded codeword has an effective code dimension of a second integer multiple of the power of 2.

8. The method of claim 7 wherein generating, by the output circuit, the decoded codeword includes generating the decoded codeword to have a padded code dimension, and discarding a plurality of symbols of the decoded codeword to reduce a code-dimension from a padded code dimension to the effective code dimension.

9. The method of claim 8 wherein the forward error correcting codeword has a code-length of 24576 symbols, a padded code dimension of 20482 symbols, and an effective code dimension of 20480.

10. The method of claim 8 wherein the forward error correcting codeword has a code-length of 26624 symbols, a padded code dimension of 22530 symbols, and an effective code dimension of 22528.

11. The method of claim 8 wherein the forward error correcting codeword has a code-length of 28672 symbols, a padded code dimension of 24578 symbols, and an effective code dimension of 24576.

12. The method of claim 1 wherein the forward error correcting codeword has an expansion ratio of 12/10, wherein the expansion ratio comprises a ratio of a code-length to an effective code dimension.

13. The method of claim 1 wherein the forward error correcting codeword has an expansion ratio of 13/11, wherein the expansion ratio comprises a ratio of a code-length to an effective code dimension.

14. The method of claim 1 wherein the forward error correcting codeword has an expansion ratio of 14/12, wherein the expansion ratio comprises a ratio of a code-length to an effective code dimension.

15. The method of claim 1 further comprising

determining, by a control unit, if an activation criteria is met and responsive to the activation criteria being met, control the decoder to adaptively quantize the variable node messages.

16. The method of claim 15 further comprising

adaptively quantizing, by the control unit, the variable node messages by scaling the variable node messages by scaling factors to increase a representation range given a fixed number of bits.

17. The method of claim 1 wherein performing each check node computation further includes

storing, by a sign FIFO unit, the signs of the variable node messages from the plurality of variable node processing units; and

computing, by the output computation stage, the plurality of check node messages based on the signs of the variable node messages from the sign FIFO unit, the first and second minimum values, an identity of the variable node processing unit circuit corresponding to the first minimum value, and a product of the signs of the variable node messages.

18. A method for forward error correction with a decoder using a parity check matrix comprising a plurality of sub-matrices, the method comprising:

receiving, by a plurality of check node processing units of the decoder, a forward error correction codeword;

performing, by each of the check node processing units in parallel, a check node computation on the forward error correction codeword using a different row of the parity check matrix;

wherein performing each check node computation includes

computing, by an input computation stage of the check node processing unit, initial computation values from a plurality of variable node messages;

receiving, by a pipelined message memory having at least two memory stages, the initial computation values at an initial memory stage of the message memory;

shifting, by the pipelined message memory, the initial computation values to a subsequent memory stage in the pipelined message memory at a predefined clock interval; and

receiving, by an output computation stage, the initial computation values from a final memory stage of the pipelined message memory and to generate a plurality of check node output messages;

receiving, by each of a plurality of variable node processing units, the plurality of check node output messages;

performing, by each of the plurality of variable node processing units, variable node update computations corresponding to different columns belonging to a same sub-matrix of the parity check matrix to generate the variable node messages;

receiving, by an output circuit, the variable node messages; and

generating, by the output circuit, a decoded codeword based on the variable node messages.

19. The method of claim 18 wherein performing each check node computation further includes

computing, by the input computation stage at a given time instance, initial computation values associated with a second iteration of an iterative decoding algorithm applied to a first codeword;

storing, by the pipelined message memory, initial computation values for a first iteration of the iterative decoding algorithm applied to a second codeword; and

computing, by the output computation stage, a plurality of check node output messages associated with a first iteration of the iterative decoding algorithm applied to the first codeword.

20. The method of claim 18 wherein performing each check node computation further includes

storing, by a sign FIFO unit, the signs of the variable node messages from the plurality of variable node processing units; and

computing, by the output computation stage, the plurality of check node messages based on the signs of the variable node messages from the sign FIFO unit, the first and second minimum values, an identity of the variable node processing unit circuit corresponding to the first minimum value, and a product of the signs of the variable node messages.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2021
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE LTD.
Reel/Frame 057336/0873 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2021
From: MARVELL TECHNOLOGY CAYMAN I
To: CAVIUM INTERNATIONAL
Reel/Frame 057279/0519 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2021
From: INPHI CORPORATION
To: MARVELL TECHNOLOGY CAYMAN I
Reel/Frame 056649/0823 →