US20030217320A1 - Cyclic redundancy check circuit for use with self-synchronous scramblers - Google Patents

Cyclic redundancy check circuit for use with self-synchronous scramblers Download PDF

Info

Publication number
US20030217320A1
US20030217320A1 US10/147,880 US14788002A US2003217320A1 US 20030217320 A1 US20030217320 A1 US 20030217320A1 US 14788002 A US14788002 A US 14788002A US 2003217320 A1 US2003217320 A1 US 2003217320A1
Authority
US
United States
Prior art keywords
bit
circuit
bit stream
error
gate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/147,880
Inventor
Steven Gorshe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsemi Storage Solutions Inc
Original Assignee
PMC Sierra Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by PMC Sierra Inc filed Critical PMC Sierra Inc
Priority to US10/147,880 priority Critical patent/US20030217320A1/en
Assigned to PMC-SIERRA, INC. reassignment PMC-SIERRA, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GORSHE, STEVEN SCOTT
Publication of US20030217320A1 publication Critical patent/US20030217320A1/en
Priority to US11/167,109 priority patent/US7426679B2/en
Priority to US11/167,122 priority patent/US7353446B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit

Definitions

  • This invention relates to the error detection and correction by a 16-bit Cyclic Redundancy Check (CRC-16) generation circuit.
  • CRC-16 Cyclic Redundancy Check
  • Cyclic Redundancy Check is an important aspect in the error-detecting capabilities of many protocols, such as the Ethernet local area network, protocol.
  • CRC provides a number of bits (usually 16 or 32) generated from, and appended to the end of, a block of data to provide error detection.
  • a message receiver generates a CRC from the block of data and compares it to the CRC appended to the received message. If the appended CRC matches the generated CRC, then there is a high probability that the received message has not been corrupted.
  • One standard 16-bit generator polynomial is represented by x 16 +x 12 +x 5 +1.
  • the polynomial represents the binary number 10001000000100001—a one bit is in positions 16 , 12 , 5 , and 0 .
  • the CRC is the remainder after binary (modulo 2 ) division of the message by the generator polynomial.
  • the 32-bit generator polynomial is represented by x 32 +x 26 +x 23 +x 22 +x 16 +x 12 +x 11 +x 10 +x 8 +x 7 +x 5 +x 4 +x 2 +x+1.
  • a 16-bit CRC generator polynomial is used with messages of less than 4 Kbytes.
  • a 32-bit CRC generator is used for messages up to 64 kbytes in length.
  • the CRC is usually performed by the data link protocol and a calculated CRC is appended to the end of the data link layer frame.
  • the CRC is calculated by performing a modulo 2 division of the data by a generator polynomial and recording the remainder after division.
  • the CRC is the only field which is by convention sent most significant bit first.
  • the first bit of the CRC-16 to be sent is the bit corresponding to position 16 in the CRC field, the most significant bit (MSB), and the last bit being the bit corresponding to position 0 in CRC field, the least significant bit (LSB).
  • GFP Generic Framing Procedure
  • ITU-T International Telecommunications Union—Telecommunications
  • GFP has been implemented as a generic mechanism to adapt traffic from higher-layer signals over a synchronous transport network.
  • the frame-mapped GFP enables a signal frame to be received and mapped in its entirety into one or more GFP frames.
  • the transparent GFP mapping involves decoding block-coded signal frames and then mapping the decoded signal frames into a fixed-length GFP frame, having only received a block-coded version of the signal frame.
  • the payload portion of the GFP frame Prior to transmitting a GFP frame, the payload portion of the GFP frame is normally scrambled. Frames are scrambled to protect a user from other malicious users who may try to cause loss of receiver synchronization at the physical layer.
  • frame-synchronized scramblers are utilized to create more physical layer transitions to aid timing recovery at the receiver. The frame-synchronized scrambler was added to make it much more difficult for a malicious user to defeat the effects of the frame synchronous scrambler.
  • a frame-synchronized scrambler is one in which the transmitted data is exclusive-ORed bit-by-bit with the output of a pseudo-random sequence generator with the sequence generator being reset to a known state at the beginning of every frame.
  • the frame-synchronized scramblers are very effective in increasing the transition density to an acceptable level for typical traffic.
  • One drawback of a frame-synchronized scrambler is that it is a known, relatively short (2 7 ⁇ 1) pseudo-random sequence and it is possible for a malicious subscriber to attempt to mimic this pattern within the data he sends. The result is that if the subscriber data lines up with the SONET/SDH scrambler correctly, a long string can occur with no transitions, which in turn can cause the receiver to fail. The phenomenon was observed with early ATM and POS systems and was addressed from the outset with GFP. The solution used for each of these three protocols is a self-synchronous scrambler over the payload region of the cell/frame.
  • a self-synchronous scrambler is one in which the data is exclusive-ORed with a delayed version of itself on a bit-by-bit basis.
  • the specific scrambler used for ATM, POS, and GFP exclusive-ORs the input data with scrambler output data after a 43 bit delay termed the scrambler polynomial.
  • the descrambler reverses the process by multiplying the received signal by the same scrambler polynomial.
  • the advantage to such a scrambler in this application is that it is very hard for a malicious user to duplicate due to its never having a known reset point.
  • the value of the scrambler state is a function of the previous data rather than the position of the data within the SONET/SDH frame.
  • the duplicated bit error hereinafter termed the “double bit error”
  • the present invention seeks to provide a circuit for detecting and correcting both single bit errors and double bit errors based on a plurality of conditions being met.
  • the present invention further seeks to provide a probability of error detection that is equivalent to the probability of error detection had the double errors not been introduced by the descrambler.
  • the present invention provides a circuit for detecting and correcting errors in a bit stream.
  • the circuit consist of a plurality of circuit elements, an least operation circuit means, and at least two logic gates.
  • the logic gates receive inputs from the plurality of circuit elements.
  • the plurality of circuit elements are coupled to receive and store a portion of a bit stream.
  • the operation circuit elements perform bitwise operations on the contents of at least two of the circuit elements.
  • the bitwise operations are dictated by a CRC polynomial and are used to perform the CRC error detection division operation.
  • each circuit element corresponds to a bit in a bit error pattern
  • the logic gates determine if the contents of the circuit elements match specific bit error patterns.
  • the circuit causes the state of at least one bit in the bit stream to change if the contents of the plurality of circuit elements match one of the specific bit patterns.
  • the present invention is advantageous in that it may detect single bit errors, and double bits errors which may be caused by error duplication characteristic of a scrambler.
  • the circuit utilizes a minimum of logic gates, two AND gates to provide the error detection and correction not known in the prior art.
  • the present invention provides a circuit for detecting and correcting errors in a bit stream, the circuit including at least two logical gates that determine if at least one of a plurality of conditions is present, each one of said plurality of conditions indicating at least one error in said bit stream and activating at least one of the at least two logical gates to change the state of a specific bit in said bit stream.
  • the present invention provides a circuit for detecting and correcting errors in a bit stream, said circuit comprising:
  • bit circuit elements coupled to receive and store said bit stream, each bit circuit element corresponding to a specific bit in a bit pattern
  • At least one operation circuit element for performing operations between contents of at least two of said bit circuit elements
  • At least two logic gates for determining if contents of said bit circuit elements match specific bit patterns at least one of said at least two logic gate receiving inputs from said bit circuit elements;
  • an output of said circuit causes a state of at least one bit in said bit stream to change if contents of said bit circuit elements match at least one of said plurality of specific bit patterns
  • bit patterns correspond to errors that have occurred in the transmitted data.
  • the present invention provides a circuit for detecting errors in a bit stream, the circuit comprising:
  • operation means for performing bitwise operations between at least a portion of said bit stream and a bit pattern derived from said bit stream;
  • detection means for detecting if a bitwise operation between at least a portion of said bit stream and said bit pattern derived from said bit stream produces a result indicating at least one error in said bit stream
  • D(x) is said at least a first portion of said bit stream
  • G(x) is said bit pattern derived from said bit stream
  • B(x) is a remainder of a division operation between D(x) and G(x);
  • FIG. 1 illustrates a known self-synchronous scrambler and descrambler
  • FIG. 2 illustrates a known x 43 +1 self-synchronous scrambler
  • FIG. 3 is a schematic representation of a first circuit for detecting and correcting single and double bit errors according to the present invention
  • FIG. 4 is a schematic representation of a second circuit for detecting and correcting single and double bit errors according to the present invention.
  • FIG. 5 is a block diagram of a circuit for an 8-bit wide parallel implementation according to the present invention.
  • FIG. 1 illustrates both a x n +1 self-synchronous scrambler 10 and descrambler 20 as discussed in the background to the invention.
  • the x n +1 scrambler 10 receives data in the form of a bit stream at the input 30 .
  • the data is exclusive-ORed 40 with a delayed version of itself.
  • the delayed bits are illustrated as bit circuit elements, D 1 , D 2 , . . . Dn.
  • the scrambled data is output at 50 by the exclusive-OR operation after an n-bit delay.
  • the scrambler operation is expressed as an x n +1 polynomial.
  • the x n +1 descrambler 20 performs the reverse operation from the scrambler 20 .
  • the descrambler 20 multiplies the received data at the input 60 by the same scrambler polynomial.
  • the descrambler outputs the descrambled data 70 serially after the first set of n bits have been received.
  • FIG. 2 illustrates a x 43 +1 self-sychronous scrambler 100 of the prior art.
  • the x 43 +1 self-sychronous scrambler 100 multiplies the received input bit stream by the scrambler polynomial, x 43 +1.
  • the drawback of the self-sychronous scrambler in general, is that any errors occurring on the transmission channel will be duplicated n bits later in the bit stream. In the case of the x 43 +1 self-sychronous scrambler, any errors are duplicated 43 bits later by the descrambler 100 .
  • a single-bit error is illustrated in a possible output bit stream 120 , whereas a double-bit error is shown in another possible output bit stream 130 .
  • the descrambler 100 does duplicate any bit errors, a double bit error may not be output within the same data block, or data frame, of descrambled bits.
  • the first error may be in a preceding data block while the double error is part of the next data block.
  • double bit errors may be in a preceding data block
  • Boundary cases involve triple bit errors from a preceding or successive block, where bit errors from a preceding block are extend across frames into a preceding/successive block. These triple errors, while random, are detectable by the CRC-16.
  • the present invention provides a circuit for implementing a CRC-16 polynomial for triple bit error detection with improved single bit error and double bit error detection after descrambling.
  • FIG. 3 illustrates a circuit 200 for detecting and correcting single and double bit errors according to a first embodiment of the present invention.
  • the first embodiment is intended for an initial proposed transparent GFP superblock CRC-16.
  • the circuit 200 consists of a plurality of bit circuit elements D 1 , D 2 , D 3 , D 4 , D 5 , D 6 , D 7 , D 8 , D 9 , D 10 , D 11 , D 12 , D 13 , D 14 , D 15 , D 16 , two logic AND gates 210 , 220 , an OR gate 230 , and a plurality of input bit stream circuit elements D 1 , D 2 , . . . , D 493 , D 494 , . .
  • the bit circuit elements may be implemented as bit registers, or other circuit elements such as flip-flops or transistors.
  • the input stream is a GFP superblock, essentially a 536 bit block, which is input into circuit elements D 1 through D 536 .
  • the D 1 through D 16 bit circuit elements receive input from the input stream.
  • the circuit elements are coupled to operation circuit elements 240 A, 240 B, . . . , 240 H, 240 I, which provide bitwise operations dictated by the G(x).
  • the first AND gate 210 receives inputs from bits resulting from bitwise operations between specific selected bits. If the bits at the first AND gate 210 inputs match a predetermined bit pattern then the AND gate 210 is activated.
  • the second AND gate 220 receives inputs from bits resulting from bitwise operations between selected bits, specific to the second AND gate 220 . If the bits at the second AND gate 220 inputs match a predetermined bit pattern then the AND gate 220 is activated.
  • the OR gate 230 receives an input from both first AND gate 210 and the second gate 220 .
  • the OR gate is activated by a predetermined output from either or both AND gates 210 and 220 .
  • the OR gate 230 changes a specific bit in the bit stream. In this case, the OR gate 230 would invert the first bit, stored in the D 536 circuit element, to correct the single error. If a positive output is derived from the second AND gate 220 , then a double error has been detected and the bit located 43 bits behind at D 493 is inverted.
  • circuit operation may be expressed as the following equation:
  • D(x) is said at least a portion of the 536 bit block
  • G(x) is a bit pattern derived from the bit stream according to the polynomial
  • B(x) is a remainder of a division operation between D(x) and G(x);
  • Rem is the remainder from the modulo division of D(x) by G(x);
  • the operation may be designed as a nested IF/THEN loop
  • Rem (D(x)/G(x)) a single bit error pattern then flip bit 1 .
  • n is derived from the scrambler polynomial, X n +1.
  • n may be 43 if the x 43 +1 scrambler polynomial is utilized in conjunction with the circuitry of the present invention.
  • the CRC-16 polynomial G(x) dictate the bitwise operation over the 536 bit GFP superblock.
  • the best possible error detection capability of the CRC-16 polynomial is triple error detection. With triple error detection capability, single error correction is also possible.
  • the CRC-16 generator polynomial must have no common factors with the payload scrambler polynomial.
  • the x 43 +1 payload scrambler polynomial factors into:
  • x 43 +1 ( x+ 1) ( x 14 +x 11 +x 10 +x 9 +x 8 +x 7 +x 6 +x 5 +x 4 +x 3 + 1 ) ( x 14 +x 12 x+x 10 +x 7 +x 4 +x 2 +1) ( x 14 +x 13 x 11 +x 7 +x 3 x+ 1).
  • each single transmission error will result in either one or two superblock errors in the descrambled data. Due to the feedback tap on the x 43 +1 descrambler, a second error is always created exactly 43 bit after the bit affected by the transmission bit error. If both of these errors fall within the data of the same superblock, then the CRC-16 must cope with two errors. It is possible, however, for the two errors to occur around a superblock boundary where one of the errors appears in each superblock.
  • single-bit error patterns and double-bit error patterns are detected by the first and second AND gates to determine whether single-bit errors and double-bit errors have occurred.

