IP Library Granted Patent US 10,608,676
Granted Patent B2
US 10,608,676 · App. 15/634,312 · Granted Mar 31, 2020

Bit-alignment testing for obtaining FEC code lock

Inventor: Soren Laursen (Denmark, DK)
Assignee: Intel Corporation
H03M13/3944H03M13/333H03M13/3723H03M13/1515
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,608,676
App. No.
15/634,312
Granted
Mar 31, 2020
Kind
B2
Abstract

Methods and apparatus disclosed herein may be used to establish framing more efficiently in communication protocols with block-coded forward error correction. Such protocols generally involve the check of different bit-alignments searching for positions that yield zero syndromes. The search can be undesirably slow, particularly in the presence of received errors. The presently-disclosed bit-alignment testing technique reduces this search time by checking the syndrome at each data word as if that data word was the last of a code. In other words, the word positions are effectively checked without a prior assumption as to which words are the first and last of the code. This reduces the task to the number of different bit-alignments possible within a single data word, rather than the number of bit-alignments possible in a complete FEC code. In one implementation, the lock time is reduced by approximately 50 times when compared to a straightforward solution.

Claims (72)

1. A decoder for decoding an input data stream, the decoder comprising:

a data input for receiving data words;

a code lock module within control logic of a syndrome evaluator that is configured to receive the data words from the data input;

registers that hold values that are accessible by the code lock module; and

memory that holds array values that are accessible by the code lock module,

wherein the code lock module is configured to initially set a count to zero, and

wherein the code lock module is configured, for each data word of w symbols received, to set a contribution register value to be a contribution to a syndrome from the w symbols in the data word; set a syndrome shift register value to be a syndrome work register value shifted by w symbol positions; set the syndrome work register value to be a result of an exclusive-or operation applied to the syndrome shift register value and the contribution register value; and set an array value at a location in the memory associated with the count to the syndrome work register value.

2. The decoder of claim 1 , wherein the code lock module is further configured to set a syndrome register value to be the syndrome work register value modified as if additional zero'ed data had been received up to the maximum of 2 m −1 symbols, and wherein m is a number of bits per symbol.

3. The decoder of claim 2 , wherein the code lock module is further configured to:

determine whether the count is greater than or equal to n divided by w, where n is the number of symbols in a forward error correction code;

when the count is determined to be greater than or equal to n divided by w, apply the exclusive-or operation to the syndrome register value and the array value to obtain a match result; and

when the match result is all zeroes, indicate that a match is found for a bit-alignment such that the bit-alignment is to be further checked.

4. The decoder of claim 3 , wherein the code lock module is further configured to:

determine whether the count is greater than or equal to twice n divided by w;

when the count is determined to be greater than or equal to twice n divided by w, indicate that no match is found for the bit-alignment, apply a bit-slip to obtain a new bit-alignment, and test the new bit-alignment; and

otherwise, when the count is not determined to be greater than or equal to twice n divided by w, incrementing the count before processing a next received data word.

5. The decoder of claim 1 , wherein the code lock module is further configured to:

set a temporary register value to be the syndrome work register value padded up to a full length of the syndrome;

descramble the temporary register value using a scrambling syndrome register value to obtain a descrambled value; and

set a syndrome register value to be the descrambled value.

6. The decoder of claim 5 , wherein the code lock module is further configured to:

determine whether the count is greater than or equal to n divided by w, where n is the number of symbols in a forward error correction code;

when the count is determined to be greater than or equal to n divided by w, apply the exclusive-or operation to the syndrome register value and the array value to obtain a match result; and

when the match result is all zeroes, indicate that a match is found for a bit-alignment such that the bit-alignment is to be further checked.

7. The decoder of claim 6 , wherein the code lock module is further configured to:

determine whether the count is greater than or equal to twice n divided by w; and

when the count is determined to be greater than or equal to twice n divided by w, indicate that no match is found for the bit-alignment, apply a bit-slip to obtain a new bit-alignment, and test the new bit-alignment; and

otherwise, when the count is not determined to be greater than or equal to twice n divided by w, incrementing the count before processing a next received data word.

8. A method for testing a bit-alignment for code lock, the method comprising:

initially setting a count to zero;

for each data word of a number w of forward error correction (FEC) symbols received, setting a contribution register value to be a contribution to a syndrome from the w symbols in the data word;

after setting the contribution register value, setting a syndrome shift register value to be a syndrome work register value shifted by w symbol positions;

after setting the syndrome shift register value, setting the syndrome work register value to be a result of an exclusive-or operation applied to the syndrome shift register value and the contribution register value; and

after setting the syndrome work register value, setting an array value at a location in memory associated with the count to the syndrome work register value.

9. The method of claim 8 further comprising:

after setting the array value, setting a syndrome register value to be the syndrome work register value modified as if additional zero'ed data had been received up to the maximum of 2 m −1 symbols, where m is the number of bits per FEC symbol.

10. The method of claim 9 further comprising:

for each data word received, after setting the syndrome register value, determining whether the count is greater than or equal to n divided by w, where n is the number of symbols in a forward error correction code, and n is a multiple of w.

11. The method of claim 10 further comprising:

when the count is determined to be greater than or equal to n divided by w, applying the exclusive-or operation to the syndrome register value and the array value to obtain a match result, and,

when the match result is all zeroes, indicating that a match is found such that the bit-alignment is to be further checked.

12. The method of claim 11 further comprising:

determining whether the count is greater than or equal to twice n divided by w;

when the count is determined to be greater than or equal to twice n divided by w, indicating that no match is found for the bit-alignment, applying a bit-slip to obtain a new bit-alignment, and testing the new bit-alignment; and

otherwise, when the count is not determined to be greater than or equal to twice n divided by w, incrementing the count before processing a next received data word.

13. The method of claim 8 further comprising:

after setting the array value, setting a temporary register value to be the syndrome work register value modified as if additional zero'ed data had been received up to the maximum of 2 m −1 symbols, undoing effect of scrambling using a scrambling syndrome register value to obtain a descrambled value, and setting a syndrome register value to be the descrambled value, wherein m is a number of bits per FEC symbol.

14. The method of claim 13 further comprising:

for each data word received, after setting the syndrome register value, determining whether the count is greater than or equal to n divided by w, where n is the number of symbols in a forward error correction code.

15. The method of claim 14 further comprising:

when the count is determined to be greater than or equal to n divided by w, applying the exclusive-or operation to the syndrome register value and the array value to obtain a match result, and, when the match result is all zeroes, indicating that a match is found such that the bit-alignment is to be further checked.

16. The method of claim 15 further comprising:

determining whether the count is greater than or equal to twice n divided by w; and

when the count is determined to be greater than or equal to twice n divided by w, indicating that no match is found for the bit-alignment, applying a bit-slip to obtain a new bit-alignment, and testing the new bit-alignment; and

otherwise, when the count is not determined to be greater than or equal to twice n divided by w, incrementing the count before processing a next received data word.

17. The method of claim 8 , wherein the method is performed by a code lock module of a syndrome evaluator in a decoder.

18. An integrated circuit that receives a stream of data words, the integrated circuit comprising:

a data input for receiving the data words;

a code lock module within control logic of a syndrome evaluator that is configured to receive the data words from the data input;

registers that hold values that are accessible by the code lock module; and

memory means that holds array values that are accessible by the code lock module,

wherein the code lock module is configured to initially set a count to zero, and

wherein the code lock module is configured, for each data word of w symbols received, to:

set a contribution register value to be a contribution to a syndrome from the w symbols in the data word;

set a syndrome shift register value to be a syndrome work register value shifted by w symbol positions;

set the syndrome work register value to be a result of an exclusive-or operation applied to the syndrome shift register value and the contribution register value; and

set an array value in the memory means at a location associated with the count to the syndrome work register value.

19. The integrated circuit of claim 18 , wherein the code lock module is further configured to set a syndrome register value to be the syndrome work register value padded up to a full length of the syndrome.

20. The integrated circuit of claim 19 , wherein the code lock module is further configured to:

determine whether the count is greater than or equal to n divided by w, where n is the number of symbols in a forward error correction code;

when the count is determined to be greater than or equal to n divided by w, apply the exclusive-or operation to the syndrome register value and the array value to obtain a match result; and

when the match result is all zeroes, indicate that a match is found for a bit-alignment such that the bit-alignment is to be further checked.

Assignments (3)
SECURITY INTEREST Recorded Sep 12, 2025
From: ALTERA CORPORATION
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 073431/0309 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2024
From: INTEL CORPORATION
To: ALTERA CORPORATION
Reel/Frame 066353/0886 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 11, 2017
From: LAURSEN, SOREN
To: INTEL CORPORATION
Reel/Frame 042971/0224 →