The present invention relates to data communications and high speed transmission in general and is more particularly concerned with the correction of errors occurring on strings of data that need to be scrambled for transmission.
The transmission of information over very high-speed links requires, to enhance the transmission characteristics of the signal, that data strings to be forwarded have to be first encoded by the transmitting side. A particular desirable characteristic to acquire is that, irrespective of the information to be transported, the binary transmitted signal remains DC balanced. Also, transmitted signal must have enough transitions so as the receiver side can reliably recover a clock and can operate without any drift that would possibly result from long sequences of transmitted 1's or 0's.
A standard technique to achieve this objective is to scramble the transmitted data. Thus, various scramblers are specified by telecommunications standards. The one of the IEEE 802.3ae physical coding sublayer (PCS) broadly referred to as 10 Gb Ethernet (10 GbE), using a transmission coding technique known as 64B/66B, is based on polynomial: x58+x39+1.
On the other hand, the bit error rate (BER) of high-speed transmission links cannot generally be specified at a better rate than 10−2. Being given that any modern data communications equipment is now required to reach aggregate data throughput in a tera (1012) bits per second (Tbps) range then, hundredths of links (link speed are typically in a 2.5 to 12.5 Giga or 109 bits per second range) must be used irrespective of the actual implementation of a machine. Hence, it can easily be seen that errors are thus susceptible to occur at a rate well in excess of one every second. Even though link BER might be, in practice, better than what can be specified, designers of such data communications equipment such as Tbps routers and switches, are now forced to consider the use of forward error correction (FEC) a standard technique in which redundant bits of information are transmitted so a receiver can correct errors without requiring re-transmission.
Unfortunately, scrambling and FEC are somehow incompatible. It is well-known that scramblers multiply the number of error bits after de-scrambling. For example, 10 GbE scrambler, which has three terms, creates three errors after decoding for each real error occurring on a transmission link. Moreover, these three errors span on 59 bits corresponding to the degree of the polynomial. While a single error can easily be corrected with a simple FEC code e.g., a Hamming code, requiring few extra bits, much more redundancy is needed to handle the bit error spreading as a result of the scrambling. Also codes to use in this case, such as BCH codes, are complex to decode.
Thus, it is a broad object of the invention to remedy the shortcomings of the prior art as described here above.
It is another object of the invention to provide a method and systems for transmitting data wherein a simple forward error correction code is combined with data scrambling to give required characteristics to the transmitted signal and to provide error correction capabilities.
It is a further object of the invention to provide a method and systems for recovering scrambled received data by using a simple forward error correction code after data descrambling, compatible with the bit error spreading of the scrambler.
The accomplishment of these and other related objects is achieved by a method of shortening a single-bit error correction/double-bit error detection code for detecting and correcting random bit errors in a digital transmission system wherein data is scrambled after said error detection/correction code is applied over a set of data and wherein said set of data is subsequently checked, after descrambling, for detecting and correcting transmission errors, to still obtain unique syndromes for said random bit errors after they have been multiplied as a result of said descrambling, said method of shortening including:
A method for transmitting data and associated redundant information allowing error detection and correction upon reception, said method comprising:
A method for recovering information encoded in a received data packet, said received data packet being scrambled and containing forward error correction bits, said method comprising:
Further objects, features and advantages of the present invention will become apparent to ones skilled in the art upon examination of the following description in reference to the accompanying drawings. It is intended that any additional advantages be incorporated herein.
Transmit path (140) includes a scrambler (144) which improves the transmission characteristics so that sufficient transitions are present in the physical bit streams e.g., to make clock recovery possible at the receiver. The 64B/66B transmission code has a high transition density and is a run-length-limited code. The encode (142) and gear box (146) functions are necessary to map data and control characters to the blocks and to adapt formats. They are not necessary to the understanding of the invention thus, are not further described.
Receive path (150) includes a descrambler (154) to recover the original stream of bits. Synchronization on the preambles is achieved first (156). PCS also includes a function (160) that monitors the bit error rate over the transmission medium. There is a decode function (152) which is the counterpart of the transmit encode. Apart from the scrambler and descrambler, none of these functions need to be further described to understand the invention. They are shown here for the sake of accuracy on what is exactly the 10 GbE physical coding sublayer and to understand the context where the invention better applies.
Those skilled in the art will realize that although the invention is described in the particular context of 10 GbE it could be practiced as well in a different environment and will know, from the here after description, how to adapt it to other applications, especially for applications where a different scrambling polynomial would be used.
Scrambler (200) and descrambler (210) are linear feedback shift register (LFSR) to perform respectively, continuous division and multiplication of binary strings i.e., in an algebra modulo 2 modulo G(x), one bit at a time. Adders are XOR's such as (205). The two 58-bit shift registers have taps at indexes 0, 39 and 58 corresponding to the powers of the three terms of G(x), a primitive irreducible polynomial thus capable of generating a pseudo-random maximum length sequence. The sequence will repeat only after 258−1 shifts, i.e. never for all practical purposes. Even though there would be one shift possible every 1 pico (10−12) second, the time to wrap around the sequence would still be larger than the time that has elapsed since the creation of the universe.
Scramblers and descramblers have been in use for decades and are used to randomize strings of bits in order to obtain a better behavior of various electronic pieces of equipment mainly in the field of transmission. The chief applications being to allow that signals obtained be, on the average, DC balanced and to get enough transitions to be able to recover timing references from them. As an example of this, the first all-zero 64-bit sequence (220) gives, after scrambling, the 64-bit pattern (221) which is comprised of a good proportion of 0's and 1's (38 1's for 26 0's). After de-scrambling, the all-zero sequence is restored (222). Obviously, because of the randomness of the LFSR and of the length of the pseudo-random sequence no two identical input sequences are ever going to be encoded identically as this is illustrated here where the two successive all-zero input sequences (220, 230) gives different scrambled patterns (221, 231).
However, an undesirable well-known effect of scrambling is illustrated with the second example of an all-zero pattern (230) to transmit. This, after scrambling, gives pattern (231) in which an error is assumed to flip 5th bit from left (233) when the signal is propagated through the transmission medium. Then, after descrambling, not only 5th bit is false but two more errors are created (237, 239) in the restored pattern (232). The three errors are spread at distances corresponding to the powers of G(x) terms. Indeed, scrambling multiplies the errors by a number corresponding to the number of terms of the polynomial in use, e.g. 3 with the 10 GbE polynomial.
Moreover, because errors are largely spread (errors thus span here on 59 bits), they are not generally going to stay confined to a single 64-bit block. For example, the all-one third pattern (240) gives, after scrambling, pattern (241) in which an error is assumed to affect the 36th bit from left (243). After de-scrambling only bit 36 (245) is going to be false in the current 64-bit block. However, the following transmitted block (not shown) will have two errors in it since errors are nevertheless multiplied and spaced by the de-scrambler as in previous example. Hence, implementing an error correcting code in an attempt to improve the bit error rate (BER) of transmissions using the 64B/66B 10 GbE code, for the reasons discussed in the background section, is problematic since each error occurring during the transmission is not only multiplied by three but is also largely spread.
Performing FEC is thus becoming much complicated and normally-requires many more redundant ECC bits and the use of sophisticated codes, such as a BCH (Bose-Chaudhuri-Hocquenghem). BCH codes are the type of codes that can be tailored to correct any occurrence of up to three errors in a string of scrambled bits. However, implementing a TEC code, e.g. a triple error correction code, at the expense of having to compute and decode a complex code adds to system cost and complexity, especially at the multi-Gbps transmission speeds considered by the invention.
Another approach is illustrated by U.S. Pat. No. 6,349,138 entitled ‘Method and Apparatus for Digital Transmission Incorporating Scrambling and Forward Error Correction while Preventing Bit Error Spreading Associated with Descrambling’. The above patent manages to perform FEC after scrambling and before descrambling to get rid of its spreading effect and in order to continue to use a simple code such as a Hamming code capable of correcting single bit errors. However, the immediate consequence is that only part of the transmitted string of bits is actually scrambled and has the necessary properties for a good transmission. Redundant ECC bits that are calculated after scrambling must be concatenated as is to the scrambled string of bits.
The following description of the invention shows how a simple Hamming code can still be used on top of scrambling to circumvent the effect of error spreading.
The invention assumes that FEC is performed at a physical level, above scrambling, so as to take care of the transmission errors on high speed links. Although FEC could be carried out with each transmitted packet, this would require having one redundant byte i.e., 8 bits, reserved per transmitted block. Along with the 2-bit preamble necessary for synchronization this would give an overhead of (2+8)/(64−8) or 18% for the 64B/66B code that would include a per-block FEC. Although this is better than the 25% overhead of the 8B/10B code often used for transmission on high speed links this fails meeting the objective of this code which is to require much less overhead i.e., 2/64 or 3% to operate. Hence, FEC should be devised so as to protect a series of blocks (300), rather than a single block, to keep overhead at a low value while allowing on-the-fly corrections of errors so as the transmission on high-speed links can indeed be considered error-free.
A common data unit often manipulated by modern data communications devices, such as switches and routers, is a 64-byte or 512-bit data packet requiring eight 64B/66B blocks of the kind shown in
Whichever packet size is considered, the kinds of errors that the invention assumes to be correctable are all shown in
It is worth noting here that
First, all shifts of three-bit errors (410) spaced as G(x), i.e. at indexes 58, 19 and 0 and entirely contained in the packet payload (including FCS), must have unique syndrome values once a packet is FEC checked so that they can be unambiguously corrected. These errors are of the kind shown in
Second, all single-bit (420) and double-bit (430) errors occurring at the end of a packet (EoP), corresponding respectively to cases (350) and (360) of
Third, all single-bit (450) and double-bit (460) errors occurring at the beginning of a packet, corresponding respectively to cases (330) and (340) of
Then, the set of syndromes must comply with what is shown in
If, at step (505), a double-bit error or a single-bit error was found to have been corrected in the previous packet, then the current computed syndrome must be checked against respectively, the set of single-bit error syndromes (535) and the set of double-bit errors syndromes (540) that occur at the beginning of a packet (BoP). If there is a match a correction can be performed (550). If none of the above match (545), the syndrome does not fit the model of errors. An uncorrectable error (555) is therefore detected.
A list of irreducible polynomials in a binary GF (Galois Field) of the kind corresponding to the right term of G(x), and much theory on the field of error correction, can be found in the book already cited above, i.e. in ‘Error-Correcting Codes’, Peterson & Weldon, 2nd edition, The MIT press, 1972. The degree-10 right polynomial chosen to illustrate the invention is listed, in appendix C of this book, in octal notation, as ‘3323’. The reason of the choice of this particular polynomial will become clear in the following description of the invention.
From G(x) it is possible to form a finite group under multiplication of odd-weight vectors (600), ranked from 0 to 1022 and noted α0 to α1022, comprising 210−1 or 1023 vectors, a number which corresponds to the degree of the right term of G(x). Vectors at beginning and end of the multiplicative group plus some intermediate vectors are shown. As mentioned, they are all comprised of an odd number of ones. For the sake of readability, 0's are replaced by a dot (.) in the binary vectors shown.
In this group, since it is a multiplicative group, the following holds: αX×αY=αX+Y modulo 1023. However, it is still possible to define an addition of three vectors (even though this is not a field) that always returns a vector of the group so that αX+αY+αZ=αW. This is always true because group is made of all possible odd-weight vectors. Adding three vectors together gives again an odd vector that belongs to the group. Moreover, following holds too: αX+n+αY+n+αZ+n=αW+n. As an example of this, one can easily verify from what is listed in (600) that α0+α3+α5=α1012 and that αX1+α4+α6=α1013 and so on.
Hence, it is possible to compute the addition of the three group vectors that corresponds to the terms of the scrambler polynomial, namely 58, 19 and 0. Adding α58+α19+α0 gives α166 and, α58+856+α19+856+α0+856+α166+856=α1022 (610) the last vector of the group. Therefore there are 1022−(166−1) i.e.: 857 successive combinations of triple-bit errors, spaced as scrambler polynomial powers, that give unique syndromes spanning from α166 to α1022. The polynomial chosen has been selected to maximize the range of usable vectors. Among all possibilities of primitive irreducible polynomials listed in Peterson and Weldon book mentioned previously, polynonial ‘3323’ (in octal notation) the right term of G(x) i.e.: X10+X9+X7+X6+X4+X1+1, is a good choice since it gives a low value for the addition of three vectors of the group spaced as 58, 19 and 0. Choosing another polynomial gives a higher value for the addition of α58+α19+α0, reducing the range of possible unique combinations as this is further discussed.
It is worth noting here that this results from the fact that all Galois Fields which can be generated with different primitive irreducible polynomials, are isomorphic in the mathematical sense of this term. That is, all fields of degree n contain all 2n−1 non-zero vectors. They just differ by the order in which these vectors appear in the field. The vector addition table thus varies greatly from one choice of polynomial to another. This behavior is carried over to the multiplicative group obtained after multiplication by X+1, resulting from the fact that there are better choices to obtain a large range of three-bit error combinations that have unique syndromes.
The above requires that code generated with suggested polynomial G(x)=(X+1) (X10+X9+X7+X6+X4+X1+1) be shortened so combinations of three errors cannot return a vector greater than α1022 for the reason that the next value would be α0 (since the group is a finite cyclic group). Indeed, the EoP single-bit errors, i.e. (350) in
As far as the two-bit errors are concerned, the addition of two vectors of the group does not belong to the multiplicative group (on the contrary of the addition of three vectors). It returns an even-weight vector that neither belongs to the three-bit error syndromes nor to the single-bit error syndromes which exceeds the requirements discussed in
From the BoP there are 19 single-bit errors (700). These errors correspond to case (340) of
Therefore, all errors resulting from a single-bit error during the transmission of 64B/66B blocks can be corrected after de-scrambling. All syndromes of errors that do not fit in list of
Implementation is not further described since it uses techniques and methods well known from the art of logic design, especially the design of the ASIC's used for communications devices. The generation of the eleven ECC bits on the transmit side is trivial. Generation is equivalent to checking except that the eleven ECC bits (805) are set to 0 so that the matrix (810) returns the FCS (instead of the syndrome) to be inserted at the end of the message as shown in
Finally, those skilled in the art will recognize that, although the invention is described for the particular case of the 10 GbE scrambler it is straightforward to adapt it to all other primitive scrambler polynomials. A list of such primitive polynomials, up to degree 300, can be found in ‘Built-In Test for VLSI, Pseudorandom Techniques’, Paul H. Bardell and al., John Wiley & Sons, 1987. It must also be understood that the choice of a code to correct the errors after scrambling can be different from the one suggested while still practicing the invention. Especially, if longer or shorter packets must be protected, different polynomial may be chosen so as to adapt the number of necessary redundant bits to a particular application of the invention.
Also, the particular implementation of
While the invention has been particularly shown and described with references to an embodiment, it will be understood by those skilled in the art that various changes in both form and detail may be made therein without departing from the scope and spirit of the invention.
Having thus described our invention, what we claim is as follows:
Number | Date | Country | Kind |
---|---|---|---|
03368009 | Jan 2003 | EP | regional |
Pursuant to 35 USC §120, this continuation application claims priority to and benefit of U.S. Utility patent application Ser. No. 10/764,247, filed Jan. 23, 2004, now U.S. Pat. No. 7,284,184 on behalf of inventors Rene Gallezot, Rene Glaise, and Michel Poret, entitled “Forward error correction scheme compatible with the bit error spreading of a scrambler.”
Number | Name | Date | Kind |
---|---|---|---|
3771126 | Apple, Jr. | Nov 1973 | A |
3775746 | Boudreau et al. | Nov 1973 | A |
4993029 | Galbraith et al. | Feb 1991 | A |
5533033 | Ratner | Jul 1996 | A |
5727083 | Kelly et al. | Mar 1998 | A |
5761217 | Soumiya et al. | Jun 1998 | A |
5923680 | Brueckheimer et al. | Jul 1999 | A |
5963602 | Aoki et al. | Oct 1999 | A |
6003151 | Chuang | Dec 1999 | A |
6377643 | Lee et al. | Apr 2002 | B1 |
7260767 | Bhattacharya et al. | Aug 2007 | B2 |
7284182 | Raahemi | Oct 2007 | B2 |
7298694 | Kamiya et al. | Nov 2007 | B2 |
7570643 | Prasad et al. | Aug 2009 | B2 |
Number | Date | Country | |
---|---|---|---|
20080172589 A1 | Jul 2008 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 10764247 | Jan 2004 | US |
Child | 11776474 | US |