Abstract

The present invention provides a circuit for detecting and correcting errors in a bit stream. The circuit consist of a plurality of circuit elements, an least operation circuit means, and at least two logic gates. The logic gates receive inputs from the plurality of circuit elements. The plurality of circuit elements are coupled to receive and store a portion of a bit stream. The operation circuit elements perform bitwise operations on the contents of at least two of the circuit elements. The bitwise operations are dictated by a CRC polynomial and are used to perform the CRC error detection division operation. At the end of the division process for the data to be checked, each circuit element corresponds to a bit in a bit error pattern, the logic gates determine if the contents of the circuit elements match specific bit error patterns. The circuit causes the state of at least one bit in the bit stream to change if the contents of the plurality of circuit elements match one of the specific bit patterns. The circuit is advantageous in that it may detect single bit errors, and double bits errors which may be caused by error duplication characteristic of a scrambler.

Description

    FIELD OF THE INVENTION
  • This invention relates to the error detection and correction by a 16-bit Cyclic Redundancy Check (CRC-16) generation circuit. [0001]
  • BACKGROUND OF THE INVENTION
  • Cyclic Redundancy Check (CRC) is an important aspect in the error-detecting capabilities of many protocols, such as the Ethernet local area network, protocol. CRC provides a number of bits (usually 16 or 32) generated from, and appended to the end of, a block of data to provide error detection. A message receiver generates a CRC from the block of data and compares it to the CRC appended to the received message. If the appended CRC matches the generated CRC, then there is a high probability that the received message has not been corrupted. [0002]
  • One standard 16-bit generator polynomial is represented by x[0003] 16+x12+x5+1. The polynomial represents the binary number 10001000000100001—a one bit is in positions 16, 12, 5, and 0. The CRC is the remainder after binary (modulo 2) division of the message by the generator polynomial. For Ethernet CRC, the 32-bit generator polynomial is represented by x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1. Typically, a 16-bit CRC generator polynomial is used with messages of less than 4 Kbytes. A 32-bit CRC generator is used for messages up to 64 kbytes in length.
  • The CRC is usually performed by the data link protocol and a calculated CRC is appended to the end of the data link layer frame. The CRC is calculated by performing a [0004] modulo 2 division of the data by a generator polynomial and recording the remainder after division.
  • Although this division may be performed in software, it is commonly performed using a shift register and exclusive or X-OR gates. The hardware solution for implementing a CRC is much simpler than a software approach. The CRC-16 is able to detect all single errors, all double errors, and all errors with bursts less than 16 bits in length. The previously-standardized CRC-16 generator polynomials can also detect all odd numbers of errors, at the expense of less detection capability for even numbers of errors. [0005]
  • On an aside, the CRC is the only field which is by convention sent most significant bit first. To further clarify, the first bit of the CRC-16 to be sent is the bit corresponding to [0006] position 16 in the CRC field, the most significant bit (MSB), and the last bit being the bit corresponding to position 0 in CRC field, the least significant bit (LSB).
  • As previously mentioned, CRC is pervasive throughout most data traffic. Recently, a protocol, known as the Generic Framing Procedure (GFP), utilizes a CRC-16 for error detection and correction in the frame header and payload. GFP also utilizes an X[0007] 43+1 self-synchronous scrambler, for error protection. The GFP protocol has recently been standardized by the International Telecommunications Union—Telecommunications (ITU-T) as Recommendation G.7041.
  • To date, GFP has been implemented as a generic mechanism to adapt traffic from higher-layer signals over a synchronous transport network. There are two types of GFP, the frame-mapped GFP and the transparent GFP. The frame-mapped GFP enables a signal frame to be received and mapped in its entirety into one or more GFP frames. The transparent GFP mapping involves decoding block-coded signal frames and then mapping the decoded signal frames into a fixed-length GFP frame, having only received a block-coded version of the signal frame. [0008]
  • Prior to transmitting a GFP frame, the payload portion of the GFP frame is normally scrambled. Frames are scrambled to protect a user from other malicious users who may try to cause loss of receiver synchronization at the physical layer. For the SONET/SDH protocol (Synchronous Optical Network/Synchronous Digital Hierarchy), frame-synchronized scramblers are utilized to create more physical layer transitions to aid timing recovery at the receiver. The frame-synchronized scrambler was added to make it much more difficult for a malicious user to defeat the effects of the frame synchronous scrambler. [0009]
  • A frame-synchronized scrambler is one in which the transmitted data is exclusive-ORed bit-by-bit with the output of a pseudo-random sequence generator with the sequence generator being reset to a known state at the beginning of every frame. The frame-synchronized scramblers are very effective in increasing the transition density to an acceptable level for typical traffic. One drawback of a frame-synchronized scrambler is that it is a known, relatively short (2[0010] 7−1) pseudo-random sequence and it is possible for a malicious subscriber to attempt to mimic this pattern within the data he sends. The result is that if the subscriber data lines up with the SONET/SDH scrambler correctly, a long string can occur with no transitions, which in turn can cause the receiver to fail. The phenomenon was observed with early ATM and POS systems and was addressed from the outset with GFP. The solution used for each of these three protocols is a self-synchronous scrambler over the payload region of the cell/frame.
  • A self-synchronous scrambler is one in which the data is exclusive-ORed with a delayed version of itself on a bit-by-bit basis. The specific scrambler used for ATM, POS, and GFP exclusive-ORs the input data with scrambler output data after a 43 bit delay termed the scrambler polynomial. The descrambler reverses the process by multiplying the received signal by the same scrambler polynomial. The advantage to such a scrambler in this application is that it is very hard for a malicious user to duplicate due to its never having a known reset point. The value of the scrambler state is a function of the previous data rather than the position of the data within the SONET/SDH frame. The drawback to a self-synchronous scrambler is that any errors occurring on the transmission channel will be duplicated 43 bits later by the descrambler. As a result, an error check code over the data will have to deal with twice the bit error rate as that experienced by the transmission channel. [0011]
  • The duplicated bit error, hereinafter termed the “double bit error”, requires that the decoded CRC detect the double bit errors, as well as any single bit errors, without compromising the probability of detection. In view of aforementioned shortcomings of the self-synchronous scrambler, the present invention seeks to provide a circuit for detecting and correcting both single bit errors and double bit errors based on a plurality of conditions being met. The present invention further seeks to provide a probability of error detection that is equivalent to the probability of error detection had the double errors not been introduced by the descrambler. [0012]
  • SUMMARY OF THE INVENTION
  • The present invention provides a circuit for detecting and correcting errors in a bit stream. The circuit consist of a plurality of circuit elements, an least operation circuit means, and at least two logic gates. The logic gates receive inputs from the plurality of circuit elements. The plurality of circuit elements are coupled to receive and store a portion of a bit stream. The operation circuit elements perform bitwise operations on the contents of at least two of the circuit elements. The bitwise operations are dictated by a CRC polynomial and are used to perform the CRC error detection division operation. At the end of the division process for the data to be checked, each circuit element corresponds to a bit in a bit error pattern, the logic gates determine if the contents of the circuit elements match specific bit error patterns. The circuit causes the state of at least one bit in the bit stream to change if the contents of the plurality of circuit elements match one of the specific bit patterns. [0013]
  • The present invention is advantageous in that it may detect single bit errors, and double bits errors which may be caused by error duplication characteristic of a scrambler. The circuit utilizes a minimum of logic gates, two AND gates to provide the error detection and correction not known in the prior art. [0014]
  • In a first aspect, the present invention provides a circuit for detecting and correcting errors in a bit stream, the circuit including at least two logical gates that determine if at least one of a plurality of conditions is present, each one of said plurality of conditions indicating at least one error in said bit stream and activating at least one of the at least two logical gates to change the state of a specific bit in said bit stream. [0015]
  • In a second aspect, the present invention provides a circuit for detecting and correcting errors in a bit stream, said circuit comprising: [0016]
  • a plurality of bit circuit elements coupled to receive and store said bit stream, each bit circuit element corresponding to a specific bit in a bit pattern; [0017]
  • at least one operation circuit element for performing operations between contents of at least two of said bit circuit elements; and [0018]
  • at least two logic gates for determining if contents of said bit circuit elements match specific bit patterns at least one of said at least two logic gate receiving inputs from said bit circuit elements; [0019]
  • wherein an output of said circuit causes a state of at least one bit in said bit stream to change if contents of said bit circuit elements match at least one of said plurality of specific bit patterns; and [0020]
  • wherein said bit patterns correspond to errors that have occurred in the transmitted data. [0021]
  • In a third aspect, the present invention provides a circuit for detecting errors in a bit stream, the circuit comprising: [0022]
  • operation means for performing bitwise operations between at least a portion of said bit stream and a bit pattern derived from said bit stream; and [0023]
  • detection means for detecting if a bitwise operation between at least a portion of said bit stream and said bit pattern derived from said bit stream produces a result indicating at least one error in said bit stream; [0024]
  • wherein said operation means implements a bitwise operation corresponding to [0025]
  • B(x)=Rem(D(x)/G(x)
  • where [0026]
  • D(x) is said at least a first portion of said bit stream; [0027]
  • G(x) is said bit pattern derived from said bit stream; and [0028]
  • B(x) is a remainder of a division operation between D(x) and G(x); [0029]
  • such that said detection means detects when B(x) does not equal 0.[0030]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present invention will now be described with reference to the drawings, in which: [0031]
  • FIG. 1 illustrates a known self-synchronous scrambler and descrambler;. [0032]
  • FIG. 2 illustrates a known x[0033] 43+1 self-synchronous scrambler;
  • FIG. 3 is a schematic representation of a first circuit for detecting and correcting single and double bit errors according to the present invention; [0034]
  • FIG. 4 is a schematic representation of a second circuit for detecting and correcting single and double bit errors according to the present invention; and [0035]
  • FIG. 5 is a block diagram of a circuit for an 8-bit wide parallel implementation according to the present invention.[0036]
  • DETAILED DESCRIPTION
  • FIG. 1 illustrates both a x[0037] n+1 self-synchronous scrambler 10 and descrambler 20 as discussed in the background to the invention. As previously explained, the xn+1 scrambler 10 receives data in the form of a bit stream at the input 30. The data is exclusive-ORed 40 with a delayed version of itself. The delayed bits are illustrated as bit circuit elements, D1, D2, . . . Dn. The scrambled data is output at 50 by the exclusive-OR operation after an n-bit delay. The scrambler operation is expressed as an xn+1 polynomial.
  • In FIG. 1, the x[0038] n+1 descrambler 20 performs the reverse operation from the scrambler 20. The descrambler 20 multiplies the received data at the input 60 by the same scrambler polynomial. The descrambler outputs the descrambled data 70 serially after the first set of n bits have been received.
  • FIG. 2 illustrates a x[0039] 43+1 self-sychronous scrambler 100 of the prior art. As shown in the xn+1 descrambler of FIG. 1, the x43+1 self-sychronous scrambler 100 multiplies the received input bit stream by the scrambler polynomial, x43+1. The drawback of the self-sychronous scrambler, in general, is that any errors occurring on the transmission channel will be duplicated n bits later in the bit stream. In the case of the x43+1 self-sychronous scrambler, any errors are duplicated 43 bits later by the descrambler 100. A single-bit error is illustrated in a possible output bit stream 120, whereas a double-bit error is shown in another possible output bit stream 130. While the descrambler 100 does duplicate any bit errors, a double bit error may not be output within the same data block, or data frame, of descrambled bits. In other words, the first error may be in a preceding data block while the double error is part of the next data block. Furthermore, while it is possible to have double bit errors within a common data block, it is further possible to have triple errors due to bit error placement within the data block. To clarify, in a given data block there may be an error and a duplicate error and in addition, another bit error may occur due ran to boundary cases. Boundary cases involve triple bit errors from a preceding or successive block, where bit errors from a preceding block are extend across frames into a preceding/successive block. These triple errors, while random, are detectable by the CRC-16.
  • Accordingly, the present invention provides a circuit for implementing a CRC-16 polynomial for triple bit error detection with improved single bit error and double bit error detection after descrambling. [0040]
  • FIG. 3 illustrates a [0041] circuit 200 for detecting and correcting single and double bit errors according to a first embodiment of the present invention. The first embodiment is intended for an initial proposed transparent GFP superblock CRC-16. The circuit 200 consists of a plurality of bit circuit elements D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16, two logic AND gates 210, 220, an OR gate 230, and a plurality of input bit stream circuit elements D1, D2, . . . , D493, D494, . . . , D536, as shown in FIG. 3. The bit circuit elements may be implemented as bit registers, or other circuit elements such as flip-flops or transistors. The CRC polynomial implemented in the circuit 200 is G(x)=x16+x15+x14+x12+x10+x8+x7+x4+x3+x+1.
  • According to the [0042] circuit 200 of FIG. 3, the input stream is a GFP superblock, essentially a 536 bit block, which is input into circuit elements D1 through D536. On a bit-by-bit basis, the D1 through D16 bit circuit elements receive input from the input stream. The circuit elements are coupled to operation circuit elements 240A, 240B, . . . , 240H, 240I, which provide bitwise operations dictated by the G(x). The first AND gate 210 receives inputs from bits resulting from bitwise operations between specific selected bits. If the bits at the first AND gate 210 inputs match a predetermined bit pattern then the AND gate 210 is activated. Similarly, the second AND gate 220 receives inputs from bits resulting from bitwise operations between selected bits, specific to the second AND gate 220. If the bits at the second AND gate 220 inputs match a predetermined bit pattern then the AND gate 220 is activated. The OR gate 230 receives an input from both first AND gate 210 and the second gate 220. The OR gate is activated by a predetermined output from either or both AND gates 210 and 220. Upon activation, the OR gate 230 changes a specific bit in the bit stream. In this case, the OR gate 230 would invert the first bit, stored in the D536 circuit element, to correct the single error. If a positive output is derived from the second AND gate 220, then a double error has been detected and the bit located 43 bits behind at D493 is inverted.
  • The circuit operation may be expressed as the following equation: [0043]
  • B(x)=Rem(D(x)/G(x)
  • where [0044]
  • D(x) is said at least a portion of the 536 bit block; [0045]
  • G(x) is a bit pattern derived from the bit stream according to the polynomial; [0046]
  • B(x) is a remainder of a division operation between D(x) and G(x); and [0047]
  • Rem is the remainder from the modulo division of D(x) by G(x); [0048]
  • such that the circuit detects when B(x) does not equal 0. [0049]
  • The operation may be designed as a nested IF/THEN loop [0050]
  • If Rem (D(x)/G(x))=a double bit error pattern then flip [0051] bit 1 AND flip the bit which is n bits behind bit 1
  • If Rem (D(x)/G(x))=a single bit error pattern then flip [0052] bit 1.
  • where n is derived from the scrambler polynomial, X[0053] n+1.
  • According to an embodiment of the present invention, n may be 43 if the x[0054] 43+1 scrambler polynomial is utilized in conjunction with the circuitry of the present invention.
  • In FIG. 3, the CRC-16 polynomial G(x) dictate the bitwise operation over the 536 bit GFP superblock. According to limitations of the CRC-16 error detection, the best possible error detection capability of the CRC-16 polynomial is triple error detection. With triple error detection capability, single error correction is also possible. In order to preserve the triple error detecting capability, the CRC-16 generator polynomial must have no common factors with the payload scrambler polynomial. The x[0055] 43+1 payload scrambler polynomial factors into:
  • x 43+1=(x+1) (x 14 +x 11 +x 10 +x 9 +x 8 +x 7 +x 6 +x 5 +x 4 +x 3+1) (x 14 +x 12 x+x 10 +x 7 +x 4 +x 2+1) (x 14 +x 13 x 11 +x 7 +x 3 x+1).
  • All of the known standard CRC-16 generator polynomials, have x+1 as a factor, and would therefore suffer degraded performance due to duplicate errors. In order to also provide double error detecting capability the CRC generator polynomial must have a factor that is a primitive polynomial with a degree of at least 10. To further provide a triple bit error detection, a CRC-16 generator polynomial with triple error detection capability was utilized. According to the present invention, it was determined that various CRC-16 generator polynomials met both the double error detection and the no common scrambler factors criteria. The CRC polynomial G(x) of FIG. 3, and that of FIG. 4, are examples of CRC polynomials which met the above criteria. [0056]
  • As explained in the background, each single transmission error will result in either one or two superblock errors in the descrambled data. Due to the feedback tap on the x[0057] 43+1 descrambler, a second error is always created exactly 43 bit after the bit affected by the transmission bit error. If both of these errors fall within the data of the same superblock, then the CRC-16 must cope with two errors. It is possible, however, for the two errors to occur around a superblock boundary where one of the errors appears in each superblock. Errors occurring at boundaries is discussed in detail in a technical paper T1X1.5/2001-094, “Impact of x43+1 Scrambler on the Error Detection Capabilities of Ethernet CRC,” standards contribution from Norival Figueira, Nortel Networks, March 2001, which incorporated herein by reference. A more rigorous theoretical analysis is to be found in “Analysis of the Interaction Between CRC Error Detecting Polynomials and Self-Synchronous Payload Scramblers”, Steven S. Gorshe, PhD Dissertation, Oregon State University, USA, 2002.
  • In general, single error correction is possible with a linear cyclic code as long as each possible error pattern leads to a unique syndrome at the decoder. For a CRC, the syndrome created by the bit error pattern is the remainder calculated in the division of the data block by the CRC generator polynomial. A remainder other than zero indicates the presence of an error. In order to preserve the capability of correcting single transmission errors, the syndromes (remainders) must be unique for each possible single error and 43-bit-spaced double error pattern. The unique syndromes allow the decoder to know the original error pattern, which is what makes the correction possible. For each of the CRC-16 polynomials that met the above triple error detecting criteria, bit error patterns were calculated for each possible single error and 43-bit-spaced double errors. [0058]
  • The following are the single-bit error patterns and double-bit error patterns which met the following criteria. [0059]
  • According to FIG. 3, single-bit error patterns and double-bit error patterns are detected by the first and second AND gates to determine whether single-bit errors and double-bit errors have occurred. [0060]
  • The single-bit error patterns (Syndrome A) and the double bit patterns (Syndrome B) are as follows: [0061]
  • Syndrome A [0062]
  • 0000000000000001 [0063]
  • 0000000000000010 [0064]
  • 0000000000000100 [0065]
  • 0000000000001000 [0066]
  • 0000000000010000 [0067]
  • 0000000000100000 [0068]
  • 0000000001000000 [0069]
  • 0000000010000000 [0070]
  • 0000000100000000 [0071]
  • 0000001000000000 [0072]
  • 0000010000000000 [0073]
  • 0000100000000000 [0074]
  • 0001000000000000 [0075]
  • 0010000000000000 [0076]
  • 0100000000000000 [0077]
  • 1000000000000000 [0078]
  • 1001010000011111 [0079]
  • 1011110000100001 [0080]
  • 1110110001011101 [0081]
  • 0100110010100101 [0082]
  • 1001100101001010 [0083]
  • 1010011010001011 [0084]
  • 1101100100001001 [0085]
  • 0010011000001101 [0086]
  • 0100110000011010 [0087]
  • 1001100000110100 [0088]
  • 1010010001110111 [0089]
  • 1101110011110001 [0090]
  • 0010110111111101 [0091]
  • 0101101111111010 [0092]
  • 1011011111110100 [0093]
  • 1111101111110111 [0094]
  • 0110001111110001 [0095]
  • 1100011111100010 [0096]
  • 0001101111011011 [0097]
  • 0011011110110110 [0098]
  • 0110111101101100 [0099]
  • 1101111011011000 [0100]
  • 0010100110101111 [0101]
  • 0101001101011110 [0102]
  • 1010011010111100 [0103]
  • 1101100101100111 [0104]
  • 0010011011010001 [0105]
  • 0100110110100010 [0106]
  • 1001101101000100 [0107]
  • 1010001010010111 [0108]
  • 1101000100110001 [0109]
  • 0011011001111101 [0110]
  • 0110110011111010 [0111]
  • 1101100111110100 [0112]
  • 0010011111110111 [0113]
  • 0100111111101110 [0114]
  • 1001111111011100 [0115]
  • 1010101110100111 [0116]
  • 1100001101010001 [0117]
  • 0001001010111101 [0118]
  • 0010010101111010 [0119]
  • 0100101011110100 [0120]
  • 1001010111101000 [0121]
  • 1011111111001111 [0122]
  • 1110101110000001 [0123]
  • 0100001100011101 [0124]
  • 1000011000111010 [0125]
  • 1001100001101011 [0126]
  • 1010010011001001 [0127]
  • 1101110110001101 [0128]
  • 0010111100000101 [0129]
  • 0101111000001010 [0130]
  • 1011110000010100 [0131]
  • 1110110000110111 [0132]
  • 0100110001110001 [0133]
  • 1001100011100010 [0134]
  • 1010010111011011 [0135]
  • 1101111110101001 [0136]
  • 0010101101001101 [0137]
  • 0101011010011010 [0138]
  • 1010110100110100 [0139]
  • 1100111001110111 [0140]
  • 0000100011110001 [0141]
  • 0001000111100010 [0142]
  • 0010001111000100 [0143]
  • 0100011110001000 [0144]
  • 1000111100010000 [0145]
  • 1000101000111111 [0146]
  • 1000000001100001 [0147]
  • 1001010011011101 [0148]
  • 1011110110100101 [0149]
  • 1110111101010101 [0150]
  • 0100101010110101 [0151]
  • 1001010101101010 [0152]
  • 1011111011001011 [0153]
  • 1110100110001001 [0154]
  • 0100011100001101 [0155]
  • 1000111000011010 [0156]
  • 1000100000101011 [0157]
  • 1000010001001001 [0158]
  • 1001110010001101 [0159]
  • 1010110100000101 [0160]
  • 1100111000010101 [0161]
  • 0000100000110101 [0162]
  • 0001000001101010 [0163]
  • 0010000011010100 [0164]
  • 0100000110101000 [0165]
  • 1000001101010000 [0166]
  • 1001001010111111 [0167]
  • 1011000101100001 [0168]
  • 1111011011011101 [0169]
  • 0111100110100101 [0170]
  • 1111001101001010 [0171]
  • 0111001010001011 [0172]
  • 1110010100010110 [0173]
  • 0101111000110011 [0174]
  • 1011110001100110 [0175]
  • 1110110011010011 [0176]
  • 0100110110111001 [0177]
  • 1001101101110010 [0178]
  • 1010001011111011 [0179]
  • 1101000111101001 [0180]
  • 0011011111001101 [0181]
  • 0110111110011010 [0182]
  • 1101111100110100 [0183]
  • 0010101001110111 [0184]
  • 0101010011101110 [0185]
  • 1010100111011100 [0186]
  • 1100011110100111 [0187]
  • 0001101101010001 [0188]
  • 0011011010100010 [0189]
  • 0110110101000100 [0190]
  • 1101101010001000 [0191]
  • 0010000100001111 [0192]
  • 0100001000011110 [0193]
  • 1000010000111100 [0194]
  • 1001110001100111 [0195]
  • 1010110011010001 [0196]
  • 1100110110111101 [0197]
  • 0000111101100101 [0198]
  • 0001111011001010 [0199]
  • 0011110110010100 [0200]
  • 0111101100101000 [0201]
  • 1111011001010000 [0202]
  • 0111100010111111 [0203]
  • 1111000101111110 [0204]
  • 0111011011100011 [0205]
  • 1110110111000110 [0206]
  • 0100111110010011 [0207]
  • 1001111100100110 [0208]
  • 1010101001010011 [0209]
  • 1100000010111001 [0210]
  • 0001010101101101 [0211]
  • 0010101011011010 [0212]
  • 0101010110110100 [0213]
  • 1010101101101000 [0214]
  • 1100001011001111 [0215]
  • 0001000110000001 [0216]
  • 0010001100000010 [0217]
  • 0100011000000100 [0218]
  • 1000110000001000 [0219]
  • 1000110000001111 [0220]
  • 1000110000000001 [0221]
  • 1000110000011101 [0222]
  • 1000110000100101 [0223]
  • 1000110001010101 [0224]
  • 1000110010110101 [0225]
  • 1000110101110101 [0226]
  • 1000111011110101 [0227]
  • 1000100111110101 [0228]
  • 1000011111110101 [0229]
  • 1001101111110101 [0230]
  • 1010001111110101 [0231]
  • 1101001111110101 [0232]
  • 0011001111110101 [0233]
  • 0110011111101010 [0234]
  • 1100111111010100 [0235]
  • 0000101110110111 [0236]
  • 0001011101101110 [0237]
  • 0010111011011100 [0238]
  • 0101110110111000 [0239]
  • 1011101101110000 [0240]
  • 1110001011111111 [0241]
  • 0101000111100001 [0242]
  • 1010001111000010 [0243]
  • 1101001110011011 [0244]
  • 0011001100101001 [0245]
  • 0110011001010010 [0246]
  • 1100110010100100 [0247]
  • 0000110101010111 [0248]
  • 0001101010101110 [0249]
  • 0011010101011100 [0250]
  • 0110101010111000 [0251]
  • 1101010101110000 [0252]
  • 0011111011111111 [0253]
  • 0111110111111110 [0254]
  • 1111101111111100 [0255]
  • 0110001111100111 [0256]
  • 1100011111001110 [0257]
  • 0001101110000011 [0258]
  • 0011011100000110 [0259]
  • 0110111000001100 [0260]
  • 1101110000011000 [0261]
  • 0010110000101111 [0262]
  • 0101100001011110 [0263]
  • 1011000010111100 [0264]
  • 1111010101100111 [0265]
  • 0111111011010001 [0266]
  • 1111110110100010 [0267]
  • 0110111101011011 [0268]
  • 1101111010110110 [0269]
  • 0010100101110011 [0270]
  • 0101001011100110 [0271]
  • 1010010111001100 [0272]
  • 1101111110000111 [0273]
  • 0010101100010001 [0274]
  • 0101011000100010 [0275]
  • 1010110001000100 [0276]
  • 1100110010010111 [0277]
  • 0000110100110001 [0278]
  • 0001101001100010 [0279]
  • 0011010011000100 [0280]
  • 0110100110001000 [0281]
  • 1101001100010000 [0282]
  • 0011001000111111 [0283]
  • 0110010001111110 [0284]
  • 1100100011111100 [0285]
  • 0000010111100111 [0286]
  • 0000101111001110 [0287]
  • 0001011110011100 [0288]
  • 0010111100111000 [0289]
  • 0101111001110000 [0290]
  • 1011110011100000 [0291]
  • 1110110111011111 [0292]
  • 0100111110100001 [0293]
  • 1001111101000010 [0294]
  • 1010101010011011 [0295]
  • 1100000100101001 [0296]
  • 0001011001001101 [0297]
  • 0010110010011010 [0298]
  • 0101100100110100 [0299]
  • 1011001001101000 [0300]
  • 1111000011001111 [0301]
  • 0111010110000001 [0302]
  • 1110101100000010 [0303]
  • 0100001000011011 [0304]
  • 1000010000110110 [0305]
  • 1001110001110011 [0306]
  • 1010110011111001 [0307]
  • 1100110111101101 [0308]
  • 0000111111000101 [0309]
  • 0001111110001010 [0310]
  • 0011111100010100 [0311]
  • 0111111000101000 [0312]
  • 1111110001010000 [0313]
  • 0110110010111111 [0314]
  • 1101100101111110 [0315]
  • 0010011011100011 [0316]
  • 0100110111000110 [0317]
  • 1001101110001100 [0318]
  • 1010001100000111 [0319]
  • 1101001000010001 [0320]
  • 0011000000111101 [0321]
  • 0110000001111010 [0322]
  • 1100000011110100 [0323]
  • 0001010111110111 [0324]
  • 0010101111101110 [0325]
  • 0101011111011100 [0326]
  • 1010111110111000 [0327]
  • 1100101101101111 [0328]
  • 0000001011000001 [0329]
  • 0000010110000010 [0330]
  • 0000101100000100 [0331]
  • 0001011000001000 [0332]
  • 0010110000010000 [0333]
  • 0101100000100000 [0334]
  • 1011000001000000 [0335]
  • 1111010010011111 [0336]
  • 0111110100100001 [0337]
  • 1111101001000010 [0338]
  • 0110000010011011 [0339]
  • 1100000100110110 [0340]
  • 0001011001110011 [0341]
  • 0010110011100110 [0342]
  • 0101100111001100 [0343]
  • 1011001110011000 [0344]
  • 1111001100101111 [0345]
  • 0111001001000001 [0346]
  • 1110010010000010 [0347]
  • 0101110100011011 [0348]
  • 1011101000110110 [0349]
  • 1110000001110011 [0350]
  • 0101010011111001 [0351]
  • 1010100111110010 [0352]
  • 1100011111111011 [0353]
  • 0001101111101001 [0354]
  • 0011011111010010 [0355]
  • 0110111110100100 [0356]
  • 1101111101001000 [0357]
  • 0010101010001111 [0358]
  • 0101010100011110 [0359]
  • 1010101000111100 [0360]
  • 1100000001100111 [0361]
  • 0001010011010001 [0362]
  • 0010100110100010 [0363]
  • 0101001101000100 [0364]
  • 1010011010001000 [0365]
  • 1101100100001111 [0366]
  • 0010011000000001 [0367]
  • 0100110000000010 [0368]
  • 1001100000000100 [0369]
  • 1010010000010111 [0370]
  • 1101110000110001 [0371]
  • 0010110001111101 [0372]
  • 0101100011111010 [0373]
  • 1011000111110100 [0374]
  • 1111101111110111 [0375]
  • 0111101111110001 [0376]
  • 1111011111100010 [0377]
  • 0111101111011011 [0378]
  • 1111011110110110 [0379]
  • 0111101101110011 [0380]
  • 1111011011100110 [0381]
  • 0111100111010011 [0382]
  • 1111001110100110 [0383]
  • 0111001101010011 [0384]
  • 1110011010100110 [0385]
  • 0101100101010011 [0386]
  • 1011001010100110 [0387]
  • 1111000101010011 [0388]
  • 0111011010111001 [0389]
  • 1110110101110010 [0390]
  • 0100111011111011 [0391]
  • 1001110111110110 [0392]
  • 1010111111110011 [0393]
  • 1100101111111001 [0394]
  • 0000001111101101 [0395]
  • 0000011111011010 [0396]
  • 0000111110110100 [0397]
  • 0001111101101000 [0398]
  • 0011111011010000 [0399]
  • 0111110110100000 [0400]
  • 1111101101000000 [0401]
  • 0110001010011111 [0402]
  • 1100010100111110 [0403]
  • 0001111001100011 [0404]
  • 0011110011000110 [0405]
  • 0111100110001100 [0406]
  • 1111001100011000 [0407]
  • 0111001000101111 [0408]
  • 1110010001011110 [0409]
  • 0101110010100011 [0410]
  • 1011100101000110 [0411]
  • 1110011010010011 [0412]
  • 0101100100111001 [0413]
  • 1011001001110010 [0414]
  • 1111000011111011 [0415]
  • 0111010111101001 [0416]
  • 1110101111010010 [0417]
  • 0100001110111011 [0418]
  • 1000011101110110 [0419]
  • 1001101011110011 [0420]
  • 1010000111111001 [0421]
  • 1101011111101101 [0422]
  • 0011101111000101 [0423]
  • 0111011110001010 [0424]
  • 1110111100010100 [0425]
  • 0100101000110111 [0426]
  • 1001010001101110 [0427]
  • 1011110011000011 [0428]
  • 1110110110011001 [0429]
  • 0100111100101101 [0430]
  • 1001111001011010 [0431]
  • 1010100010101011 [0432]
  • 1100010101001001 [0433]
  • 0001111010001101 [0434]
  • 0011110100011010 [0435]
  • 0111101000110100 [0436]
  • 1111010001101000 [0437]
  • 0111110011001111 [0438]
  • 1111100110011110 [0439]
  • 0110011100100011 [0440]
  • 1100111001000110 [0441]
  • 0000100010010011 [0442]
  • 0001000100100110 [0443]
  • 0010001001001100 [0444]
  • 0100010010011000 [0445]
  • 1000100100110000 [0446]
  • 1000011001111111 [0447]
  • 1001100011100001 [0448]
  • 1010010111011101 [0449]
  • 1101111110100101 [0450]
  • 0010101101010101 [0451]
  • 0101011010101010 [0452]
  • 1010110101010100 [0453]
  • 1100111010110111 [0454]
  • 0000100101110001 [0455]
  • 0001001011100010 [0456]
  • 0010010111000100 [0457]
  • 0100101110001000 [0458]
  • 1001011100010000 [0459]
  • 1011101000111111 [0460]
  • 1110000001100001 [0461]
  • 0101010011011101 [0462]
  • 1010100110111010 [0463]
  • 1100011101101011 [0464]
  • 0001101011001001 [0465]
  • 0011010110010010 [0466]
  • 0110101100100100 [0467]
  • 1101011001001000 [0468]
  • 0011100010001111 [0469]
  • 0111000100011110 [0470]
  • 1110001000111100 [0471]
  • 0101000001100111 [0472]
  • 1010000011001110 [0473]
  • 1101010110000011 [0474]
  • 0011111100011001 [0475]
  • 0111111000110010 [0476]
  • 1111110001100100 [0477]
  • 0110110011010111 [0478]
  • 1101100110101110 [0479]
  • 0010011101000011 [0480]
  • 0100111010000110 [0481]
  • 1001110100001100 [0482]
  • 1010111000000111 [0483]
  • 1100100000010001 [0484]
  • 0000010000111101 [0485]
  • 0000100001111010 [0486]
  • 0001000011110100 [0487]
  • 0010000111101000 [0488]
  • 0100001111010000 [0489]
  • 1000011110100000 [0490]
  • 1001101101011111 [0491]
  • 1010001010100001 [0492]
  • 1101000101011101 [0493]
  • 0011011010100101 [0494]
  • 0110110101001010 [0495]
  • 1101101010010100 [0496]
  • 0010000100110111 [0497]
  • 0100001001101110 [0498]
  • 1000010011011100 [0499]
  • 1001110110100111 [0500]
  • 1010111101010001 [0501]
  • 1100101010111101 [0502]
  • 0000000101100101 [0503]
  • 0000001011001010 [0504]
  • 0000010110010100 [0505]
  • 0000101100101000 [0506]
  • 0001011001010000 [0507]
  • 0010110010100000 [0508]
  • 0101100101000000 [0509]
  • 1011001010000000 [0510]
  • 1111000100011111 [0511]
  • 0111011000100001 [0512]
  • 1110110001000010 [0513]
  • 0100110010011011 [0514]
  • 1001100100110110 [0515]
  • 1010011001110011 [0516]
  • 1101100011111001 [0517]
  • 0010010111101101 [0518]
  • 0100101111011010 [0519]
  • 1001011110110100 [0520]
  • 1011101101110111 [0521]
  • 1110001011110001 [0522]
  • 0101000111111101 [0523]
  • 1010001111111010 [0524]
  • 1101001111101011 [0525]
  • 0011001111001001 [0526]
  • 0110011110010010 [0527]
  • 1100111100100100 [0528]
  • 0000101001010111 [0529]
  • 0001010010101110 [0530]
  • 0010100101011100 [0531]
  • 0101001010111000 [0532]
  • 1010010101110000 [0533]
  • 1101111011111111 [0534]
  • 0010100111100001 [0535]
  • 0101001111000010 [0536]
  • 1010011110000100 [0537]
  • 1101101100010111 [0538]
  • 0010001000110001 [0539]
  • 0100010001100010 [0540]
  • 1000100011000100 [0541]
  • 1000010110010111 [0542]
  • 1001111100110001 [0543]
  • 1010101001111101 [0544]
  • 1100000011100101 [0545]
  • 0001010111010101 [0546]
  • 0010101110101010 [0547]
  • 0101011101010100 [0548]
  • 1010111010101000 [0549]
  • 1100100101001111 [0550]
  • 0000011010000001 [0551]
  • 0000110100000010 [0552]
  • 0001101000000100 [0553]
  • 0011010000001000 [0554]
  • 0110100000010000 [0555]
  • 1101000000100000 [0556]
  • 0011010001011111 [0557]
  • 0110100010111110 [0558]
  • 1101000101111100 [0559]
  • 0011011011100111 [0560]
  • 0110110111001110 [0561]
  • 1101101110011100 [0562]
  • 0010001100100111 [0563]
  • 0100011001001110 [0564]
  • 1000110010011100 [0565]
  • 1000110100100111 [0566]
  • 1000111001010001 [0567]
  • 1000100010111101 [0568]
  • 1000010101100101 [0569]
  • 1001111011010101 [0570]
  • 1010100110110101 [0571]
  • 1100011101110101 [0572]
  • 0001101011110101 [0573]
  • 0011010111101010 [0574]
  • 0110101111010100 [0575]
  • 1101011110101000 [0576]
  • 0011101101001111 [0577]
  • 0111011010011110 [0578]
  • 1110110100111100 [0579]
  • 0100111001100111 [0580]
  • 1001110011001110 [0581]
  • 1010110110000011 [0582]
  • 1100111100011001 [0583]
  • 0000101000101101 [0584]
  • 0001010001011010 [0585]
  • 0010100010110100 [0586]
  • 0101000101101000 [0587]
  • 1010001011010000 [0588]
  • 1101000110111111 [0589]
  • 0011011101100001 [0590]
  • 0110111011000010 [0591]
  • 1101110110000100 [0592]
  • 0010111100010111 [0593]
  • 0101111000101110 [0594]
  • 1011110001011100 [0595]
  • 1110110010100111 [0596]
  • 0100110101010001 [0597]
  • 1001101010100010 [0598]
  • Syndrome B [0599]
  • 0100110110100011 [0600]
  • 1001101101000110 [0601]
  • 1010001010010011 [0602]
  • 1101000100111001 [0603]
  • 0011011001101101 [0604]
  • 0110110011011010 [0605]
  • 1101100110110100 [0606]
  • 0010011101110111 [0607]
  • 0100111011101110 [0608]
  • 1001110111011100 [0609]
  • 1010111110100111 [0610]
  • 1100101101010001 [0611]
  • 0000001010111101 [0612]
  • 0000010101111010 [0613]
  • 0000101011110100 [0614]
  • 0001010111101000 [0615]
  • 0010101111010000 [0616]
  • 0101011110100000 [0617]
  • 1010111101000000 [0618]
  • 1100101010011111 [0619]
  • 0000000100100001 [0620]
  • 0000001001000010 [0621]
  • 0000010010000100 [0622]
  • 0000100100001000 [0623]
  • 0001001000010000 [0624]
  • 0010010000100000 [0625]
  • 0100100001000000 [0626]
  • 1001000010000000 [0627]
  • 1011010100011111 [0628]
  • 1111111000100001 [0629]
  • 0110100001011101 [0630]
  • 1101000010111010 [0631]
  • 0011010101101011 [0632]
  • 0110101011010110 [0633]
  • 1101010110101100 [0634]
  • 0011111101000111 [0635]
  • 0111111010001110 [0636]
  • 1111110100011100 [0637]
  • 0110111000100111 [0638]
  • 1101110001001110 [0639]
  • 0010110010000011 [0640]
  • 0101100100000110 [0641]
  • 1011001000001100 [0642]
  • 1111000000000111 [0643]
  • 0111010000010001 [0644]
  • 1110100000100010 [0645]
  • 0100010001011011 [0646]
  • 1000100010110110 [0647]
  • 1000010101110011 [0648]
  • 1001111011111001 [0649]
  • 1010100111101101 [0650]
  • 1100011111000101 [0651]
  • 0001101110010101 [0652]
  • 0011011100101010 [0653]
  • 0110111001010100 [0654]
  • 1101110010101000 [0655]
  • 0010110101001111 [0656]
  • 0101101010011110 [0657]
  • 1011010100111100 [0658]
  • 1111111001100111 [0659]
  • 0110100011010001 [0660]
  • 1101000110100010 [0661]
  • 0011011101011011 [0662]
  • 0110111010110110 [0663]
  • 1101110101101100 [0664]
  • 0010111011000111 [0665]
  • 0101110110001110 [0666]
  • 1011101100011100 [0667]
  • 1110001000100111 [0668]
  • 0101000001010001 [0669]
  • 1010000010100010 [0670]
  • 1101010101011011 [0671]
  • 0011111010101001 [0672]
  • 0111110101010010 [0673]
  • 1111101010100100 [0674]
  • 0110000101010111 [0675]
  • 1100001010101110 [0676]
  • 0001000101000011 [0677]
  • 0010001010000110 [0678]
  • 0100010100001100 [0679]
  • 1000101000011000 [0680]
  • 1000000000101111 [0681]
  • 1001010001000001 [0682]
  • 1011110010011101 [0683]
  • 1110110100100101 [0684]
  • 0100111001010101 [0685]
  • 1001110010101010 [0686]
  • 1010110101001011 [0687]
  • 1100111010001001 [0688]
  • 0000100100001101 [0689]
  • 0001001000011010 [0690]
  • 0010010000110100 [0691]
  • 0100100001101000 [0692]
  • 1001000011010000 [0693]
  • 1011010110111111 [0694]
  • 1111111101100001 [0695]
  • 0110101011011101 [0696]
  • 1101010110111010 [0697]
  • 0011111101101011 [0698]
  • 0111111011010110 [0699]
  • 1111110110101100 [0700]
  • 0110111101000111 [0701]
  • 1101111010001110 [0702]
  • 0010100100000011 [0703]
  • 0101001000000110 [0704]
  • 1010010000001100 [0705]
  • 1101110000000111 [0706]
  • 0010110000010001 [0707]
  • 0101100000100010 [0708]
  • 1011000001000100 [0709]
  • 1111010010010111 [0710]
  • 0111110100110001 [0711]
  • 1111101001100010 [0712]
  • 0110000011011011 [0713]
  • 1100000110110110 [0714]
  • 0001011101110011 [0715]
  • 0010111011100110 [0716]
  • 0101110111001100 [0717]
  • 1011101110011000 [0718]
  • 1110001100101111 [0719]
  • 0101001001000001 [0720]
  • 1010010010000010 [0721]
  • 1101110100011011 [0722]
  • 0010111000101001 [0723]
  • 0101110001010010 [0724]
  • 1011100010100100 [0725]
  • 1110010101010111 [0726]
  • 0101111010110001 [0727]
  • 1011110101100010 [0728]
  • 1110111011011011 [0729]
  • 0100100110101001 [0730]
  • 1001001101010010 [0731]
  • 1011001010111011 [0732]
  • 1111000101101001 [0733]
  • 0111011011001101 [0734]
  • 1110110110011010 [0735]
  • 0100111100101011 [0736]
  • 1001111001010110 [0737]
  • 1010100010110011 [0738]
  • 1100010101111001 [0739]
  • 0001111011101101 [0740]
  • 0011110111011010 [0741]
  • 0111101110110100 [0742]
  • 1111011101101000 [0743]
  • 0111101011001111 [0744]
  • 1111010110011110 [0745]
  • 0111111100100011 [0746]
  • 1111111001000110 [0747]
  • 0110100010010011 [0748]
  • 1101000100100110 [0749]
  • 0011011001010011 [0750]
  • 0110110010100110 [0751]
  • 1101100101001100 [0752]
  • 0010011010000111 [0753]
  • 0100110100001110 [0754]
  • 1001101000011100 [0755]
  • 1010000000100111 [0756]
  • 1101010001010001 [0757]
  • 0011110010111101 [0758]
  • 0111100101111010 [0759]
  • 1111001011110100 [0760]
  • 0111000111110111 [0761]
  • 1110001111101110 [0762]
  • 0101001111000011 [0763]
  • 1010011110000110 [0764]
  • 1101101100010011 [0765]
  • 0010001000111001 [0766]
  • 0100010001110010 [0767]
  • 1000100011100100 [0768]
  • 1000010111010111 [0769]
  • 1001111110110001 [0770]
  • 1010101101111101 [0771]
  • 1100001011100101 [0772]
  • 0001000111010101 [0773]
  • 0010001110101010 [0774]
  • 0100011101010100 [0775]
  • 1000111010101000 [0776]
  • 1000100101001111 [0777]
  • 1000011010000001 [0778]
  • 1001100100011101 [0779]
  • 1010011000100101 [0780]
  • 1101100001010101 [0781]
  • 0010010010110101 [0782]
  • 0100100101101010 [0783]
  • 1001001011010100 [0784]
  • 1011000110110111 [0785]
  • 1111011101110001 [0786]
  • 0111101011111101 [0787]
  • 1111010111111010 [0788]
  • 0111111111101011 [0789]
  • 1111111111010110 [0790]
  • 0110101110110011 [0791]
  • 1101011101100110 [0792]
  • 0011101011010011 [0793]
  • 0111010110100110 [0794]
  • 1110101101001100 [0795]
  • 0100001010000111 [0796]
  • 1000010100001110 [0797]
  • 1001111000000011 [0798]
  • 1010100000011001 [0799]
  • 1100010000101101 [0800]
  • 0001110001000101 [0801]
  • 0011100010001010 [0802]
  • 0111000100010100 [0803]
  • 1110001000101000 [0804]
  • 0101000001001111 [0805]
  • 1010000010011110 [0806]
  • 1101010100100011 [0807]
  • 0011111001011001 [0808]
  • 0111110010110010 [0809]
  • 1111100101100100 [0810]
  • 0110011011010111 [0811]
  • 1100110110101110 [0812]
  • 0000111101000011 [0813]
  • 0001111010000110 [0814]
  • 0011110100001100 [0815]
  • 0111101000011000 [0816]
  • 1111010000110000 [0817]
  • 0111110001111111 [0818]
  • 1111100011111110 [0819]
  • 0110010111100011 [0820]
  • 1100101111000110 [0821]
  • 0000001110010011 [0822]
  • 0000011100100110 [0823]
  • 0000111001001100 [0824]
  • 0001110010011000 [0825]
  • 0011100100110000 [0826]
  • 0111001001100000 [0827]
  • 1110010011000000 [0828]
  • 0101110110011111 [0829]
  • 1011101100111110 [0830]
  • 1110001001100011 [0831]
  • 0101000011011001 [0832]
  • 1010000110110010 [0833]
  • 1101011101111011 [0834]
  • 0011101011101001 [0835]
  • 0111010111010010 [0836]
  • 1110101110100100 [0837]
  • 0100001101010111 [0838]
  • 1000011010101110 [0839]
  • 1001100101000011 [0840]
  • 1010011010011001 [0841]
  • 1101100100101101 [0842]
  • 0010011001000101 [0843]
  • 0100110010001010 [0844]
  • 1001100100010100 [0845]
  • 1010011000110111 [0846]
  • 1101100001110001 [0847]
  • 0010010011111101 [0848]
  • 0100100111111010 [0849]
  • 1001001111110100 [0850]
  • 1011001111110111 [0851]
  • 1111001111110001 [0852]
  • 0111001111111101 [0853]
  • 1110011111111010 [0854]
  • 0101101111101011 [0855]
  • 1011011111010110 [0856]
  • 1111101110110011 [0857]
  • 0110001101111001 [0858]
  • 1100011011110010 [0859]
  • 0001100111111011 [0860]
  • 0011001111110110 [0861]
  • 0110011111101100 [0862]
  • 1100111111011000 [0863]
  • 0000101110101111 [0864]
  • 0001011101011110 [0865]
  • 0010111010111100 [0866]
  • 0101110101111000 [0867]
  • 1011101011110000 [0868]
  • 1110000111111111 [0869]
  • 0101011111100001 [0870]
  • 1010111111000010 [0871]
  • 1100101110011011 [0872]
  • 0000001100101001 [0873]
  • 0000011001010010 [0874]
  • 0000110010100100 [0875]
  • 0001100101001000 [0876]
  • 0011001010010000 [0877]
  • 0110010100100000 [0878]
  • 1100101001000000 [0879]
  • 0000000010011111 [0880]
  • 0000000100111110 [0881]
  • 0000001001111100 [0882]
  • 0000010011111000 [0883]
  • 0000100111110000 [0884]
  • 0001001111100000 [0885]
  • 0010011111000000 [0886]
  • 0100111110000000 [0887]
  • 1001111100000000 [0888]
  • 1010101000011111 [0889]
  • 1100000000100001 [0890]
  • 0001010001011101 [0891]
  • 0010100010111010 [0892]
  • 0101000101110100 [0893]
  • 1010001011101000 [0894]
  • 1101000111001111 [0895]
  • 0011011110000001 [0896]
  • 0110111100000010 [0897]
  • 1101111000000100 [0898]
  • 0010100000010111 [0899]
  • 0101000000101110 [0900]
  • 1010000001011100 [0901]
  • 1101010010100111 [0902]
  • 0011110101010001 [0903]
  • 0111101010100010 [0904]
  • 1111010101000100 [0905]
  • 0111111010010111 [0906]
  • 1111110100101110 [0907]
  • 0110111001000011 [0908]
  • 1101110010000110 [0909]
  • 0010110100010011 [0910]
  • 0101101000100110 [0911]
  • 1011010001001100 [0912]
  • 1111110010000111 [0913]
  • 0110110100010001 [0914]
  • 1101101000100010 [0915]
  • 0010000001011011 [0916]
  • 0100000010110110 [0917]
  • 1000000101101100 [0918]
  • 1001011011000111 [0919]
  • 1011100110010001 [0920]
  • 1110011100111101 [0921]
  • 0101101001100101 [0922]
  • 1011010011001010 [0923]
  • 1111110110001011 [0924]
  • 0110111100001001 [0925]
  • 1101111000010010 [0926]
  • 0010100000111011 [0927]
  • 0101000001110110 [0928]
  • 1010000011101100 [0929]
  • 1101010111000111 [0930]
  • 0011111110010001 [0931]
  • 0111111100100010 [0932]
  • 1111111001000100 [0933]
  • 0110100010010111 [0934]
  • 1101000100101110 [0935]
  • 0011011001000011 [0936]
  • 0110110010000110 [0937]
  • 1101100100001100 [0938]
  • 0010011000000111 [0939]
  • 0100110000001110 [0940]
  • 1001100000011100 [0941]
  • 1010010000100111 [0942]
  • 1101110001010001 [0943]
  • 0010110010111101 [0944]
  • 0101100101111010 [0945]
  • 1011001011110100 [0946]
  • 1111000111110111 [0947]
  • 0111011111110001 [0948]
  • 1110111111100010 [0949]
  • 0100101111011011 [0950]
  • 1001011110110110 [0951]
  • 1011101101110011 [0952]
  • 1110001011111001 [0953]
  • 0101000111101101 [0954]
  • 1010001111011010 [0955]
  • 1101001110101011 [0956]
  • 0011001101001001 [0957]
  • 0110011010010010 [0958]
  • 1100110100100100 [0959]
  • 0000111001010111 [0960]
  • 0001110010101110 [0961]
  • 0011100101011100 [0962]
  • 0111001010111000 [0963]
  • 1110010101110000 [0964]
  • 0101111011111111 [0965]
  • 1011110111111110 [0966]
  • 1110111111100011 [0967]
  • 0100101111011001 [0968]
  • 1001011110110010 [0969]
  • 1011101101111011 [0970]
  • 1110001011101001 [0971]
  • 0101000111001101 [0972]
  • 1010001110011010 [0973]
  • 1101001100101011 [0974]
  • 0011001001001001 [0975]
  • 0110010010010010 [0976]
  • 1100100100100100 [0977]
  • 0000011001010111 [0978]
  • 0000110010101110 [0979]
  • 0001100101011100 [0980]
  • 0011001010111000 [0981]
  • 0110010101110000 [0982]
  • 1100101011100000 [0983]
  • 0000000111011111 [0984]
  • 0000001110111110 [0985]
  • 0000011101111100 [0986]
  • 0000111011111000 [0987]
  • 0001110111110000 [0988]
  • 0011101111100000 [0989]
  • 0111011111000000 [0990]
  • 1110111110000000 [0991]
  • 0100101100011111 [0992]
  • 1001011000111110 [0993]
  • 1011100001100011 [0994]
  • 1110010011011001 [0995]
  • 0101110110101101 [0996]
  • 1011101101011010 [0997]
  • 1110001010101011 [0998]
  • 0101000101001001 [0999]
  • 1010001010010010 [1000]
  • 1101000100111011 [1001]
  • 0011011001101001 [1002]
  • 0110110011010010 [1003]
  • 1101100110100100 [1004]
  • 0010011101010111 [1005]
  • 0100111010101110 [1006]
  • 1001110101011100 [1007]
  • 1010111010100111 [1008]
  • 1100100101010001 [1009]
  • 0000011010111101 [1010]
  • 0000110101111010 [1011]
  • 0001101011110100 [1012]
  • 0011010111101000 [1013]
  • 0110101111010000 [1014]
  • 1101011110100000 [1015]
  • 0011101101011111 [1016]
  • 0111011010111110 [1017]
  • 1110110101111100 [1018]
  • 0100111011100111 [1019]
  • 1001110111001110 [1020]
  • 1010111110000011 [1021]
  • 1100101100011001 [1022]
  • 0000001000101101 [1023]
  • 0000010001011010 [1024]
  • 0000100010110100 [1025]
  • 0001000101101000 [1026]
  • 0010001011010000 [1027]
  • 0100010110100000 [1028]
  • 1000101101000000 [1029]
  • 1000001010011111 [1030]
  • 1001000100100001 [1031]
  • 1011011001011101 [1032]
  • 1111100010100101 [1033]
  • 0110010101010101 [1034]
  • 1100101010101010 [1035]
  • 0000000101001011 [1036]
  • 0000001010010110 [1037]
  • 0000010100101100 [1038]
  • 0000101001011000 [1039]
  • 0001010010110000 [1040]
  • 0010100101100000 [1041]
  • 0101001011000000 [1042]
  • 1010010110000000 [1043]
  • 1101111100011111 [1044]
  • 0010101000100001 [1045]
  • 0101010001000010 [1046]
  • 1010100010000100 [1047]
  • 1100010100010111 [1048]
  • 0001111000110001 [1049]
  • 0011110001100010 [1050]
  • 0111100011000100 [1051]
  • 1111000110001000 [1052]
  • 0111011100001111 [1053]
  • 1110111000011110 [1054]
  • 0100100000100011 [1055]
  • 1001000001000110 [1056]
  • 1011010010010011 [1057]
  • 1111110100111001 [1058]
  • 0110111001101101 [1059]
  • 1101110011011010 [1060]
  • 0010110110101011 [1061]
  • 0101101101010110 [1062]
  • 1011011010101100 [1063]
  • 1111100101000111 [1064]
  • 0110011010010001 [1065]
  • 1100110100100010 [1066]
  • 0000111001011011 [1067]
  • 0001110010110110 [1068]
  • 0011100101101100 [1069]
  • 0111001011011000 [1070]
  • 1110010110110000 [1071]
  • 0101111101111111 [1072]
  • 1011111011111110 [1073]
  • 1110100111100011 [1074]
  • 0100011111011001 [1075]
  • 1000111110110010 [1076]
  • 1000101101111011 [1077]
  • 1000001011101001 [1078]
  • 1001000111001101 [1079]
  • 1011011110000101 [1080]
  • 1111101100010101 [1081]
  • 0110001000110101 [1082]
  • 1100010001101010 [1083]
  • 0001110011001011 [1084]
  • 0011100110010110 [1085]
  • 0111001100101100 [1086]
  • 1110011001011000 [1087]
  • 0101100010101111 [1088]
  • 1011000101011110 [1089]
  • 1111011010100011 [1090]
  • 0111100101011001 [1091]
  • 1111001010110010. [1092]
  • The above explanation of the present invention, as embodied in [1093] circuit 200 of FIG. 3, has assumed that positive logic is utilized. Positive bit logic was applied in detecting and correcting errors based on the outputs derived from both bitwise operations and bit logic operations. For example, a binary output of 1 at an AND gate indicates an error. However, if negative logic is utilized in the circuit 200, a binary output of O at the AND gate 210 would indicate an error as well.
  • FIG. 4 illustrates a [1094] circuit 300 for detecting and correcting single and double bit errors according to a second embodiment of the present invention. The second embodiment is intended for a final version transparent GFP superblock CRC-16. The circuit 300 differs from that of FIG. 3, in that bitwise operations are dictated by a different G(x) polynomial. The CRC polynomial implemented in this circuit 300 is G(x)=x16+x15+x14+x12+x10+x4+x3+x2+x+1.
  • It should be mentioned that while the circuits of FIGS. 3 and 4 detect double bit errors generated by a descrambler, the circuits of the present invention detect single bit, double bit, and triple bit errors derived from any number of other sources. The 536 bit block need not be derived from a descrambler, such as is used on a GFP CRC-16. The circuit of the present invention may derive a 536-bit superblock, prior to processing by the circuit of the present invention. Furthermore, the art that the present invention may be embodied in other circuitry. For example, additional AND gates may be utilized to perform error detection in both [1095] circuits 200 and 300 of FIGS. 3 and 4.
  • FIG. 5 is a block diagram of a [1096] circuit 400 for an 8-bit wide parallel implementation according to a third embodiment of the present invention. As compared to the serial bit implementation of FIGS. 3 and 4, the error detection logic 410 outputs an 8-bit wide output to the OR gate 420. In an 8-bit wide parallel implementation, errors are detected for an 8-bit wide block. The single and double errors are corrected in the same manner as in the implementation of FIG. 4 with the advantage that operating on 8-bit data blocks allows the circuit to operate at ⅛ the data path clock speed of a serial implementation such as in FIGS. 3 and 4. The data path clock speed reduction is a significant advantage for high-speed data transmission.
  • In FIG. 5, the process implemented by the [1097] circuit 400 is similar to that of FIGS. 3 and 4. The parallel CRC-16 generator consists of a bit circuit elements which are coupled to sequentially receive and store a sequential 16 bits derived from an 8-bit wide input stream 450. The generator 440 performs bitwise operations on the 16 stored in the bit circuit elements. The bitwise operation, again, is dictated by the CRC polynomial selected. Upon completion of the bitwise operations, the generator 440 outputs the generated 16 bits to the bit pattern generation logic 410. If the single error output 450 indicates a single bit error, then the OR gate 420 enables the errorred bit within the last 8 bits in the bit circuit element D67 to be corrected. If the double error output 450 indicates a 43-bit spaced double error, then the exclusive-OR logic gates 470A, 47B enable the bit error which is 43 bits behind the first bit to be corrected. The bits of the errored byte to be corrected are stored in two bit circuit element, D61 and D62. The first 3 bits, of the errorred byte, are stored in the D61 bit stream circuit element. The last 5 bits are stored in the bit stream circuit element D62.
  • Based on the circuit implementation shown in FIGS. 3, 4, and [1098] 5, the present invention is not limited to a single CRC polynomial. Rather, the present invention provides single error and double error detection and correction capabilities for both serial and parallel bit streams, in which a number of CRC polynomials may be utilized. The above bit error patterns are not exclusive to the GFP protocol. Any protocol which utilizes a fixed-length block may utilize the specific bit patterns to detect errors in portions of the block bit stream.

Claims (19)

What is claimed is:
1. A circuit for detecting and correcting errors in a bit stream, the circuit including at least two logical gates that determine if at least one of a plurality of conditions is present, each one of said plurality of conditions indicating at least one error in said bit stream and activation of at least one of the at least two logical gates changes a state of a specific bit in said bit stream.
2. A circuit as defined in claim 1, wherein each one of said plurality of conditions is a specific bit pattern denoting a unique error pattern in said bit stream, each bit in said specific bit pattern resulting from bitwise operations between specific selected bits in said bit stream.
3. A circuit as defined in claim 2 wherein said plurality of conditions are divided into two groups, a first group which indicates a first type or error in the bit stream and a second group which indicates a second type of error in the bit stream.
4. A circuit as defined in claim 3, wherein if a condition from said first group is detected, the state of a specific bit in said bit stream is changed.
5. A circuit as defined in claim 3, wherein if a condition from said second group is detected, the state of at least two specific bits in said bit stream is changed.
6. A circuit as defined in claim 3, wherein said first group includes a specific bit error pattern from a group consisting of:
Syndrome A.
7. A circuit as defined in claim 3, wherein said second group includes a specific bit error pattern chosen from a group consisting of:
Syndrome B.
8. A circuit as defined in claim 3, wherein the at least two logical gates include a first AND gate associated with said first group and a second AND gate associated with said second group, such that said first AND gate is activated if a bit error pattern from said first group is detected and said second AND gate is activated if a bit pattern from said second group is detected.
9. A circuit as defined in claim 8, wherein said first AND gate receives first AND inputs from bits resulting from bitwise operations dictated by the CRC polynomial between specific selected bits in said bit pattern, such that said first AND gate has a predetermined output when said first AND inputs correspond to a bit pattern chosen from a group consisting of:
Syndrome A.
10. A circuit as defined in claim 9, wherein the predetermined output is a binary.
11. A circuit as defined in claim 9, wherein the predetermined output is a binary.
12. A circuit as defined in claim 8, wherein said second AND gate receives second AND inputs from bits resulting from bitwise operations dictated by the CRC polynomial between specific selected bits in said bit pattern, such that said second AND gate has a predetermined output when said second AND inputs correspond to a bit pattern chosen from a group consisting of:
Syndrome B.
13. A circuit as defined in claim 12, wherein the predetermined output is a binary.
14. A circuit as defined in claim 12, wherein the predetermined output is a binary.
15. A circuit as defined in claim 8, wherein the at least two logical gates includes an OR gate receiving an input from said first AND gate and said second AND gate such that a state of a specific bit in said bit pattern is changed if either said first AND gate or said second AND gate is activated.
16. A circuit for detecting and correcting errors in a bit stream, said circuit comprising:
a plurality of bit circuit elements coupled to receive and store said bit stream, each bit circuit element corresponding to a specific bit in a bit pattern;
at least one operation circuit element for performing operations between the contents of at least two of said bit circuit elements; and
at least two logic gates for determining if the contents of said bit circuit elements match specific bit patterns, at least one of said at least two logic gate receiving inputs from said bit circuit elements;
wherein an output of said circuit causes a state of at least one bit in said bit stream to change if contents of said bit circuit elements match at least one of said plurality of specific bit patterns; and
wherein said bit patterns correspond to errors that have occurred in the transmitted data.
17. A circuit as defined in claim 16, wherein said plurality of specific bit patterns comprises:
Syndrome A; and Syndrome B.
18. A circuit as defined in claim 16, wherein said plurality of bit circuit elements are cascaded such that each bit circuit element receives an input from a source chosen from a group consisting of:
an immediately preceding bit circuit element;
an output of an which performs a bitwise operation on contents of at least two of said bit circuit elements; and
said bit stream.
19. A circuit for detecting errors in a bit stream, the circuit comprising:
operation means for performing bitwise operations between at least a portion of said bit stream and a bit pattern derived from said bit stream; and
detection means for detecting if a bitwise operation between at least a portion of said bit stream and said bit pattern derived from said bit stream produces a result indicating at least one error in said bit stream;
wherein said operation means implements a bitwise operation corresponding to
B(x)=Rem(D(x)/G(x)
where
D(x) is said at least a first portion of said bit stream;
G(x) is said bit pattern derived from said bit stream; and
B(x) is a remainder of a division operation between D(x) and G(x);
such that said detection means detects when B(x) does not equal 0.
US10/147,880 2002-05-20 2002-05-20 Cyclic redundancy check circuit for use with self-synchronous scramblers Abandoned US20030217320A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US10/147,880 US20030217320A1 (en) 2002-05-20 2002-05-20 Cyclic redundancy check circuit for use with self-synchronous scramblers
US11/167,109 US7426679B2 (en) 2002-05-20 2005-06-28 Cyclic redundancy check circuit for use with self-synchronous scramblers
US11/167,122 US7353446B2 (en) 2002-05-20 2005-06-28 Cyclic redundancy check circuit for use with self-synchronous scramblers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/147,880 US20030217320A1 (en) 2002-05-20 2002-05-20 Cyclic redundancy check circuit for use with self-synchronous scramblers

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US11/167,122 Continuation US7353446B2 (en) 2002-05-20 2005-06-28 Cyclic redundancy check circuit for use with self-synchronous scramblers
US11/167,109 Division US7426679B2 (en) 2002-05-20 2005-06-28 Cyclic redundancy check circuit for use with self-synchronous scramblers

Publications (1)

Publication Number Publication Date
US20030217320A1 true US20030217320A1 (en) 2003-11-20

Family

ID=29419134

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/147,880 Abandoned US20030217320A1 (en) 2002-05-20 2002-05-20 Cyclic redundancy check circuit for use with self-synchronous scramblers
US11/167,122 Expired - Lifetime US7353446B2 (en) 2002-05-20 2005-06-28 Cyclic redundancy check circuit for use with self-synchronous scramblers
US11/167,109 Expired - Lifetime US7426679B2 (en) 2002-05-20 2005-06-28 Cyclic redundancy check circuit for use with self-synchronous scramblers

Family Applications After (2)

Application Number Title Priority Date Filing Date
US11/167,122 Expired - Lifetime US7353446B2 (en) 2002-05-20 2005-06-28 Cyclic redundancy check circuit for use with self-synchronous scramblers
US11/167,109 Expired - Lifetime US7426679B2 (en) 2002-05-20 2005-06-28 Cyclic redundancy check circuit for use with self-synchronous scramblers

Country Status (1)

Country Link
US (3) US20030217320A1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060092979A1 (en) * 2004-11-03 2006-05-04 Alcatel Method and device of processing a generic framing procedure frame
EP1782542A2 (en) * 2004-08-23 2007-05-09 Transwitch Corporation Methods and apparatus for error correction of transparent gfp (generic framing procedure) superblocks
US20080001965A1 (en) * 2006-07-03 2008-01-03 Won-Sik Kang Data error correction circuit, integrated circuit for data error correction, and method of performing data error correction
US7913151B1 (en) 2006-05-26 2011-03-22 Pmc-Sierra, Inc. Forward error correction with self-synchronous scramblers
US20140362990A1 (en) * 2013-06-10 2014-12-11 Texas Instruments Incorporated Link aggregator with universal packet scrambler apparatus and method
US11005498B1 (en) * 2014-05-01 2021-05-11 Marvell Asia Pte, Ltd. Methods and network device for uncoded bit protection in 10Gbase-T ethernet

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7424664B2 (en) * 2005-10-17 2008-09-09 Faraday Technology Corp. Duplicate detection circuit for receiver
US8255754B2 (en) * 2007-05-15 2012-08-28 Texas Instruments Incorporated Range extension and noise mitigation for wireless communication links utilizing a CRC based single and multiple bit error correction mechanism
WO2009141823A2 (en) 2008-05-22 2009-11-26 Ramot At Tel Aviv University Ltd. Conjugates of a polymer, a bisphosphonate and an anti-angiogenesis agent and uses thereof in the treatment and monitoring of bone related diseases
CN102105156B (en) 2008-05-22 2016-05-25 特拉维夫大学拉莫特有限公司 Be connected with therapeutic activity agent and Angiogenesis targeting moiety polymer Novel conjugates and in treatment the purposes in angiogenesis-associated diseases
WO2009141827A2 (en) * 2008-05-22 2009-11-26 Ramot At Tel Aviv University Ltd. A conjugate of a polymer, an anti-angiogenesis agent and a targeting moiety, and uses thereof in the treatment of bone related angiogenesis conditions
TWI371928B (en) * 2008-12-15 2012-09-01 Inst Information Industry Data correction apparatus, data correction method and computer program product thereof
EP2285003B1 (en) 2009-08-12 2019-11-13 Alcatel Lucent Correction of errors in a codeword
EP2822598A4 (en) 2012-03-05 2016-04-13 Univ Ramot Polymers having therapeutically active agents conjugated thereto, processes of preparing same and uses thereof
US20170222752A1 (en) * 2016-02-03 2017-08-03 Fuji Xerox Co., Ltd. Decoding device, information transmission system, decoding method, and non-transitory computer readable medium

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4872157A (en) * 1988-03-31 1989-10-03 American Telephone And Telegraph Company, At&T Bell Laboratories Architecture and organization of a high performance metropolitan area telecommunications packet network
US5012459A (en) * 1987-06-29 1991-04-30 Sony Corporation Data recorder
US5237593A (en) * 1989-05-04 1993-08-17 Stc, Plc Sequence synchronisation
US5703882A (en) * 1994-12-23 1997-12-30 Electronics And Telecommunications Research Institute Cyclic line coding apparatus for error detection and frame recovery
US6304987B1 (en) * 1995-06-07 2001-10-16 Texas Instruments Incorporated Integrated test circuit

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9020410D0 (en) * 1990-09-19 1990-10-31 Stc Plc Sequence synchronisation
US6349138B1 (en) * 1996-06-14 2002-02-19 Lucent Technologies Inc. Method and apparatus for digital transmission incorporating scrambling and forward error correction while preventing bit error spreading associated with descrambling
US6006321A (en) * 1997-06-13 1999-12-21 Malleable Technologies, Inc. Programmable logic datapath that may be used in a field programmable device
US6775302B1 (en) * 1998-12-14 2004-08-10 Agere Systems Inc. Communications system with symmetrical interfaces and associated methods
US6438724B1 (en) * 1999-03-16 2002-08-20 International Business Machines Corporation Method and apparatus for deterministically altering cyclic redundancy check information for data storage
US6446234B1 (en) * 1999-03-16 2002-09-03 International Business Machines Corporation Method and apparatus for updating cyclic redundancy check information for data storage
WO2001076077A2 (en) * 2000-03-31 2001-10-11 Ted Szymanski Transmitter, receiver, and coding scheme to increase data rate and decrease bit error rate of an optical data link
US6609226B1 (en) * 2000-04-10 2003-08-19 Nortel Networks Limited Networking device and method for making cyclic redundancy check (CRC) immune to scrambler error duplication
US6647518B1 (en) * 2000-04-28 2003-11-11 Conexant Systems, Inc. Methods and apparatus for estimating a bit error rate for a communication system
US6820230B2 (en) * 2002-03-05 2004-11-16 The United States Of America As Represented By The Secretary Of The Navy Self synchronous scrambler apparatus and method for use in dense wavelength division multiplexing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5012459A (en) * 1987-06-29 1991-04-30 Sony Corporation Data recorder
US4872157A (en) * 1988-03-31 1989-10-03 American Telephone And Telegraph Company, At&T Bell Laboratories Architecture and organization of a high performance metropolitan area telecommunications packet network
US5237593A (en) * 1989-05-04 1993-08-17 Stc, Plc Sequence synchronisation
US5703882A (en) * 1994-12-23 1997-12-30 Electronics And Telecommunications Research Institute Cyclic line coding apparatus for error detection and frame recovery
US6304987B1 (en) * 1995-06-07 2001-10-16 Texas Instruments Incorporated Integrated test circuit

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1782542A2 (en) * 2004-08-23 2007-05-09 Transwitch Corporation Methods and apparatus for error correction of transparent gfp (generic framing procedure) superblocks
EP1782542A4 (en) * 2004-08-23 2008-08-13 Transwitch Corp Methods and apparatus for error correction of transparent gfp (generic framing procedure) superblocks
US8369226B2 (en) * 2004-11-03 2013-02-05 Alcatel Lucent Method and device of processing a generic framing procedure frame
EP1655870A3 (en) * 2004-11-03 2007-09-19 Alcatel Lucent Method and device of processing generic framing procedure (GFP) frames
EP1655870A2 (en) * 2004-11-03 2006-05-10 Alcatel Method and device of processing generic framing procedure (GFP) frames
US20060092979A1 (en) * 2004-11-03 2006-05-04 Alcatel Method and device of processing a generic framing procedure frame
US7913151B1 (en) 2006-05-26 2011-03-22 Pmc-Sierra, Inc. Forward error correction with self-synchronous scramblers
US8020077B1 (en) 2006-05-26 2011-09-13 Pmc-Sierra, Inc. Forward error correction with self-synchronous scramblers
US20080001965A1 (en) * 2006-07-03 2008-01-03 Won-Sik Kang Data error correction circuit, integrated circuit for data error correction, and method of performing data error correction
US8042020B2 (en) * 2006-07-03 2011-10-18 Samsung Electronics Co., Ltd. Data error correction circuit, integrated circuit for data error correction, and method of performing data error correction
US20140362990A1 (en) * 2013-06-10 2014-12-11 Texas Instruments Incorporated Link aggregator with universal packet scrambler apparatus and method
US10587437B2 (en) * 2013-06-10 2020-03-10 Texas Instruments Incorporated Link aggregator with universal packet scrambler apparatus and method
US11005498B1 (en) * 2014-05-01 2021-05-11 Marvell Asia Pte, Ltd. Methods and network device for uncoded bit protection in 10Gbase-T ethernet
US11283467B1 (en) 2014-05-01 2022-03-22 Marvell Asia Pte Ltd Methods and network device for uncoded bit protection in 10GBASE-T ethernet

Also Published As

Publication number Publication date
US20050257113A1 (en) 2005-11-17
US7426679B2 (en) 2008-09-16
US20050257114A1 (en) 2005-11-17
US7353446B2 (en) 2008-04-01

Similar Documents

Publication Publication Date Title
US7353446B2 (en) Cyclic redundancy check circuit for use with self-synchronous scramblers
US8055984B2 (en) Forward error correction scheme compatible with the bit error spreading of a scrambler
FI114515B (en) Method and apparatus for optimizing a decoder
CA2003862C (en) Error correction and detection apparatus and method
US8151174B2 (en) Block modulus coding (BMC) systems and methods for block coding with non-binary modulus
KR100213694B1 (en) A decoding system for distinguishing different types of convolutionally encoded signals
JP5106538B2 (en) Forward error correction coding for multilink transmission compatible with 64B / 66B scrambling
JP3549788B2 (en) Multi-stage encoding method, multi-stage decoding method, multi-stage encoding device, multi-stage decoding device, and information transmission system using these
US6487686B1 (en) Error correction method and transmission apparatus
US20020016933A1 (en) Method and apparatus for correcting data
US5923680A (en) Error correction in a digital transmission system
US8281207B2 (en) Data transmission equipment and generating method for transmission code
US8020077B1 (en) Forward error correction with self-synchronous scramblers
US7284182B2 (en) Error correction on M-bit encoded links
US20030051204A1 (en) Interconnect system with error correction
US5938773A (en) Sideband signaling with parity bit schemes
CN110741562B (en) Pipelined forward error correction for vector signaling code channels
Gorshe CRC-16 polynomials optimized for applications using self-synchronous scramblers
JP3475931B2 (en) Receiver
Gorshe Analysis of the interaction between linear cyclic error correcting codes and self-synchronous payload scramblers
US20020046370A1 (en) Error checking
JPH07245630A (en) High speed data transmission system
Fun Problems relating to codeword and frame synchronization in digital communication systems
Tanenbraum The data link layer
JPS6074738A (en) Satellite broadcast receiver

Legal Events

Date Code Title Description
AS Assignment

Owner name: PMC-SIERRA, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GORSHE, STEVEN SCOTT;REEL/FRAME:013111/0705

Effective date: 20020716

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE