Patent Publication Number: US-6911921-B2

Title: 5B/6B-T, 3B/4B-T and partitioned 8B/10B-T and 10B/12B transmission codes, and their implementation for high operating rates

Description:
FIELD OF THE INVENTION 
   The present invention relates to transmission codes and, more particularly, relates to methods and apparatuses used to produce and interpret 5B/6B, 3B/4B, 8B/10B, and 10B/12B transmission codes. 
   BACKGROUND OF THE INVENTION 
   In a partitioned 8B/10B transmission code, an input vector having eight bits is partitioned into two smaller vectors having three and five bits, respectively. Coded vectors having four and six bits, respectively, are created from the partitioned vectors through use of 3B/4B and 5B/6B transmission code vector sets. The resultant coded vectors then form a single ten-bit coded vector suitable for transmission. Generally, a control input generates control characters readily recognized as other than the 256 data characters in an 8B/10B transmission code. 
   The original partitioned 8B/00B transmission code, introduced more than 20 years ago, was designed to minimize the number of gates required for encoding and decoding. The original partitioned 8B/10B transmission code is described in Franaszek and Widmer, U.S. Pat. No. 4,486,739, issued Dec. 4, 1984, the disclosure of which is hereby incorporated by reference. The original circuitry was implemented with emitter coupled logic, some versions were also done in bipolar transistor/transistor logic, and this was followed by several complementary metal oxide silicon designs. One example is PCT No. US02/13798, entitled “8B/10B Encoding and Decoding for High Speed Applications,” claiming the benefit of U.S. Patent Application No. 60/289,556 that was filed on May 8, 2001, the disclosure of which is hereby incorporated by reference. 
   Lately, design efforts have concentrated on high operating rates. Traditional means for achieving higher operating rates for transmission codes, such as the partitioned 8B/10B transmission code, have involved the parallel operation of several encoders and decoders. Current important potential applications for the partitioned 8B/10B transmission code and its 5B/6B component are for very wide high speed buses using sets of parallel serial links, with each serial link operating up to dozens of Gbaud for short links which require short latencies for performance reasons. Operation with a single CoDec (coder/decoder) circuit for each serial link, or a reduction of the multiplexing ratios required at both ends to accommodate parallel CoDec circuits required to serve a single link, is desirable to improve the latency aspect. 
   Although conventional 8B/10B encoding and decoding work well for a large number of applications, the conventional codes could be improved, particularly in operating rates and latency. Thus, what is needed is a partitioned 8B/10B transmission code and apparatus using the same that allow high operating rates and low latency. 
   Additionally, some applications are compatible with 5-bit data units. It would be beneficial to enable the use of 5B/6B transmission codes with such applications in the form, for instance, of 10B/12B transmission codes. Consequently, improvements to 10B/12B transmission codes are desired. 
   SUMMARY OF THE INVENTION 
   The present invention provides techniques for implementing 5B/6B, 3B/4B and partitioned 8B/10B and 10B/12B transmission codes for high operating rates. 
   In an exemplary aspect of the invention, techniques are disclosed for translating five-bit source vectors, each having five source bits, from a number of five-bit source vectors into six-bit coded vectors. A sixth bit having a default value is appended to the source vectors. Selected one to three individual source bits are complemented for a minority of the source vectors. The coded vectors are disparity independent with a single representation or disparity dependent with a primary and an alternate representation, where the alternate representation is a complement of the primary representation. 
   In another exemplary aspect of the invention, techniques are disclosed for translating three-bit source vectors, together with one or more control inputs, into nine four-bit coded vectors. The source vectors have three source bits. A fourth bit having a default value is appended to the source vectors. A single individual source bit is complemented for a minority of the source vectors. The coded vectors are disparity independent with a single representation or disparity dependent with a primary and an alternate representation, where the alternate representation is a complement of the primary representation. 
   In another exemplary aspect of the invention, techniques are presented for encoding a partitioned 10B/12B transmission code. Pairs of five-bit source vectors are operated on to produce pairs of six-bit coded vectors. A starting disparity is determined. A synchronizing coded pattern is generated based on the starting disparity. When the starting disparity is positive, a predetermined pattern is generated. When the starting disparity is negative, a complement of the predetermined pattern is generated. 
   A more complete understanding of the present invention, as well as further features and advantages of the present invention, will be obtained by reference to the following detailed description and drawings. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1A  is a trellis diagram illustrating a number of primary vectors of a 5B/6B-T code portion of an 8B/10B-T transmission code according to an embodiment of the invention; 
       FIG. 1B  is a trellis diagram illustrating a number of primary vectors of a 5B/6B-T code portion of an 8B/10B-T transmission code according to an embodiment of the invention; 
       FIG. 2  is a trellis diagram illustrating a primary vector of a 5B/6B-T code portion of an 8B/10B-T transmission code according to an embodiment of the invention; 
       FIG. 3  is a trellis diagram illustrating a number of primary vectors of a 5B/6B-T code portion of an 8B/10B-T transmission code according to an embodiment of the invention; 
       FIG. 4  is a trellis diagram illustrating a number of primary vectors of a 5B/6B-T code portion of an 8B/10B-T transmission code according to an embodiment of the invention; 
       FIG. 5  is a coding table for the 5B/6B-T code portion of an 8B/10B-T transmission code according to an embodiment of the invention; 
       FIG. 6  is a coding table for the 3B/4B-T code portion of an 8B/10B-T transmission code according to an embodiment of the invention; 
       FIG. 7  is a coding table for a basic set of control characters for an 8B/10B-T transmission code according to an embodiment of the invention; 
       FIG. 8  is a coding table for an additional set of control characters for an 8B/10B-T transmission code according to an embodiment of the invention; 
       FIG. 9A  is a circuit diagram of the bit encoding portion of an 8B/10B-T encoder according to an embodiment of the invention; 
       FIG. 9B  is a circuit diagram of the disparity control portion of an 8B/10B-T encoder according to an embodiment of the invention; 
       FIG. 9C  illustrates the interrelationship between  FIGS. 9B and 9B  cont.; 
       FIG. 10  illustrates exemplary circuitry using the 8B/10B-T encoder shown in  FIGS. 9A and 9B  to compute disparity for a single byte through a faster implementation; 
       FIG. 11  illustrates exemplary circuitry using the 8B/10B-T encoder shown in  FIGS. 9A and 9B  to compute disparity for a single byte through a slower implementation; 
       FIG. 12  illustrates exemplary circuitry using the encoder shown in  FIGS. 9A and 9B  to compute disparity for four bytes through a faster implementation; 
       FIG. 12A  illustrates the interrelationship between  FIGS. 12 and 12  cont.; 
       FIG. 13  illustrates exemplary circuitry using the encoder shown in  FIGS. 9A and 9B  to compute disparity for four bytes through a slower implementation; 
       FIG. 13A  illustrates the interrelationship between  FIGS. 13 and 13  cont.; 
       FIG. 14  is a decoding table for decoding the 6B/5B-T code portion of a 10B/8B-T transmission code according to an embodiment of the invention; 
       FIG. 14A  illustrates the interrelationship between  FIGS. 14 and 14  cont.; 
       FIG. 15A  is a circuit diagram of the decoding portion of a 6B/5B-T decoder according to an embodiment of the invention; 
       FIG. 15B  is a circuit diagram of the disparity and error checking portion of a 6B/5B-T decoder according to an embodiment of the invention; 
       FIG. 16  is a decoding table for decoding the 4B/3B-T code portion of a 10B/8B-T transmission code according to an embodiment of the invention; 
       FIG. 17  is a circuit diagram of a 4B/3B-T decoder and error checks according to an embodiment of the invention; 
       FIG. 18  is a circuit diagram of a 10B/8B-T decoder using the 6B/5B-T decoder of  FIGS. 15A and 15B  and the 4B/3B-T decoder of  FIG. 17 ; 
       FIGS. 19 and 20  illustrate exemplary circuitry using the 8B/10B-T decoder shown in  FIG. 18  to compute disparity for a single byte through faster and slower, respectively, implementations; 
       FIG. 21  is a four-byte 10B/8B-T decoder; 
       FIG. 22  is a trellis diagram of a 10B/12B-T transmission code; 
       FIG. 23  is a table showing 5B/6B-T encoding for 10B/12B-T control characters; 
       FIG. 24  is a table of 6B trailers of the K3 vector used to form 12B control characters; 
       FIG. 25A  is a circuit diagram for the 5B/6B-T portion of the bit encoding of a 10B/12B encoder; 
       FIG. 25B  is a circuit diagram of the disparity control portion of the 10B/12B encoder; 
       FIG. 26A  is a circuit diagram of the 6B/5B-T decoding portion of the 12B/10B decoding circuit; and 
       FIG. 26B  is a circuit diagram of the disparity and error checking portion of the 12B/10B decoding circuit. 
   

   DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
   The present invention provides techniques for speeding up encoding and decoding for 8B/10B and 10B/12B transmission codes. 
   A. Introduction 
   The appendage “-T” (i.e., “Turbo”) is added to the references to the transmission codes used herein in order to distinguish these codes from conventional codes. The new 8B/10B-T transmission code retains the 5B/6B-T and the 3B/4B-T partitions. The codes presented herein are designed for high speed operation. Many of the changes between the conventional transmission codes and the transmission codes described herein are in the 5B/6B-T domain. For instance, for both the 5B/6B-T encoding and decoding described herein, fewer modifications of bit positions, in fewer vectors, are performed as compared to conventional 5B/6B techniques. As another example, the S-Function, which has an important purpose of preventing false commas, has been reduced to the minimum required to maintain the singularity of the comma at the expense of more frequent single runs of five in random data. A comma generally indicates proper byte boundaries and can be used for instantaneous acquisition or verification of byte synchronization. The K28.7 comma character of the traditional code has been swapped with a formerly invalid control character K3.7 (‘1100001110’ and its complement) which is not a comma character but has no sequence restrictions. Seven additional control characters have been defined and are listed in the table shown in FIG.  8 . 
   Notation 
   The signal names used in the equations of this document do not reflect any logic levels. Instead, they should be interpreted as abstract logic statements. However, in the circuit diagrams, the signal names may be prefixed with the letter P or N to indicate whether the function is true at the upper or lower level, respectively. The P and N prefixes are normally not used for net names which start with P and N, respectively. Net numbers starting with ‘n’ or ‘m’ are true at the lower level and take the P prefix if true at the upper level. In the logic equations, the symbols −, +, and ⊕ represent the Boolean AND, OR, and EXCLUSIVE OR functions, respectively. The apostrophe (&#39;) represents negation. 
   B. 5B/6B-T Encoding 
   In an exemplary embodiment, the 33 primary 6B vectors are classified into five groups as illustrated by the trellis diagrams of  FIGS. 1A ,  1 B,  2 ,  3 , and  4 . All the coded vectors of  FIGS. 2 through 4  have alternate, complementary versions (not shown in these figures but shown in  FIG. 5 ) assigned to an identical source vector. 
   Conceptually, coding is generally performed in two steps. First, the translation to a primary vector is made. For the coded vectors of  FIGS. 1A ,  2 ,  3 , and  4 , the first five bits of the coded vector are identical to the source vector and the sixth and last bit assumes a default value of zero. Any vectors with changes in individual bits of the source vector belong to the balanced, disparity independent class of  FIG. 1B. A  second step for the subset of the disparity dependent  120  coded vectors of  FIGS. 2 ,  3 , and  4  determines whether the alternate, complemented vector must be used to meet the disparity rules. Disparity dependent vectors have a plus sign or a minus sign in the DR column of the tables. 
   Generation of Primary 6B-T Vectors 
   The logic equations necessary for the translation to the primary vectors can be read directly from the columns ‘Primary abcdei’ and ‘Primary fghj’ of the tables shown in  FIGS. 5 and 6 , respectively.  FIG. 5  shows a table for 5B16B-T encoding, while  FIG. 6  shows a table for 3B/4B-T encoding. In the ‘Primary’ columns of these tables, all plain bits are the same as the corresponding input bit values ABCDE or FGH, respectively. The bold and underlined bits are forced to the complemented value indicated. The i-bit and the j-bit have a default value of zero. For the new code, only the nine 6B-T vectors of  FIG. 1B  require any changes in individual bit values as indicated by underscored bold entries and explicitly stated in the column ‘Inverted Bits’. 
   The encoding equations are extracted from the encoding tables in methodical steps as described below. For each column of a coded bit such as ‘a’, the vectors which require changes are listed, the bits to be complemented have a superscript asterisk, and the bits which can be used to classify the source vector sets are generally presented in boldface type. 
   The ‘a’ column has bold entries for D 0 , D 15 , D 16 , and D 31 . The respective uncoded bits ABCDE are listed, the A-bit has a superscript asterisk, and common patterns are marked to logically classify the vectors by simple expressions. 
   
     
       
         
             
             
             
             
             
           
             
                 
                 
             
           
          
             
                 
               D0  
               0* 0  0  0 0 
               D15 
               
                 1* 1 1 1 0 
               
             
             
                 
               D16 
               0*  0  0  0  0 
               D31 
                 1* 1 1 1  1 
             
             
                 
                 
             
          
         
       
     
   
   Ignoring the ‘A’ bit, D 0  and D 16  can be identified as a class by B′·C′·D′. 
   D 15  and D 31  are identified by BCD. 
   Using these identifiers, the encoding equation for bit ‘a’ can be written as follows:
 
 a=A ·( B·C·D ) ′+B′·C′·D′ 
 
   The ‘b’ column has bold entries for D 4 , D 8 , D 15 , and D 31 . 
   
     
       
         
             
             
             
             
             
           
             
                 
                 
             
           
          
             
                 
               D4 
                 0  0* 1 0 0 
               D15 
                 1 1* 1 1  0 
             
             
                 
               D8 
                 0  0* 0 1 0 
               D31 
                 1 1* 1 1  1 
             
             
                 
                 
             
          
         
       
     
   
   Ignoring the ‘B’ bit, D 4  and D 8  can be identified as a class by A′·E′·(C≠D). 
   D 15  and D 31  are identified by ACD. 
   Using these identifiers, the encoding equation for bit ‘b’ can be written as follows:
 
 b=B ·( A·C·D )′+ A′·E′· ( C≠D ). 
 
   The ‘c’ column has a bold entry for D 1 .
         D 1  1 0 0* 0 0       

   The encoding equation for bit ‘c’ can be written as follows;
 
 c=C+A·B′·D′·E′ 
 
   The ‘d’ column has bold entries for D 0  and D 31 .
         D 0  0 0 0 0* 0   D 31  1 1 1 1* 1       

   The encoding equation for bit ‘d’ can be written as follows: 
     d=D ·( A·B·C·E )′+( A′·B′·C′·E′ ) 
   The ‘e’ column has a bold entry for D 2 .
         D 2  0 1 0 0 0*       

   The encoding equation for bit ‘e’ can be written as follows:
 
 e=E+A′·B·C′·D′ 
 
   The ‘i’ column has nine entries with a value of one. All are marked in bold because the default value for the i-bit is zero. 
   
     
       
         
             
             
             
             
             
             
             
           
             
                 
             
           
          
             
               D0 
               0 0  0  0  0   
                 
               D0  
                 0 0 0 0  0 
               D4  
                 0 0  1 0  0   
             
             
               D1 
               1 0  0  0  0   
                 
               D16 
               
                 0 0 0 0 1 
               
               D8  
                 0 0  0 1  0   
             
             
               D2 
               0 1  0  0  0   
                 
                 
                 
               D15 
                 1 1 1 1  0 
             
             
               D3 
               1 1  0 0 0   
               K = 0 
                 
                 
               D31 
                 1 1 1 1  1 
             
             
                 
             
          
         
       
     
   
   The first four entries D 0  to D 3  can be identified by C′·D′·E′·K′. 
   D 0  and D 16  are identified by A′·B′·C′·D′ (taking advantage of redundancy, since D 0  is also listed in the left column). 
   D 4  and D 8  are identified by A′·B′·E′·(C≠D). 
   D 15  and D 31  are identified by A·B·C·D. 
   The encoding equation for bit ‘i’ can be written as follows:
 
 i=C′·D′·E′·K′+A′·B′·C′·D′+A′·B′·E′· ( C≠D )+ A·B·C·D  
 
   An important purpose for the S-function (e.g., S 1  and S 2  annotation in  FIG. 5 ) is to prevent false commas in the bits ‘cdeifgh’. In the original 8B/10B code of Franaszek and Widmer, U.S. Pat. No. 4,486,739, incorporated by reference above, the vectors D 11  and D 31  (D 20  in the original code) were included in the S-function only to lower the incidence of runs of five. They are left out now in order to reduce logic delay in the path for the encoding of the f and j bits, which have now delays comparable with the other bits. This simplifies and increases the effectiveness of pipe-lining, which is preferred for some high speed applications over parallel operation of several encoders for a single serial lane. The incidence of runs of five is now an average of about once per 256 bytes of random data, but there are still no contiguous runs of five. 
   For a positive running disparity at the front of the 6B vector (PDFS 6 ), the S function should be asserted for the two balanced vectors for which the coded pattern ends with cdei=1100. 
   
     
       
         
             
             
             
           
             
                 
                 
             
             
                 
               Source Vector 
               Coded Vector 
             
             
                 
                 
             
           
          
             
                 
             
          
         
         
             
             
             
             
          
             
                 
               D13 
               1 0 1  1  0 
               1 0  1  1 0 0 
             
             
                 
               D14 
               0  1 1 1 0   
               0  1 1  1 0 0 
             
          
         
         
             
             
          
             
                 
               S1 = PDFS6 · C · D · E′ · (A ≠ D) 
             
             
                 
                 
             
          
         
       
     
   
   For a negative running disparity at the front of the 6B vector (NDFS 6 ), the S function should be asserted for the two balanced vectors for which the coded pattern ends with cdei=0011. 
   
     
       
         
             
             
             
           
             
                 
                 
             
             
                 
               Source Vector 
               Coded Vector 
             
             
                 
                 
             
           
          
             
                 
             
          
         
         
             
             
             
             
          
             
                 
               D2  
               0 1  0  0 0 
               0 1 0 0 1 1 
             
             
                 
               D16 
                 0  0  0  0 1 
               1 0 0 0 1 1 
             
          
         
         
             
             
          
             
                 
               S2 = NDFS6 · A′ · C′ · D′ · (8 ≠ E) 
             
             
                 
                 
             
          
         
       
     
   
   C. 3B/4B-T Encoding 
   New 3B/4B-T vector assignments have been made following similar guidelines as used for the 5B/6B-T part. Changes are also made to accommodate the control character swap referred to above.  FIG. 6  shows a coding table for the 3B/4B-T transmission code. The 3B/4B-T encoding equations can be directly derived from FIG.  6 . 
   For the ‘f’ column, the coding equation is as follows:
 
 f=F·[F·G·H ·( S+Ky )]′= F·[G·H ·( S+Ky )]′, 
 
where S=S 1 +S 2  and Ky=K 23 +K 27 +K 29 +K 30 =K·K 3 ′=K·E.
 
Source Vector
         K 23  1 1 1 0 1 1   K 27  1 1 0 1 1 1   K 29  1 0 1 1 1 1   K 30  0 1 1 1 1 1   K 3  1 1 0 0 0 1       

   Ky includes also the control characters of  FIG. 8 , if implemented, and the simple equation Ky=KE still holds for six of those characters (K 19 . 7 , K 21 . 7 , K 22 . 7 , K 25 . 7 , K 26 . 7 , K 28 . 7 ). 
   Because the primary interest here is minimum circuit delay rather than circuit area, the equation for bit ‘f’ is transformed as follows to reduce the logic depth: 
     f=F′+G·H·S   1   +G·H·S   2   +G·H·K·E  
 
 f=F′+G·H·C·D·E′· ( A≠B ) ·PDFS   6 + G·H≠A′·C′·D′· ( B≠E )· NDFS   6   +G·H·K·E  
 
   For the actual circuit implementation, the term G·H is expanded back to F·G·H because the full term is required for the j-bit encoding anyway. 
   For the ‘g’ column, the coding equation is as follows:
 
 g=G+F′·G′·H′=G+F′·H′ 
 
   For the ‘h’ column, the coding equation is as follows:
 
h=H 
 
   For the ‘j’ column, the coding equation is as follows:
 
 j=G′·H′+F·G·H ·( S+Ky ) 
 
 j=G′+H′+F·G·H·S   1   +F·G·H·S   2   +F·G·H·Ky  
 
 j=G′·H′+F·G·H·C·D·E′· ( A≠B )· PDFS   6 + F·G·H·A′·C′·D′· ( B≠E ) NDFS   6   +F·G·H·K·E  
 
   D. Control Characters 
   A basic set of 12 control characters is listed in the table shown in FIG.  7 . The coded format of all characters except K3.7 is identical to the traditional partitioned 8B/10B code. However, the source vector K 28  is replaced by its complement K 3  and so the name for the respective identical coded vectors is changed. K3.1 and K3.5 are comma characters and the comma sequence is printed in bold type. Note that because of the run length limit of five, the second bit (b) of the sequence can be left out for purposes of comma search circuits which limits the search to 1x00000 or 0x11111. 
   In the table of  FIG. 7 , the column heading ‘Primary (6B)’ refers to the fact that the 6B part of the 10-bit control vectors of that column are primary vectors. The 4B part may be the alternate vector. This distinction has no significance beyond semantics. 
   An additional set of seven control characters are defined in the table shown in FIG.  8 . All these characters use the alternate A7 coding in the 4B domain when following a 6B vector with K=1, which does not require the alternate code for purposes of compliance with the coding constraints. The 6B part is a disparity dependent balanced vector, which is complemented by analogous rules as are the balanced 4B vectors when the K-bit has a value of one. These seven extra characters are not implemented in the circuit diagrams attached and treated as invalid characters. It is useful to know of their existence for certain applications. 
   E. Implementation of 8B/10B-T Bit Encoding 
   An implementation according to the above table shown in  FIGS. 5 and 6 , equations and design principles is illustrated in the circuit diagram shown in FIG.  9 A.  FIG. 9A  shows an encoding portion of 8B/10B-T encoding circuitry. The design presented here assumes that all inputs are available in complementary form. PA, PB, PC, PD, and PE are from a five-bit source vector, from which the six-bit coded vector PCa, PCb, PCd, PCe, and PCi is created. PF, PH, and PG are from a three-bit source vector, from which four-bit coded vector PCf, PCg, PCh, and PCj is created. 
   In  FIGS. 9A and 9B , there are a number of AND-OR (AO) blocks I 152  and I 429 . There are also a number of AND-OR-INVERT (AOI) blocks I 353 , I 348 , I 280 , I 354 , I 430 , I 474 , and I 469 . An AO block contains a number of two-input AND gates, the outputs of which are coupled to an OR gate. An AOI block is similar, but the output of the OR gate is inverted. AO and AOI blocks are described in more detail in Widmer, PCT Application No. US02/13,798, entitled, “8B/10B Encoding and Decoding for High Speed Applications,” filed on Apr. 30, 2002 (claiming the benefit of U.S. Provisional Patent Application No. 60/289,556, filed on May 8, 2001), already incorporated by reference above. 
   The signal PCMPLS 6  comes from the disparity control circuit shown in FIG.  9 B. This signal is used to invert the primary coded vector abcdei to create the alternate coded vector (abcdei)′. This inversion is performed according to disparity rules. Similarly, the signal PCMPLS 4  comes from the disparity control circuit shown in  FIG. 9B  below, and this signal is used to invert the primary coded vector fghj to create the alternate coded vector (fghj)′ according to disparity rules. 
   Notation for net names in the encoding circuit diagrams: The letters ‘a’ and ‘o’ within net-names refer to the Boolean AND and OR functions, respectively. The letter ‘n’ within a name negates the preceding parameter. The letters ‘e’ and ‘ue’ represent the symbols ‘=’ and ‘≠’, respectively. The capital letters “ABCDEFGHK” represent the uncoded input bits and the lower case letters “abcdeifghj” represent the coded format. These notations have been adopted because of the limitations of the logic design system. 
   F. 8B/10B-T Disparity Control 
     FIG. 9B  shows a disparity control portion of the 8B/10B-T encoding circuitry. The circuit in  FIG. 9B  is used for computing disparity, in accordance with disparity rules. The column ‘DR Class’ (DR=required running disparity) in  FIGS. 5 and 6  classifies the vectors according to the plus sign and the minus sign entries, which indicate the required disparity at the front of the primary coded vector. The expressions PDRS 6 , PDRS 4  and NDRS 6 , NDRS 4  represent a positive or negative required disparity, respectively, at the start of the 6B or 4B vectors. These signal names do not appear in the circuit diagram, because the gating required for CMPLS 6  and CMPLS 4  described below has been merged with said functions in order to eliminate one gating level. 
   1. PDRS 6   
   The set of ten primary 6B vectors with a negative block disparity and a plus sign in the DR column of  FIG. 5  is referred to as PDRS 6 . All are illustrated in the trellis diagram of FIG.  4 . They are generated by appending a zero bit to the following source vectors: 
   
     
       
         
             
             
             
             
             
             
             
           
             
                 
             
           
          
             
               D5  
                 1  0  1  0  0   
               D12 
                 0  0 1 1 0 
               D17 
               1  0 0  0  1   
                 
             
             
               D6  
               0 1  1  0  0   
               D18 
                 0 1  0 0 1 
               D24 
               0  0 0 1 1   
             
             
               D9  
               
                 1 0 0 1  
                 0 
               
               D20 
                 0  0  1  0 1 
               K3  
                 1 1  0 0 0 
               K = 1 
             
             
               D10 
               0 1 0  1 0   
               D10 
               
                 0 1 0 1 0 
               
             
             
                 
             
          
         
       
     
   
   The vectors D 5 , D 6 , D 9 , and D 10  can be identified by the expression E′·(A≠B)·(C≠D). 
   The vectors D 12 , D 18 , D 20 , and D 10  (redundant) are identified by A′·(B≠C)·(D≠E). 
   The vectors D 17  and D 24  are identified by B′·C′·E·(A≠D). 
   The control vector K 3  can be identified by E′·K since an examination of  FIG. 5  shows that the other control characters K 23 , K 27 , K 29 , and K 30  have all a value of one in bit position E. 
   The equation for PDRS 6  cap thus be expressed as follows:
 
 PDRS   6   =E′· ( A≠B )·( C≠D )+ A ′·( B≠C )·( D≠E )+ B′·C′·E·(A≠D)+E′≠K  
 
   2. NDRS 6   
   The set of five 6B vectors with a minus sign in the DR column of  FIG. 5  is referred to as NDRS 6 . Four of these vectors have a positive block disparity and are illustrated in the trellis diagram of FIG.  3 . The balanced vector D 7  (111000) of  FIG. 2  also requires a negative entry disparity. 
   
     
       
         
             
             
             
             
             
             
           
             
                 
             
           
          
             
               D7 
                 1 1 1 0  0 
               D/K29 
               1  0 1 1 1   
               D/K27 
                 1  1 0 1  1   
             
             
               D/K23 
                 1 1 1 0  1 
               D/K30 
               0  1 1 1   
             
             
                 
             
          
         
       
     
   
   The vectors D 7  and D/K 23  can be identified by A·B·C·D·. 
   The vectors D/K 29  and D/K 30  are identified by C·D·E·(A≠B). 
   The vector D/K 27  is identified by A·B·C′·D·E. 
   So the equation for NDRS 6  is as follows:
 
 MDRS   6   =A·B·C·D′+C·D·E ·( A≠B ) +A·B·C′·D·E  
 
   3. PDRS 4   
   The table of  FIG. 6  shows a plus sign in the DR column for the following six vectors shown with their uncoded values FGH K: 
   
     
       
         
             
             
             
             
             
           
             
                 
                 
             
           
          
             
                 
               K3.0 
               0 0 0   1   
               Dx/K3.2 
                 0 1  0  x 
             
             
                 
               K3.1 
               1 0 0   1   
               Dx/K3.4 
                 0  0 1  x 
             
             
                 
               K3.5 
               1 0 1   1   
             
             
                 
               K3.6 
               0 1 1   1   
             
             
                 
                 
             
          
         
       
     
   
   The four vectors in the left column above can be identified by K·(F·G)′ since none of the control characters have a DR entry of ± and all control characters with a negative DR have bit values of one for both the F and the G bit as shown in FIG.  6 . 
   The two vectors of the right column are identified by F′·(G≠H). 
   The equation for PDRS 4  is as follows:
 
 PDRS   4   =K· ( F·G )′+ F′· ( G≠H ) 
 
   4. NDRS 4   
   There are four rows in  FIG. 6  with a minus entry in the DR column. They all can be uniquely identified by FG. Therefore:
 
 NDRS   4   =F·G  
 
   5. CMPLS 6  and CMPLS 4   
   If the running disparity DF in front of the vector does not match the required entry disparity DR, a complement signal is generated which selects the alternate vector.
         CMPLS 6 =NDFS 6 ·PDRS 6 +PDFS 6 ·NDRS 6     CMPLS 4 =NDFS 4 ·PDRS 4 +PDFS 4 ·NDRS 4         

   In the circuit diagrams, the signal names PDFS 6 , PDFS 4  and NDFS 6  and NDFS 4  represent the actual running disparity at the front of the 6B and 4B vectors, respectively. Note that in the above two equations, the signals NDFS and PDFS are complementary and the signals PDR and NDR are orthogonal, i.e. only one can be true, but both can be false. 
   6. BALS 6   
   The set of 19 primary 6B vectors of  FIGS. 1A ,  1 B and  2  are balanced and identified by a 0 in the column ‘DB Class’ (i.e., block disparity). This set of vectors is referred to as BALS 6  and can be grouped as shown below: 
   
     
       
         
             
             
             
             
             
           
             
                 
             
           
          
             
               D0 0 0  0 0 0   
                 
               D8  0 0 0  1 0   
               D25 1 0 0  1 1   
               D0   0 0 0 0 0   
             
             
               D1 1 0  0 0 0   
                 
               D11 1 1 0  1 0   
               D26 0  1  0  1 1   
               D4   0 0  1  0 0   
             
             
               D2 0 1  0 0 0   
                 
               D13 1 0 1  1 0   
               D28 0 0 1  1 1   
             
             
               D3 1 1  0 0 0   
               K = 0 
               D14 0 1  1 1 0   
               D31  1 1  1  1 1   
               D7   1 1 1  0 0 
             
             
                 
                 
               D16 0 0 0  0 1   
                 
               D15  1 1 1  1 0 
             
             
                 
                 
               D19 1 1 0  0 1   
             
             
                 
                 
               D21 1  0 1 0 1   
             
             
                 
                 
               D22 0  1 1 0 1   
             
             
                 
             
          
         
       
     
   
   The 4 vectors D 0 , D 1 , D 2 , and D 3  are identified by C′·D′·E′·K′. 
   The 8 vectors D 8 , D 11 , Dl 3 , D 14 , D 16 , D 19 , D 21 , and D 22  are identified by
 
 XB   6 =( D≠E )·( A′·B′·C′+A·B·C′+A·B′·C+A′·B·C )=( D≠E )·( A⊕B⊕C )′. 
 
   The 4 vectors D 25 , D 26 , D 28 , and D 31  are identified by
 
 YB   6 = D·E ·( A·B·C+A·B′·C′+A′·B·C′+A′·B′·C )= D·E· ( A⊕B⊕C ). 
 
   The 2 vectors D 0  (redundant from Column  1 ) and D 4  are identified by
 
 WB   6   =A∝·B′·D′·E′.  
 
   The 2 vectors D 7  and D 15  are identified by ZB 6 =A·B·C·E′. 
   So the equation for BALS 6  can be expressed as:
 
 BALS   6 =( D≠E )·( A⊕B⊕C )′+ D·E· ( A⊕B⊕C )+A′·B′·D′·E′+C′·D′·E′·K′+A·B·C·E′
 
   In the usual circuit implementations, the signal BALS 6  is in the critical delay path and required in true and complement form which requires an inversion with extra delay. This problem can be side-stepped by generating the UNBALS 6  signal directly from the inputs similar to the circuit for BALS 6 . The UNBALS 6  signal requires only nine gates and is slightly less complex and has a little less delay, so if only one of the signals is generated and then inverted, preference should be given to the UNBALAS 6  signal. It is derived from the following grouping of all the vectors which have an entry other than 0 in the column DB of FIG.  5 . 
   The 8 vectors D 5 , D 9 , D 17 , D 29 , D 6 , D 10 , D 18 , and D 30  in the left column of the list below are identified by
 
 XUB   6 =( A≠B )·( C·D′·E′+C′·D·E′+C′·D′·E+C·D·E )=( A≠B )·( C⊕D⊕E ). 
 
   The three vectors D 12 , D 20 , and D 24  in the second column can be identified by
 
 YUB   6 = A′·B ′·( A·B·C′+A·B′·C+A′·B·C ). 
 
   The two vectors D 23  and D 27  in the third column can be identified by
 
 ZUB   6 = A·B·E· ( C≠D ). 
 
   The single vector K 3  in the right column can be uniquely identified by K=1 since coded 6B K vectors are unbalanced. 
   
     
       
         
             
             
             
             
             
             
             
             
             
           
             
                 
             
           
          
             
               D5 
               1 0 1 0 0 
               D12 
                 0 0  1 1 0 
               D/K23 
                 1 1  1 0  1   
               K3 
               1 1 0 0 0 0 
               K = 1 
             
             
               D9 
                 1 0  0 1 0 
               D20 
                 0 0  1 0 1 
               D/K27 
                 1 1  0  1 1   
             
             
               D17 
                 1 0  0 0 1 
               D24 
                 0 0  0 1 1 
             
             
               D/K29 
                 1 0 1  1 1 
             
             
               D6 
               0  1  1 0 0 
             
             
               D10 
                 0 1  0  1  0 
             
             
               D18 
                 0 1  0 0 1 
             
             
               D/K30 
                 0 1  1 1 1 
             
             
                 
             
          
         
       
     
   
   So the equation for UNBALS 6  can be expressed as:
 
 UNBALS   6 =( A≠B )·( C⊕D⊕E )+ A′·B′·(A·B·C′+A·B′·C+A′·B·C )+ A·B·E ·( C≠D )+ K  
 
   7. BALS 4   
   The set of ten source vectors with a zero in the DB column of  FIG. 6  is referred to as BALS 4 . 
   
     
       
         
             
             
             
             
             
             
           
             
                 
             
           
          
             
               Dx/K3.0 
               0  0  0 
               Dx/K3.3 
                 1 1  0 
               Dx/K3.6 
               0  1 1   
             
             
               Dx/K3.1 
               
                 1 0 0 
               
               Dx/K3.5 
                 1  0 1 
               Dx/K3.5 
               1 0  1   
             
             
                 
             
          
         
       
     
   
   In the third column, the Dx/K3.5 vector pair is listed redundantly to simplify the logic expression below.
 
 BALS   4 = G′·H′+F ·( G≠H )+ H ·( F≠G ) 
 
   Additional circuits governed by the signals BALS 6  and BALS 4  indicate the balance of a byte by the signal PBALBY which assumes the upper level for a balanced byte. 
   The technique for reducing the delay for the disparity function extending over one or more bytes as taught in Widmer, PCT No. US02/13798, entitled “8B/10B Encoding and Decoding for High Speed Applications,” claiming the benefit of U.S. Patent Application No. 60/289,556 that was filed on May 8, 2001, the disclosure of which is already incorporated by reference above, apply equally to the code presented here and is summarized briefly again. See  FIGS. 3B ,  5 ,  6 ,  7 , and  8  in Widmer, PCT No. US02/13798. A reduction in the combined delay of a 5B/6B (or 5B/6B-T) and a 3B/4B (or 3B/4B-T) encoder or of several 8B/10B (or 8B/10B-T) encoders operating in parallel results from the methodology used to determine the disparity at any vector boundary as shown at the bottom of circuit diagram FIG.  9 B and on the diagram  FIG. 10  (described below). Given a starting disparity such as NDFBY (Negative Disparity in Front of a Byte), the running disparity at any subsequent vector boundary remains unchanged if the combined number of balanced S6 and S4 vectors between the two points is even, otherwise it assumes the complementary polarity. This is in contrast to the more obvious techniques which observe the disparity as it propagates from vector to vector. The expression NDFS 4  represents a negative running disparity in front of the 4B vector. 
   The 8B/10B-T encoding circuitry of  FIG. 9B  has an output which indicates whether the coded 10-bit byte is balanced or not, but there is no output to indicate the ending disparity. Generally, the starting disparity for a vector is determined from the disparity of a prior reference point and the odd or even number of balanced vectors in between. 
   G. Staggered 5B/6B-T and 3B/4B-T Encoding and Decoding 
   Staggered timing of the 5B/6B-T and 3B/4B-T encoding and decoding circuits can be used to reduce the latency of transceivers which can be an issue for short connections. It also helps to reduce the performance requirements of the circuits. 
   Before consideration is given to pipe-lining either the 5B/6B-T or the 3B/4B-T encoder, the possibility of delaying the encoding of the 4B vectors with reference of the 6B vectors should be evaluated. The encoder output is typically fed to a serializer. If the serializer is a multiplexer of the commutator type, it is necessary to double latch some of the trailing bits so the updating of the 10-bit register does not interfere with the serialization, i.e. the first 6 bits ‘abcdei’ are updated while the last four bits ‘fghj’ are serialized and vice-versa. It is recommended that this double latching function be moved in front of the encoder with the bits ‘FGHK’ so the execution of 6B encoding and  4 B encoding is staggered. Such an arrangement greatly reduces the timing demands for the generation of the S-function, the BALS 6 , and the UNBALS 6  signals. 
   Analogous staggering of the 6B/5B-T and the 4B/3B-T decoding circuits can be a useful technique. 
   H. Disparity Circuit for 1-Byte Encoder, Fast Version 
   Several disparity circuits are presented now. The first disparity circuit that will be described is a faster version, which is faster relative to a slower version (described below). The fast version allows encoding of a byte to take place in a single cycle. This is described in more detail in Widmer, PCT Application No. US02/13,798, entitled, “8B/10B Encoding and Decoding for High Speed Applications,” filed on Apr. 30, 2002 (claiming the benefit of U.S. Provisional Patent Application No. 60/289,556, filed on May 8, 2001), which has already been incorporated by reference above. A circuit is shown in  FIG. 10  for computing disparity. The circuit in  FIG. 10  uses the encoding circuitry of  FIGS. 9A and 9B  (encompassed in module  13 ), along with XNOR2 (e.g., a two-input XNOR) gate I 25 . This circuit takes advantage of the fact that it is not necessary that the starting disparity must be known immediately for the encoding process. Since the evaluation of the running disparity at the end of a byte may be in the critical delay path, the final operations for determining the starting disparity PDFBY of the next byte are deferred to the next byte interval to be executed while initial bit encoding independent of the running disparity is performed. The cost of doing this is to pass along two parameters rather than just one to the next byte interval but it increases the timing margin by an amount equal to the delay of the XNOR2 gate I 25 . 
   The circuit diagram in  FIG. 10  provides the starting disparity PDFBY and a coded byte disparity ‘PBALBY’ for the current byte based on these identical two parameters carried over from the preceding byte. At the end of each byte cycle, the signals PDFBY and PBALBY are stored in two latches with outputs PDFBY_LAST and PBALBY_LAST, respectively. The respective latches are not shown since their timing is identical to or closely related to the timing for the data output latches. These parameters are used for the computation of the starting disparity of the next byte. The signal PDFBY is at the upper level for a positive running disparity in front of the new byte. 
   There are two coded vectors per byte ( 6 B,  4 B). So if there is an odd number of balanced or unbalanced vectors between the start of the current byte and a previous byte boundary, the starting disparity for the current byte is the complement of the disparity at the reference point, otherwise it is the same. 
   I. Disparity Circuit for 1-Byte Encoder, Slower Version 
   To better illustrate the faster approach (e.g., shown in section H) to disparity operations, a slower disparity circuit is shown in FIG.  11  and is applicable where the higher performance is not needed. The ending disparity PDEBY is derived within one and the same encoding cycle. Then only one parameter must be passed on to the next cycle with a single latch. The data input of this latch is PDEBY and the output is PDFBY, the disparity at the front of the next byte. 
   J. Disparity Circuit for 4-Byte Encoder, Faster Version 
   A disparity circuit is shown in  FIG. 12  for determining disparity for four bytes. This circuit shows four encoders operating in parallel on a 4-byte word. The modules I 1 , I 44 , I 38 , and I 3  each encompass the encoding circuitry of  FIGS. 9A and 9B . The starting disparity of the block and of the first byte is given by the input PDFW (Pos. Disp. in Front of the Word). It is generated from signals carried over from the preceding word cycle by a pair of latches (not shown), i.e., the running disparity PDF 3 _LAST in front of the last byte (# 3 ) and the balance signal PBALBY 3 _LAST of byte # 3 . The starting disparity for each of the remaining three bytes is obtained by circuits operating in parallel from this reference point and the number of balanced bytes in between using a set of XOR and XNOR gates. The signal PBAL 012  is at the upper level if the block comprising the first three bytes is balanced. 
   K. Disparity Circuit for 4-Byte Encoder, Slower Version 
   A disparity circuit is shown in  FIG. 13  for determining disparity for four bytes. The circuit shown in  FIG. 13  is slower than the circuit shown in FIG.  12 . In  FIG. 13 , the ending disparity PDEW of the word is generated within a single clock cycle. A single latch (not shown) with the signal PDEW at the data input passes along to the next cycle the ending disparity for the word. The output of this latch is the starting disparity PDFW for the next cycle. 
   L. 10B/8B-T Decoder 
   A 10B/8B-T decoder comprises circuits to restore the original byte ABCDEFGH K, and circuits to indicate all transmission errors to the extent that they are detectable by the transmission code. For decoding, the trailing bits ‘i’ and ‘j’ are just dropped but their value guides some of the decoding functions. 
   The tables in  FIGS. 14 and 16  (described below) show the relationships between the coded and decoded vectors for the 6B/5B-T and 4B/3B-T decoding, respectively. For some vector names, there are several rows to represent the true and complement version and to show the different rules for the decoding of specific bits. If for a row, the equation in the column ‘Decoding Class’ is true, the bold, underlined bits in the column ‘ABCDE K’ are complemented. The suffix ‘P’ or ‘A’ of a vector name refers to the primary or alternate version of a vector, respectively. 
   1. 6B/5B-T Decoder 
   The relationship between the coded 6B vectors and the corresponding decoded 5B vectors for 6B/5B-T decoding, performed by a 6B/5B-T decoder is shown in  FIG. 14. A  6B/5B-T bit decoding circuit is shown in FIG.  15 A.  FIG. 15B  shows the corresponding disparity and error checking circuits of the decoder. 
   a. Inversion of the Five Leading Bits, CMPL 5   
   If the received trailing bit ‘i’ has a value of one and the vector is not balanced or if the leading three bits have all a value of zero, then all the leading five bits are complemented. The complements of all valid vectors falling into this category are illustrated in  FIGS. 2 ,  3 , and  4  and their true values are listed in the ‘Alternate’ column of FIG.  5 . 
   It is assumed that invalid vectors with five or six ones originated from vectors with four ones and they will be complemented as though the extra ones were not present, i.e., it is not necessary to include the zeros in the Boolean expressions for the 11 vectors below with positive disparity. 
   
     
       
         
             
             
             
             
             
             
             
           
             
                 
                 
             
           
          
             
                 
               D5 
               0 1 0  1 1 1   
               D12 
                 1 1  0 0 1  1   
               D9  
               0 1  1  0 1  1   
             
             
                 
               D6 
               1 0 0  1 1 1   
               D20 
                 1 1  0 1 0  1   
               D10 
               1 0  1  0 1  1   
             
             
                 
               D7 
               0 0 0  1 1 1   
               D24 
                 1 1  1 0 0  1   
               D17 
               0 1  1  1 0  1   
             
             
                 
               K3 
               0 0 1  1 1 1   
               D18 
               1 0  1  1 0  1   
             
             
                 
                 
             
          
         
       
     
   
   Similarly, it is assumed that invalid vectors with five or six zeros originated from sectors with four zeros and they will be complemented as though the extra zeros were not present, i.e., it is not necessary to include the ones in the Boolean expressions for the four vectors below with negative disparity. 
   
     
       
         
             
             
             
             
             
           
             
                 
                 
             
           
          
             
                 
               D/K230 
                 0 0  0 1  0  1 
               D/K29 
               0 1  0 0 0  1 
             
             
                 
               D/K270 
                 0 0 1  0 0 1 
               D/K30 
               1 0  0 0 0  1 
             
             
                 
                 
             
          
         
       
     
   
   A Boolean expression CMPL 5  for the complementation of the leading five bits of the fifteen 6B vectors above is developed below:
 
 CMPL   5 = d·e·i+a·b·i· ( c+d+e )+ c·i ·( a+b )·( d+e )+ a′·b′·e′· ( c′+d′ )+ c′·d′·e′· ( a′+b′ ) 
 
   In the circuit diagram shown in  FIG. 15A , the following net names are used:
         n01=a·b·i·(c+d+e)+d·e·i n02=c·i·(a+b)·(d+e)   n1=a′·b′·e′·(c′+d′)+c′·d′·e′·(a′+b′)       

   b. Selected Bit Inversions 
   There are nine disparity independent vectors with an i-bit value of one. For eight of these, one or more bits in the leading five positions must be changed for decoding. 
   Bit A 
     FIG. 14  shows for which of these vectors, the first bit should be complemented:
         D 0  1 0 0 1 0 1   D 15  0 0 1 1 0 1   D 16  1 0 0 0 1 1   D 31  0 0 1 0 1 1   CMPLa=CMPL 5 +b′·i·(a≠c)·(d≠e)   n2=b′·i·(a≠c)·(d≠e)       
   Bit B 
   
     
       
         
             
             
             
             
             
           
             
                 
                 
             
           
          
             
                 
               D4 
                 0 1 1  0 0  1   
               D15 
                 0 0 1  1 0  1   
             
             
                 
               D8 
                 0 1  0 1  0 1   
               D31 
                 0  0 1 0 1  1   
             
             
                 
                 
             
          
         
       
     
       
       
         
           CMPLb=CMPL 5 +a′·b·e′·i·(c≠d)+a′·b′·c·i·(d≠e) 
           n4=a′·b′·c·i 
           n5=a′·b·e′·i·(c≠d)+a′·b′·c≠i≠(d≠e) 
         
       
     
  
   Bit C
         D 1  1 0 1 0 0 1   CMPLc=CMPL 5 +a·b′·c·d′·e′·i       

   Bit D
         D 0  1 0 0 1 0 1   D 31  0 0 1 0 1 1   CMPLd=CMPL 5 +b′·i·(a≠c)·(c≠d)·(d≠e)   n7=b′·i·(a≠c)·(c≠d)·(d≠e)       

   Bit E
         D 2  0 1 0 0 1 1   CMPLe=CMPL 5 +a′·b·c′·d′·e≠i       

   Bit K 
   See the table in FIG.  7 : K3.x and Ky.7, where x is any number from zero to seven and y has a value of 23, 27, 29, or 30.
 
 K= ( c=d=e=i )+( e≠i )·( i=g=h=j ) 
 
   The above equation is implemented as follows, because the term (c′·d′·e′·i′) is also required in the 4B/3B-T decoder:
 
 K=c·d·e·i+c′·d′·e′·i′+ ( e≠i )·( i=g )·( g=h )·( h=j ) 
 
   c. Logic Equation for invalid Vectors R 6 , INVR 6   
   There are a total of 16 invalid R6 vectors:
 
 INVR   6   =a·b·c·d+a′·b′·c′·d′+P 3 x·e·i+Px 3 ·e′·i′ 
 
 P 3 x=P 31+ P 40= a·b·c+a·b·d+a·c·d+b·c·d  
 
 P 3 x=P 13+ P 04= a′·b′·c′+a′·b′·d′+a′·c′·d′+b′·c′·d′ 
 
   Concerning notation for net names in the decoding circuit diagrams of  FIGS. 15A and 15B ; For the Boolean operators, the identical letters are use used as for the encoding diagrams, but they are capitalized (A, O, N, E, UE) to avoid confusion with some of the lower case letters abcdeifghj which represent the coded bits. 
   2. 6B/5B-T Disparity Checks 
   The column ‘DR’ of the table shown in  FIG. 14  lists the required disparity at the start of the respective 6B vectors and the column ‘DR Class’ identifies the respective input bit patterns. In an application by Widmer, PCT Application No. US02/13,798, entitled, “8B/10B Encoding and Decoding for High Speed Applications,” filed on Apr. 30, 2002 (claiming the benefit of U.S. Provisional Patent Application No. 60/289,556, filed on May 8, 2001), incorporated by reference previously, the column DU is called DB. The old column DB has been changed to DU and lists a positive or negative exit disparity for the disparity dependent vectors only. Disparity independent vectors have no entry in the DU column. In the old design, disparity independent vectors passed the input disparity to the output. In the new design, disparity independent vectors are ignored and bypassed for disparity purposes for shorter delay. Short delay is especially important for the DU outputs PDUR 6  and NDUR 6 . To achieve the shorter delay, a dedicated column ‘DU Class’ has been added, which sorts the received vectors into DU classes in the most efficient way. 
   a. Logic Equations for Required Input Disparity DRR 6   
   The terms PDRR 6  and NDRR 6  represent the R6 vectors which require a positive or negative running disparity, respectively, at the start of the vector. All invalid vectors with five or six zeros are also assigned a positive required entry disparity. Therefore, any vector with three leading zeros or four or more zeros requires a positive entry disparity. The valid vectors with positive required front end disparity are listed below. 
   
     
       
         
             
             
             
             
             
             
           
             
                 
             
           
          
             
               D7 
                 0  0  0 1  1  1   
               D5 
                 1  0  1 0  0  0   
               D9 
               1 0 0 1 0 0 
             
             
               D/K23 
                 0 0 0 1  0 1 
               D6 
               0 1  1 0 0 0   
               D10 
               0  1  0 1 0 0 
             
             
               D24 
               
                 0 0 0 1 1 0 
               
               K3 
               1 1 0 0  0 0   
               D12 
               0 0  1  1 0 0 
             
             
                 
                 
                 
                 
               D17 
               1 0 0 0 1 0 
             
             
                 
                 
                 
                 
               D18 
               0  1  0 0 1 0 
             
             
                 
                 
                 
                 
               D20 
               0 0 1 0 1 0 
             
             
                 
                 
                 
                 
               D/K27 
               0 0 1 0 0 1 
             
             
                 
                 
                 
                 
               D/K29 
               0 1 0 0 0 1 
             
             
                 
                 
                 
                 
               D/K30 
               1 0 0 0 0 1 
             
             
                 
             
          
         
       
     
   
   Making allowance for invalid vectors, the three vectors in the left column can be identified by the Boolean expression a′·b′·c′. The three vectors in the center column are identified by d′·e′·i′·(a·b·c)′. The nine vectors in the right column have two zeros in both the leading and trailing three bit positions. Because of the inclusion of the vectors with more than four zeros, all the one bits can be ignored and the remaining vectors (valid or invalid) can be identified by the expression:
 
( a′·b′+a′·c′+b′·c′ )·( d′·e′+d′·i′+e′·i′ ) 
 
Therefore:
 
 PDRR   6   =a′·b′·c′+d′·e′·i′· ( a·b·c )′+( a′·b′+a′·c′+b′·c ′)·( d′·e′+d′·i′+e′·i′ ) 
 
   In the circuit diagram shown in  FIG. 15B , the following net names are used:
         n9=(a′·b′+a′·c′+b′·c′)   n10=(d′·e′+d′·i′+e′·i′)   n11=n9·n10   n12=d′·e′·i′·(a·b·c)′       

   The vectors with negative required front end disparity are listed below. 
   
     
       
         
             
             
             
             
             
             
           
             
                 
             
           
          
             
               D7 
                 1  1  1  0 0 0 
               D5 
               0 1 0  1 1 1   
               D9 
               0 1 1 0 1 1 
             
             
               D/K23 
                 1 1 1  0 1 0 
               D6 
                 1  0 0  1 1 1   
               D10  
               1 0  1 0 1  1 
             
             
               D24 
               1  1  1 0 0  1   
               K3 
               0 0  1 1 1 1   
               D12 
                 1 1  0 0  1 1   
             
             
                 
                 
                 
                 
               D17 
               0 1  1  1 0  1   
             
             
                 
                 
                 
                 
               D18 
                 1 0 1  1 0 1 
             
             
                 
                 
                 
                 
               D20 
               
                 1 1 0 1 0 1 
               
             
             
                 
                 
                 
                 
               D/K27 
                 1 1 0 1 1  0 
             
             
                 
                 
                 
                 
               D/K29 
               1 0 1  1 1  0 
             
             
                 
                 
                 
                 
               D/K30 
                 0 1  1  1 1  0 
             
             
                 
             
          
         
       
     
   
   The three vectors D 7 , D/K 23 , and D 24  in the left column above can be identified by the Boolean expression a·b·c. The three vectors in the center column are identified by d·e·i (a+b+c). The nine vectors in the right column are identified by the expression:
 
( a·b+a·c+b·c )·( d·e+d·i+e·i ) 
 
   Therefore:
         NDRR 6 =a·b·c+d·e·i·(a+b+c)+(a·b+a·c+b·c)·(d·e+d·i+e·i)   n13=(a·b+a·c+b·c)   n14=(d·e+d·i+e·i)   n15=d·e·i·(a+b+c)   n16=n13·n14       

   b. Logic Equation for Monitoring Byte Disparity Violations, DVBY 
   Bytes with only disparity independent vectors R 6  and R 4  are ignored for disparity checking purposes. There is a disparity violation DVBY at a specific byte under the following conditions:
         1. The required entry disparity of the R6 vector does not match the running disparity at the front of the byte.       

   2. The required entry disparity of the R4 vector does not match the running disparity in front of the byte and the R6 vector does not have a required entry disparity which is the complement of the required entry disparity for R 4 .
         n17=NDRR 4 ·PDFBY·PDRR 6 ′   n18=PDRR 4 ·NDFBY·NDRR 6 ′       

   A disparity violation internal to a byte from a disparity dependent R4 vector mismatched to a disparity dependent R6 vector is included in the set of invalid bytes, but not in DVBY. The disparity violation at a byte DVBY is thus given by the equation:
 
 DVBY=NDFBY ·( PDRR   6   +PDRR   4 · NDRR   6 ′)+ PDFBY ·( NDRR   6   +NDRR   4   ·PDRR   6 ′) 
 
   The terms PDFBY and NDFBY represent a positive or negative running disparity, respectively, at the front of the byte and one or the other function is always true. However, for PDRR 6  and NDRR 6 , none of the functions is true for the case of most balanced vectors. 
   c. Logic Equations for the assumed ending Disparities PDUR 6  and NDUR 6   
   Four leading ones or zeros in the encoded domain are invalid vectors and can be generated only by at least one error. For the case of a single error and e=i, the R6 vector was obviously one of the initially balanced vectors 011100, 101100, 110100, 111000, or their complement. Of these, all except 111000 and 000111 should not generate PDUR 6  or NDUR 6  which would generate a superfluous code violation at the next disparity dependent vector in addition to the invalid vector at the actual error location. 
   Therefore, the signal NDUR 6  should be asserted in response to the following 6B inputs:
         1. All bits with a value of zero (1).   2. Five bits with a value of zero (6).   3. Four bits with a value of zero except the pattern ‘000011’ (14).   4. The pattern ‘111000’.       

   The list of these vectors is almost identical to the list above for PDRR 6  except that the pattern for D 7  is the complement, i.e., 111000, so the modified left column looks as follows:
         D 7  1 1 1 0 0 0   D/K 23  0 0 0 1 0 1   D 24  0 0 0 1 1 0       

   The vectors D/K 23  and D 24  above are defined by the expression:
 
 n 19= a′·b′·c′·d· ( e∝+i ′) 
 
   The vector D 7  is defined by the expression:
 
 n 20= a·b·c·d′·e′·i′ 
 
   The following net name abbreviation is used in the circuit diagram shown in FIG.  15 B:
 
 n 21= n 19+ n 20 
 
   The expression for n21 replaces the term a′·b′·c′ in the PDRR 6  equation, therefore:
 
 NDUR   6 = n 21+ d′·e′·i′· ( a·b·c )′+( a′·b′+a′·c′+b′·c ′)·( d′·e′+d′·i′+e′·i′ ) 
 
   The signal PDUR 6  should be asserted in response to the following 6B inputs:
         1. All bits with a value of one (1).   2. Five bits with a value of one (6).   3. Four bits with a value of one except the pattern ‘111100’ (14).   4. The pattern ‘000111’.       

   Again, the list of these vectors is almost identical to the list above for NDRR 6  except that the pattern for D 7  is the complement, i.e. 000111, so the left column looks as follows:
         D 7  0 0 0 1 1 1   D 23  1 1 1 0 1 0   K 24  1 1 1 0 0 1       

   The three vectors above are defined by the expression n24. The following net name abbreviations are used in the circuit diagram show in FIG.  15 B:
         n22=a·b·c·d′·(e+i)   n23=a′·b′·c′·d·e·i   n24=n22+n23       

   The term n24 replaces the term a·b·c in the NDRR 6  equation: 
   Therefore:
 
 PDUR   6 = n 24 +d·e·i· ( a+b+c )+( a·b+a·c+b·c )·( d·e+d·i+e·i ) 
 
   d. Circuit Simplification 
   The first term (D 7 ) in each of the equations for PDUR 6  and NDUR 6  prevents double counts for some type of errors. However, overall some double counts are unavoidable and the added term improves the accuracy of the error count by a minuscule amount. It is debatable whether it should be dropped. A further more significant simplification is possible if the first vector (D 7 ) is also dropped from PDRR 6  and NDRR 6 . This may delay the error detection for some patterns by a very few bytes but does not degrade error detection per se. The circuit advantage is that with these two simplifications PDRR 6  is equal to NDUR 6 , and NDRR 6  is equal to PDUR 6 . Analogous simplifications are possible for the 4B/3B-T error detection, but there the circuit simplification is less compelling. 
   3. 4B/3B-T Decoder and Error Checks 
   The table in  FIG. 16  shows relationships between the coded 4B vectors and the corresponding decoded 3B vectors. A decoder for 4B/3B-T decoding is shown in FIG.  17 . 
   a. Logic Equations for the Generation of the decoded Bits F, G, H, K 
   Generally, F=f, G=g, H=h, except for the conditions listed below for which the complement of the respective uncoded bit is generated, e.g., H=h′. 
   Bit F 
   For 4B/3B-T decoding, the f-bit is complemented for the vectors listed below. For the four vectors in the left column, complementation is applicable only if the vectors are preceded by K 3  with negative ending disparity, i.e., if c′·d′·e′·i′ is true. 
   
     
       
         
             
             
             
             
             
             
           
             
                 
             
           
          
             
               K3.0 
                 1  0 1 0 
               Dx/K3.2 
               1 0  1 1   
               Dx/K3.7 
               0 0 0  1   
             
             
               K3.1 
               0 1 1 0 
               Dx/K3.3 
               0 0  1 1   
               Dx/K3.4 
               1 1 0  1   
             
             
               K3.5 
               0 1 0  1   
               Dx/Ky.7 
               0  1 1 1   
             
             
               K3.6 
               1 0 0  1   
             
             
                 
             
          
         
       
     
   
   The left column can be characterized by m0=(c′·d′·e′·i′)·(f≠g)·(h≠j). 
   The center column can be characterized by m2=h·j·(f·g)′. 
   The right column can be characterized by m1=(f=g)·h′·j. 
   The Boolean expression CMPLf to complement the f-bit is thus:
 
 CMPLf= ( c′·d′·e′·i′ )·( f≠g )·( h≠j )+ h·j· ( f·g )′+( f=g )· h′·j=m 0 +m 1 +m 2 
 
   Bit G 
   For 4B/3B-T decoding, the g-bit is complemented for the vectors listed below. For the three vectors in the left column, complementation is applicable only if the vectors are preceded by K 3  with negative ending disparity, i.e. if c′·d′·e′·i′ is true. 
   
     
       
         
             
             
             
             
             
             
           
             
                 
             
           
          
             
               K3.1 
               0 1 1 0 
               Dx/K3.2 
               
                 1 0 1 1 
               
               Dx/K3.7 
               0  0 0 1   
             
             
               K3.5 
               0 1 0 1 
               Dx/K3.3 
               0  0 1 1   
               Dx/Ky.7 
               1  0 0  0 
             
             
               K3.6 
                 1  0 0 1 
               Dx/K3.0 
               0  1 0 1   
             
             
                 
                 
               Dx/K3.4 
               1  1 0 1   
             
             
                 
             
          
         
       
     
   
   The left column can be characterized by
         (c′·d′·e′·i′)·(f≠g)·(h≠j)·(f·h)′=m0·(f·h)′       

   The center column can be characterized by m5=g′·h·j+g·h′·j. 
   The right column can be characterized by m4=(f≠j)·g′·h′. 
   The Boolean expression CMPLg to complement the f-bit is thus:
 
 CMPLg= ( c′·d′·e′·i′ )·( f≠g )·( h≠j )≠( f·h )′+ g′·h·j+g·h′·j+ ( f≠j )· g′· 
 
 CMPLg=m 0·( f·h )′ +m 4+ m 5 
 
   Bit H 
   For 4B/3B-T decoding, the h-bit is complemented for the vectors listed below. For the four vectors in the left column, complementation is applicable only if the vectors are preceded by K 3  with negative ending disparity, i.e., if c′·d′·e′·i′ is true. 
   
     
       
         
             
             
             
             
             
             
           
             
                 
             
           
          
             
               K3.0 
               1 0 1 0 
               Dx/K3.2 
               1  0 1 1   
               Dx/K3.7 
               0 0 0 1 
             
             
               K3.1 
               0 1 1 0 
               Dx/K3.3 
               0  0 1 1   
               Dx/K3.4 
               1 1  0 1   
             
             
               K3.5 
               0 1 0 1 
                 
                 
               Dx/Ky.7 
               1 0 0 0 
             
             
               K3.6 
               1 0 0 1 
             
             
                 
             
          
         
       
     
   
   The left column is identical to what is listed under Bit F above and can be characterized by m0=(c′·d′·e′·i′)·( f≠g )·( h≠j ). 
   The center column can be characterized by g′·h·j. 
   The right column can be characterized by (f=g)·h′·j+(f≠j)·g′·h′=m1+m4, where the second term includes Dx/K3.7 redundantly to reuse an expression already available from bit g decoding. 
   The Boolean expression CMPLh to complement the h-bit is thus:
 
 CMPLh= ( c′·d′·e′·i′ )·( f≠g )·( h≠j )+ g′·h·j+ ( f=g )· h′·j +( f≠j )· g′·h′ 
 
 CMPLh=m 0 +m 1 +m 4+ g′·h·j  
 
   b. Logic Equations for the required Disparity at the Front of the R4 Vector 
   The terms PDRR 4  and NDRR 4  represent the required positive or negative disparity, respectively, at the front of the R4 vector. 
   A total of six 4B vectors require a positive disparity PDRR 4  at the front:
         1. All four bits have a zero value which is an invalid vector.   2. There is a single one bit in the 4-bit vector.   3. The vector 0011.       

   The first and the third condition are met by f′·g′ which also overlaps the second condition. The second condition is met by m6=( f·g )′·h′·j′. Therefore,
 
 PDRR   4   =f′·g′+m 6 
 
   A total of six 4B vectors require a negative disparity NDRR 4  at the front:
         1. All four bits have a one value which is an invalid vector.   2. There is a single zero bit in the 4-bit vector.   3. The vector 1100.
 
 NDRR   4   =f·g+ ( f+g )· h·j  
       

   c. Logic Equations for the assumed ending Disparities PDUR 4  and NDUR 4   
   A total of six 4B vectors have a positive ending disparity PDUR 4 :
         1. All four bits have a one value which is an invalid vector.   2. There is a single zero bit in the 4-bit vector.   3. The vector 0011.
 
 PDUR   4 = h·j+f·g· ( h+j ) 
       

   A total of six 4B vectors have a negative ending disparity NDUR 4 :
         1. All four bits have a zero value which is an invalid vector.   2. There is a single one bit in the 4-bit vector.   3. The vector 1100.
 
 NDUR   4   =h′·j′+f′·g′· ( h·j )′
       

   d. Logic Equation for invalid Vector R 4 , INVR 4   
   There are a total of two inherently invalid R4 vectors: all ones or all zeros (f=g=h=j). Some combinations of R6 and R4 vectors are invalid, such as violations of the S-function rules (c≠e=i=f=g=h), which represents a false comma, and the bit configuration (i≠g=h=j) which can generate another false comma. These invalid R4 vectors are lumped together in the signal INVR 4 :
 
 INVR   4 =( f=g=h=j )+( c≠e=i=f=g=h )+( i≠g=h=j ) 
 
   The nine Kx.7 control characters shown in the table in  FIG. 8  are not implemented in the circuit designs shown and therefore classified as invalid characters. The R 6  part of these characters is derived from 5-bit source vectors of the P22 class, which have two ones and two zeros in the first four bit positions, and additionally they have complementary bits in the last two positions. So an invalid Kx.7 control character is present, if the following conditions are met:
 
 VKx   7 =( i·g·h·j+i′·g′·h′·j′ )·( e≠i )· P 22 
 
   Where P22=(a≠b)·(e≠d)+(a=b)·(c=d)·(b≠c) 
   If the required entry disparity DRR 4  does not match the exit disparity DUR 6  of a disparity dependent R6 vector, an invalid character is flagged by the signal DV 64  under the following conditions:
 
 DV   64   =PDRR   4 · NDUR   6 + NDRR   4 · PDUR   6 
 
   The signal INVR 4 V 64  is the OR function of INVR 4  and DV 64 . 
   4. 10B/8B-T Decoder, Error Checks 
   A 10B/8B-T decoder is shown in FIG.  18 . 
   a. Error Reporting 
   The circuit shown in  FIG. 18  merges the 6B/5B-T and 4B/3B-T decoders into a byte decoder and generates the signal INVBY, which indicates an inherently invalid byte that includes disparity violations DV 64 . These violations are evident from an examination of just the 10 coded bits of the current byte. The output INBY is provided for support of certain error correction techniques which require the identification of the erroneous byte. The signal VIOL signals either an invalid byte or a disparity violation DVBY detected at this location which may result from an error in this or a preceding byte. The circuit delays for DVBY and VIOL are the longest for the decoder. Fortunately, for many applications these outputs can be reported during the next byte cycle with no adverse impact, i.e., pipe-lining limited to these circuits is possible. 
   b. Disparity Monitoring 
   If either one or both of the vectors are disparity dependent, either PDUBY or PNDUBY are asserted to establish a positive or negative running disparity, respectively, at the end of the byte:
 
 PDUBY=PDUR   4   +PDUR   6   ·NDUR   4 ′
 
 NDUBY=NDUR   4   +NDUR   6 · PDUR   4 ′
 
   5. Byte Disparity, Fast Version 
     FIG. 19  shows circuitry for computing disparity for a single byte by using the decoder of FIG.  18 . This circuit computes the disparity in a relatively fast manner, as compared to a circuit described below. Notation is as follows: The signal names PDFBY and NDFBY refer to a positive and negative running disparity, respectively, in front of the byte. The signal names PDUBY and NDUBY refer to the assumed positive or negative exit disparity, respectively, of the byte, regardless of the starting disparity at the front end. If neither the 6B vector nor the 4B vector of the byte is disparity dependent, none of the two outputs is asserted. 
   The values for the outputs NPDFBY, PDUBY, and PNDUBY are stored in three latches (not shown in the diagrams) which are clocked concurrently with the decoded data output. The outputs of the latches are labelled NPDFBY_LAST, NPDUBY_LAST (from pin L 2 N, the inverted output of the slave latch L 2 ), and PNDUBY_LAST, respectively, and are used for the computation of the starting disparity PDFBY for the next byte. 
   6. Logic Equations for the Determination of the Disparity at the Start of the Byte
 
 PDFBY=PDUBY _LAST+PDFBY_LAST·NDUBY_LAST 
 
   Note that NDFBY and PDFBY are complementary: NDFBY=PDFBY′ and the values of PDUBY and NDUBY are exclusive, none or one alone can be true. 
   7. Byte Disparity, Slower Version 
     FIG. 20  shows circuitry for computing disparity for a single byte by using the decoder of FIG.  18 . This circuit computes the disparity in a relatively slow manner. The incentive to use the slower version is the saving of two latches. If timing is not critical, the ending disparity PDEBY is generated in the same cycle as the decoding and the error checks. So only this single parameter must be passed on to next byte in the traditional manner. The output of this latch is the signal PDFBY, the disparity in front of the new byte. If the longest delay path is to the PDEBY output, the critical path delays have then been increased by one inverter plus one OAI 21  gate delay. 
   8. Four-Byte Word Decoder 
   A four-byte word decoder is shown in FIG.  21 . 
   a. Notation 
   The signal names PDFBY 0  and NDFBY 0  refer to a positive and negative disparity, respectively, in front of byte # 0 . 
   The signal names PDUBY 0  and NDUBY 0  refer the assumed positive or negative exit disparity, respectively, of byte # 0 . If neither the 6B vector nor the 4B vector of the byte is disparity dependent, none of the two outputs is asserted. 
   The values for the outputs PDFBY 3 , PDUBY 3 , and PNDUBY 3  are stored in the latches with the complementary outputs PDFBY 3 _LAST/NPDFBY 3 _LAST, PDUBY 3 _LAST/NPDUBY 3 _LAST, and PNDUBY 3 _LAST/NDUBY 3 _LAST, respectively, for the computation of the starting disparities PDFBY 0  and PNDFBY 0  for the next word cycle at the top of the diagram. 
   b. Logic Equations for the Determination of the Disparity at the Start of the Bytes
 
 PDFBY   0 = PDUBY   3   —   LAST+PDFBY   3   —   LAST·NDUBY   3   —   LAST  
 
 NDFBY   0   =NDUBY   3   —   LAST+NDFBY   3   —   LAST·PDUBY   3   —   LAST  
 
   The values of PDFBY 0  and NDFBY 0  are complementary, but the values of PDUBY 3  and NDUBY 3  are exclusive, none or one alone can be true. 
   To minimize the circuit delays, the disparity values for the front of byte # 1 , # 2 , and # 3  are determined not sequentially from byte to byte, but based on the disparity in front of byte # 0  and the changes in disparity contributed by the byte(s) in between.
 
 PDFBY   1   =PDUBY   0   +PDFB   0 · NDUB   0 ′
 
 NDFBY   1   =NDUBY   0   +NDFB   0 · PDUBY   0 ′
 
 PDFBY   2   =PDUBY   1   +PDUB   0 · NDUB   1 ′ +PDFBY   0 · NDUBY   0 ′ ·NDUBY   1 ′
 
 n 0 =NDUBY   0   +NDUBY   1 
 
 PDFBY   2   =PDUBY   1   +PDUB   0 · NDUB   1 ′ +PDFBY   0   ·n 0′
 
 NDFBY   2   =NDUBY   1   +NDUBY   0   ·PDUBY   1 ′ +NDFBY   0   ·PDUBY   0 ′· PDUBY   1 ′
 
 n 1 =PDUBY   0   +PDUBy   1 
 
 NDFBY   2   =NDUBY   1   +NDUBY   0   ·PDUBY   1 ′+ NDFBY   0   ·n 1′
 
 PDFBY   3   =PDUBY   2   +PDUBY   1   ·NDUBY   2 ′ +PDUBY   0   ·NDUBY   1 ′ ·NDUBY   2 ′+ PDFBY   0   ·NDUBY   0 ′ ·NDUBY   1 ′ ·NDUBY   2 ′
 
 n 2= NDUBY   0   +NDUBY   1   +NDUBY   2 
 
 n 3= NDUBY   1   +NDUBY   2 
 
 PDFBY   3   =PDUBY   2   +PDUBY   1   ·NDUBY   2 ′ +PDUBY   0 · n 3′ +PDFBY   0   ·n 2 
 
 NDFBY   3   =NDUBY   2   +NDUBY   1   ·PDUBY   2 ′ +NDUBY   0 · PDUBY   1 ′· PDUBY   2 ′+ NDFBY   0 · PDUBY   0 ′· PDUBY   1   ′·PDUBY   2 ′
 
 n 4 =PDUBY   0   +PDUBY   1   +PDUBY   2 
 
 n 5= PDUBY   1   +PDUBY   2 
 
 NDFBY   3   =NDUBY   2   +NDUBY   1   ·PDUBY   2 ′ +NDUBY   0   ·n 5+ NDFBY   0   ·n 4′
 
   In the circuit implementation of  FIG. 21 , the following relationships may be taken advantage of:
         PNDFBYL=PDFBY 1 ′   PNDFBY 2 =PDFBY 2 ′       

   These signals are not in the critical path and the added inversion does not decrease the maximum rate. For applications which have sufficient timing margin, the same simplifications can also be used for the signal PNDFBY 3  and perhaps PNDFBY 0  at a penalty of one inversion for each of those two signals. 
   M. 5B/6BT Code and Partitioned  10 B/12B Code 
   Some applications are compatible with modulo 5-bit data units. Plain data can be transmitted in modulo five format by just concatenating 6B vectors as defined above. However, in the 6-bit domain there is no comma character defined. Synchronization must be accomplished by other means. To gain access to comma characters, the code should be viewed as a 10B/12B code, but actual operation can easily shift from one mode to the other. A compatible partitioned 10B/12B transmission code can be constructed from concatenated pairs of 6B vectors with identical definitions as defined in  FIG. 5. A  difference between a 5B/6B-T and the 10B/12B code is the availability of a comma and a larger set of control characters in the 12B format. For purposes of special, non-data characters, for example a comma, the 5B/6B-T code is expanded to a 10B/12B code using a pair of contiguous 6B vectors (2×5B/6B-T=10B/12B). For an example, refer to  FIG. 22 , where (a 0 b 0 c 0 d 0 e 0 i 0 ) and (a 1 b 1 c 1 d 1 e 1 i 1 ) are needed to define these characters. The comma-character is a special character of interest. It can be used to mark and recover quickly, and to monitor the 6B, 12B, and packet boundary alignments for each individual link in a parallel bus configuration regardless of the skew of the several transmission lanes. 
   Keeping in mind that for data neither the first four bits nor the last four bits of a 6B vector can be identical, the 5B/6B-T and the 10B/12B codes can easily be evaluated with the help of the trellis diagram of FIG.  22  and its characteristics can be summarized as follows:
         1. The maximum run length (RL) is five with at most two contiguous runs of five in data mode, e.g, +011100+000111+110001+. Three contiguous runs of five are generated if the first two 6B vectors of the above example are followed by the comma character or certain other control characters: +011100+000111+110000−010011−.   2. For start-up purposes, the coding circuitry can generate a steady stream of runs of six, i.e. a symmetrical waveform at one twelfth the baud rate. The waveform “−110000′001111−110000′001111− . . . ” is obtained by holding the encoder input at a steady K 3  value (00111 K=1). The waveform “−1111100′000011−111100′000011− . . . ” is obtained by holding the encoder input at a steady K 15  (11110 K=1) value (refer to FIG.  23 ). These waveforms can be used to adjust the receiver circuits on parallel lanes to deal with skew and/or to find the 6B boundaries.   3. The minimum sustainable average transition density is three per 12-bit coded data interval, for example, the bit pattern ‘+100001−111000−011110+000111+’ can be repeated indefinitely. Any single 12-bit interval may have as few as two transitions.   4. The code is dc-balanced with a maximum digital sum variation or running disparity variation of ±3. In the steady-state condition (ignoring irrelevant start-up abnormalities), all 6B vectors start and end with a running disparity of ±1.   5. The normalized maximum dc-offset is (13/6)=2.17 versus 1.9 for the 8B/10B-T code. The normalized maximum dc-offset is derived from the trellis diagram and is defined as the average area (bit interval x disparity) per bit-interval enclosed between the zero-disparity line and the outermost contour any valid code vector can traverse, which is ‘+110100+’ or ‘−001011−’ for the 5B/6B-T code. It is a better indicator for the low frequency behavior than the traditional DSV parameter. By simulations, it can be shown that at a 2 Gbaud rate, a 3 dB low frequency cutoff at 3.9 MHz (0.195% of Baud rate) produces an eye amplitude closure of 0.5 dB. A cutoff at 7.9 MHz generates a closure penalty of 1 dB for a worst case pattern. It is generally desirable to operate with a high low frequency cut-off in order to filter out low frequency noise from several sources and to permit small reactance values for ac-coupling. As an example, optical receiver designs usually have at least one high-pass filter on chip and so it is very important to reduce the size of the required capacitance. For equivalent results, the low frequency cut-off for the 5B/6B-T code must be set about 5.5% lower than for a conventional 8B/10B or the 8B/10B-T code described herein.   6. The maximum error spread caused by an error in the coded data is five contiguous decoded bits.       

   1. Coding Constraints and 12B Control Characters 
   A total of fifty-seven 12B control characters can be defined if needed without violating the existing run length and disparity constraints. A first set of 28 control characters is identified by K 3  (110000 or 001111) in the first half segment, followed by the set of 15 balanced vectors which do not generate a run of six across the center division line. All these balanced 6B vectors are made disparity dependent as shown in the table shown in FIG.  23 . Thirteen unbalanced 6B vectors also meet the constraints. Beyond that, one can define a new special 6B vector K 15  with a leading run of four as listed in the table shown in FIG.  23 . This vector is restricted to the second half of the 12B characters. So K 3  followed by K 15  yields another 12B control character which can be recognized as such by the presence of a special vector in either half-segment. A second set of 28 control characters is identified by the presence of K 15  in the second half segment and the first half segment restricted to vectors which do not generate a run of six across the center boundary. Essentially, this second set is the first set of 12B characters with reversed bit order in the coded domain. Interestingly, there is also a second comma character with the same alignment with respect to the 12B boundaries, but the comma sequence is in reverse order (‘110010000011’ or ‘001101111100’). The definitions for the second set of 28 control characters are not included in the table shown in FIG.  23 . 
   2. Comma Sequence for the 10B/12B Code 
   The preferred comma patterns is ‘11111011’ or its complement ‘00000100’. The complete 12-bit comma character is “+110000 010011−” or “−001111 101100+” and it is generated by K 3 .K 2  with some coder circuit modification to complement K 2  in special characters when the starting disparity is positive. In the absence of errors, it is sufficient to monitor the seven bold digits for comma detection. An alternate comma pattern is the above bit sequence in reverse order “+1 10010 000011−” or “−001101 111100+”. 
   Once vector alignment at the receiver has been established, both the 5B/6B-T and the 10B/12B code operate identically for data. The only differences are related to control characters and the comma sequence. Of course, alignment can be established by means other than a comma, e.g., a check for coding violations and step by step changes in alignment, or with the sequence of runs of six as described in list item 2 just above. 
   3. Implementation 
   In the circuit example described here, a limited set of fourteen 12B vectors is implemented to keep the circuits simple. The table shown in  FIG. 24  lists the 6B vectors which may follow contiguously the special character K3 to form a 12B control character. With this limited set, only K 2  and K 3  are handled differently from their normal data mode D 2  and D 3 , respectively, for encoding and decoding. K 2  is a balanced vector made disparity dependent to form a comma sequence together with the preceding K 3  character regardless of the running disparity at the start of K 3 . K 3  has already been described as part of the 8B/10B-T code. 
   4. 5B/6B-T Encoding for 10B/12B Format 
   An encoding portion of a 10B/12B encoder is shown in  FIG. 25A , while  FIG. 25B  shows a disparity control portion of the 10B/12B encoder. The AO block  1152  and AOI blocks I 348 , I 353 , I 280 , and I 354  are AND-OR and AND-OR-INVERT blocks, respectively, as described above in reference to  FIGS. 9A and 9B . The circuit shown in  FIGS. 25A and 25B  takes a five-bit source vector defined by PA, PB, PC, PD, and PE and creates a six-bit coded vector defined by PCa, PCb, PCc, PCd, PCe, and PCi, according to the trellis diagram of FIG.  22  and the tables shown in  FIGS. 14 and 24 . The signal PCMPLS 6  comes from the disparity control circuit shown in FIG.  25 B. This signal is used to invert the primary coded vector abcdei to create the alternate coded vector (abcdei)′. This inversion is performed according to disparity rules. 
   The bit encoding for K 2  is unchanged from data mode. However, the equation for the encoding for bit “i” is slightly changed because the value of K attached to the uncoded vector value ‘01000’ may now be a one which would prevent the i-bit from being forced to one. The added term “+A′” is shown in brackets in the revised equation below:
 
 i=C′·D′·E′· ( K′{+A′} )+ A′·B′·C′·D′+A′·B′·E′· ( C≠D ) +A≠B·C·D  
 
   This equation is equivalent to:
 
 i=C′·D′·E′· ( K·A )′+ A′·B′·C′·D′+A′·B′·E′· ( C≠D )+ A·B·C·D  
 
   5. Disparity Control for 10B/12B Format 
   Because of the expanded set of 6B control vectors, the disparity controls have to be modified and some circuit simplifications are not applicable. In the equation for PDRS 6 , the last term E′·K must be expanded to K·A·B·C′·D′·E′ to identify the K2 vector. 
     PDRS   6 = E′· ( A≠B )·( C≠D )+ A′· ( B≠C )·( D≠E )+ B′·C′·E· ( A≠D )+ K·A·B·C′·D′·E′   
   The vector K 2  is an addition to the set of vectors which require a negative entry disparity. Within the limited set of the table shown in  FIG. 24 , it can be identified by the term A′·C′·E′·K, surrounded by brackets, and so the equation for the required negative entry disparity becomes:
 
 NDRS   6 = A·B·C·D′+C·D·E· ( A≠B )+ A·B·C′·D·E+{A′·C′·E′·K} 
 
   The vector K 2  is also an addition to the set of balanced S6 vectors:
 
 BALS   6 =( D≠E )·( A⊕B ⊕C )′+ D·E· ( A⊕B⊕C )+A′·B′·D′·E′+C′·D′·E′·K′+A·B·C·E′+{A′·C′·E′·K}
 
   6. 6B/5B-T Decoding of 12B Format 
     FIGS. 26A and 26B  show a 12B/10B bit decoding circuit and a disparity and error checking circuit, respectively, of the 12B/10B decoding circuit. The bit decoding circuit of  FIG. 26A  takes a six-bit coded vector defined by PCa, PCb, PCc, PCd, PCe, and PCi and produces a five-bit source vector defined by PA, PB, PC, PD, and PE. The AO blocks I 495 , I 496 , I 504 , I 503 , and I 448  and AOI blocks I 311  and I 367  are AND-OR and AND-OR-INVERT blocks, respectively, as described above in reference to  FIGS. 9A and 9B . 
   The alternate vector for K 2  “101100” is normally decoded to D 13 =1*0*1*1*0 in the B 6  format, but if the preceding 6B vector is K 3 , then it is decoded to D 2 =01000, i.e., the first four bits are complemented. Since the alternate 6B vector for D/K 18  “101101” is decoded to D 18 =0*1*0*0*1*, i.e., the first four bits are also complemented, one can specify that the first four bits are complemented if (K 3 LAST·a·b′·c·d·e′) is true. The “i” bit can be ignored. However, because the full logic term including i′ is required for the function PDRR 6  below, the implementation does not make use of the possible simplification for applications which require disparity checks. 
   Therefore:
 
 CMPLa=CMPL   5 + b′·i· ( a≠c )·( d≠e ){+ K   3   LAST·a·b′·c·d·e′·i′} 
 
 CMPLb=CMPL   5   +a′·b′·e′·i· ( c≠d )+ a′·b′·c·i· ( d≠e ){+ K   3   LAST·a·b′·c·d·e′·i′} 
 
  CMPLc=CMPL   5   +a·b′·c·d′·e′·i{+K   3   LAST·a·b′·c·d·e′·i′} 
 
 CMPMd=CMPL   5   +b′·i· ( a≠c )·( c≠d )·( d≠e ){+ K   3   LAST·a·b′·c·d·e′·i′} 
 
   In the circuit diagram shown in  FIG. 26A , the net name n30 stands for K 3 LAST·a·b′·c·d·e′·i′, and n0=a·b·i·(c+d+e)+c·i·(a+b)·(d+e). 
   7. Disparity Checks 
   For the limited set of control characters implemented, the primary vector K 2 =010011 and the alternate vector K 2 =101100 require a negative and positive entry disparity, respectively, when following K 3 . So the positive required front end disparity PDRR 6  is augmented by the term:
 
 K   3   LAST·a·b′·c·d·e′·i′=n 30 
 
   The equation for the positive required front end disparity PDRR 6  must include n30:
 
 PDRR   6 = a′·b′·c′+d′·e′·i′· ( a·b·c )′+( a′·b′+a′·c′+b′·c′ )·( d′·e+d′·i′+e′·i′ )+ n 30 
 
   The negative required front end disparity NDRR 6  is augmented by the term:
 
 K   3   LAST·a′·b·c′·d′·e·i=n 33 
 
   The equation for the negative required front end disparity NDRR 6  must include n33:
 
 NDR 6= a·b·c+d·e·i· ( a+b+c )+( a·b+a·c+b·c )·( d·e+d·i+e·i )+ n 33 
 
   More validity checks could be implemented in the 12B domain, especially with regard to invalid control character combinations. It is expected that most applications will not need those checks since most applications are expected to be focused on 5B/6B-T code and will use the 12B format only for start-up and special conditions. In other applications with multiple parallel lanes with error correction, the disparity checks at the receiver can be dispensed of because such errors are detected by other means. 
   8. Pipe-Lined Versions of Encoder and Decoder Circuits 
   Staggering the timing for the 6B and 4B parts with a few additional circuits to relieve timing and latency problems has been described above. If that simple solution is not enough, the individual circuits may have to be executed in two (or more) steps which adds latency and a modest amount of extra circuits. 
   For some applications such as very high speed parallel busses, a pipe-lined structure is preferable over several parallel CoDecs multiplexed into a line to overcome circuit delay problems. In this context, pipe-lining involves taking two basic clock intervals to obtain the coded or decoded results by inserting latches at suitable nodes. In the circuit diagram of the encoder shown in  FIG. 9A , the six signals Nba through Pi at the upper center might by stored in a latch and the Exclusive OR function is then performed in the next clock cycle. To best exploit this technique, all circuits should be reevaluated. In the example cited, the signal path to Pi is longer than the encoding circuits for the other five bits because of the A02222 gate which can be decomposed into two parallel A0122 gates which are then combined by a NOR2 gate in the next cycle at the cost of an extra latch. In the lower right quadrant of the diagram, the signals PS 1 aGH, PS 2 aGH, PFGHKy, NF, and PGnHn can be latched for comparable circuit delays in the two cycles. 
   For another example of circuit changes in the pipe-lined version refer to the circuit shown in  FIG. 9B  in the upper right quadrant. The signals Pn 1 , Pn 2 , and Pn 3  are all gated by a common input PDFS 6  to eliminate a gating level. In the pipe-lined version with less critical timing, this gating function might be applied to the signal Pn 1 on 2 on 3  instead, which then provides a larger margin for the signal PDFS 6 . 
   Generally, the pipe-lined version also provides more freedom to choose signal polarities for minimum delay since an inversion can easily be executed as part of the latch function with a lesser penalty than with the insertion of inverters. Sometimes this may also help to eliminate a gating level otherwise dictated by polarity considerations. 
   It is to be understood that the embodiments and variations shown and described herein are merely illustrative of the principles of this invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention.