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.
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.
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.
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 (') 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
Conceptually, coding is generally performed in two steps. First, the translation to a primary vector is made. For the coded vectors of
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
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 D0, D15, D16, and D31. 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.
1* 1 1 1 0
1* 1 1 1 1
Ignoring the ‘A’ bit, D0 and D16 can be identified as a class by B′·C′·D′.
D15 and D31 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 D4, D8, D15, and D31.
0 0* 1 0 0
1 1* 1 1 0
0 0* 0 1 0
1 1* 1 1 1
Ignoring the ‘B’ bit, D4 and D8 can be identified as a class by A′·E′·(C≠D).
D15 and D31 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 D1.
The encoding equation for bit ‘c’ can be written as follows;
c=C+A·B′·D′·E′
The ‘d’ column has bold entries for D0 and D31.
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 D2.
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.
0 0 0 0 0
0 0 1 0 0
0 0 0 0 1
0 0 0 1 0
1 1 1 1 0
1 1 1 1 1
The first four entries D0 to D3 can be identified by C′·D′·E′·K′.
D0 and D16 are identified by A′·B′·C′·D′ (taking advantage of redundancy, since D0 is also listed in the left column).
D4 and D8 are identified by A′·B′·E′·(C≠D).
D15 and D31 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., S1 and S2 annotation in
For a positive running disparity at the front of the 6B vector (PDFS6), the S function should be asserted for the two balanced vectors for which the coded pattern ends with cdei=1100.
For a negative running disparity at the front of the 6B vector (NDFS6), the S function should be asserted for the two balanced vectors for which the coded pattern ends with cdei=0011.
0 0 0 0 1
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.
For the ‘f’ column, the coding equation is as follows:
f=F·[F·G·H·(S+Ky)]′=F·[G·H·(S+Ky)]′,
where S=S1+S2 and Ky=K23+K27+K29+K30=K·K3′=K·E.
Source Vector
Ky includes also the control characters of
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·S1+G·H·S2+G·H·K·E
f=F′+G·H·C·D·E′·(A≠B)·PDFS6+G·H≠A′·C′·D′·(B≠E)·NDFS6+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·S1+F·G·H·S2+F·G·H·Ky
j=G′·H′+F·G·H·C·D·E′·(A≠B)·PDFS6+F·G·H·A′·C′·D′·(B≠E)NDFS6+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 K28 is replaced by its complement K3 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
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
In
The signal PCMPLS6 comes from the disparity control circuit shown in FIG. 9B. 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 PCMPLS4 comes from the disparity control circuit shown in
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
1. PDRS6
The set of ten primary 6B vectors with a negative block disparity and a plus sign in the DR column of
1 0 1 0 0
0 0 1 1 0
0 1 0 0 1
1 0 0 1
0
0 0 1 0 1
1 1 0 0 0
0 1 0 1 0
The vectors D5, D6, D9, and D10 can be identified by the expression E′·(A≠B)·(C≠D).
The vectors D12, D18, D20, and D10 (redundant) are identified by A′·(B≠C)·(D≠E).
The vectors D17 and D24 are identified by B′·C′·E·(A≠D).
The control vector K3 can be identified by E′·K since an examination of
The equation for PDRS6 cap thus be expressed as follows:
PDRS6=E′·(A≠B)·(C≠D)+A′·(B≠C)·(D≠E)+B′·C′·E·(A≠D)+E′≠K
2. NDRS6
The set of five 6B vectors with a minus sign in the DR column of
1 1 1 0 0
1 1 0 1 1
1 1 1 0 1
The vectors D7 and D/K23 can be identified by A·B·C·D·.
The vectors D/K29 and D/K30 are identified by C·D·E·(A≠B).
The vector D/K27 is identified by A·B·C′·D·E.
So the equation for NDRS6 is as follows:
MDRS6=A·B·C·D′+C·D·E·(A≠B)+A·B·C′·D·E
3. PDRS4
The table of
0 1 0 x
0 0 1 x
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 PDRS4 is as follows:
PDRS4=K·(F·G)′+F′·(G≠H)
4. NDRS4
There are four rows in
NDRS4=F·G
5. CMPLS6 and CMPLS4
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.
In the circuit diagrams, the signal names PDFS6, PDFS4 and NDFS6 and NDFS4 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. BALS6
The set of 19 primary 6B vectors of
The 4 vectors D0, D1, D2, and D3 are identified by C′·D′·E′·K′.
The 8 vectors D8, D11, Dl3, D14, D16, D19, D21, and D22 are identified by
XB6=(D≠E)·(A′·B′·C′+A·B·C′+A·B′·C+A′·B·C)=(D≠E)·(A⊕B⊕C)′.
The 4 vectors D25, D26, D28, and D31 are identified by
YB6=D·E·(A·B·C+A·B′·C′+A′·B·C′+A′·B′·C)=D·E·(A⊕B⊕C).
The 2 vectors D0 (redundant from Column 1) and D4 are identified by
WB6=A∝·B′·D′·E′.
The 2 vectors D7 and D15 are identified by ZB6=A·B·C·E′.
So the equation for BALS6 can be expressed as:
BALS6=(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 BALS6 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 UNBALS6 signal directly from the inputs similar to the circuit for BALS6. The UNBALS6 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 UNBALAS6 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 D5, D9, D17, D29, D6, D10, D18, and D30 in the left column of the list below are identified by
XUB6=(A≠B)·(C·D′·E′+C′·D·E′+C′·D′·E+C·D·E)=(A≠B)·(C⊕D⊕E).
The three vectors D12, D20, and D24 in the second column can be identified by
YUB6=A′·B′·(A·B·C′+A·B′·C+A′·B·C).
The two vectors D23 and D27 in the third column can be identified by
ZUB6=A·B·E·(C≠D).
The single vector K3 in the right column can be uniquely identified by K=1 since coded 6B K vectors are unbalanced.
0 0 1 1 0
1 1 1 0 1
1 0 0 1 0
0 0 1 0 1
1 1 0 1 1
1 0 0 0 1
0 0 0 1 1
1 0 1 1 1
0 1 0 1 0
0 1 0 0 1
0 1 1 1 1
So the equation for UNBALS6 can be expressed as:
UNBALS6=(A≠B)·(C⊕D⊕E)+A′·B′·(A·B·C′+A·B′·C+A′·B·C)+A·B·E·(C≠D)+K
7. BALS4
The set of ten source vectors with a zero in the DB column of
1 1 0
1 0 0
1 0 1
In the third column, the Dx/K3.5 vector pair is listed redundantly to simplify the logic expression below.
BALS4=G′·H′+F·(G≠H)+H·(F≠G)
Additional circuits governed by the signals BALS6 and BALS4 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
The 8B/10B-T encoding circuitry of
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 4B encoding is staggered. Such an arrangement greatly reduces the timing demands for the generation of the S-function, the BALS6, and the UNBALS6 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
The circuit diagram in
There are two coded vectors per byte (6B, 4B). 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
K. Disparity Circuit for 4-Byte Encoder, Slower Version
A disparity circuit is shown in
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
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
a. Inversion of the Five Leading Bits, CMPL5
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
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.
1 1 0 0 1 1
1 1 0 1 0 1
1 1 1 0 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.
0 0 0 1 0 1
0 0 1 0 0 1
A Boolean expression CMPL5 for the complementation of the leading five bits of the fifteen 6B vectors above is developed below:
CMPL5=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
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
Bit B
0 1 1 0 0 1
0 0 1 1 0 1
0 1 0 1 0 1
0 0 1 0 1 1
Bit C
Bit D
Bit E
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 R6, INVR6
There are a total of 16 invalid R6 vectors:
INVR6=a·b·c·d+a′·b′·c′·d′+P3x·e·i+Px3·e′·i′
P3x=P31+P40=a·b·c+a·b·d+a·c·d+b·c·d
P3x=P13+P04=a′·b′·c′+a′·b′·d′+a′·c′·d′+b′·c′·d′
Concerning notation for net names in the decoding circuit diagrams of
2. 6B/5B-T Disparity Checks
The column ‘DR’ of the table shown in
a. Logic Equations for Required Input Disparity DRR6
The terms PDRR6 and NDRR6 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.
0 0 0 1 1 1
1 0 1 0 0 0
0 0 0 1 0 1
0 0 0 1 1 0
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:
PDRR6=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
The vectors with negative required front end disparity are listed below.
1 1 1 0 0 0
1 1 1 0 1 0
1 0 0 1 1 1
1 1 0 0 1 1
1 0 1 1 0 1
1 1 0 1 0 1
1 1 0 1 1 0
0 1 1 1 1 0
The three vectors D7, D/K23, and D24 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:
b. Logic Equation for Monitoring Byte Disparity Violations, DVBY
Bytes with only disparity independent vectors R6 and R4 are ignored for disparity checking purposes. There is a disparity violation DVBY at a specific byte under the following conditions:
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 R4.
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·(PDRR6+PDRR4·NDRR6′)+PDFBY·(NDRR6+NDRR4·PDRR6′)
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 PDRR6 and NDRR6, none of the functions is true for the case of most balanced vectors.
c. Logic Equations for the assumed ending Disparities PDUR6 and NDUR6
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 PDUR6 or NDUR6 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 NDUR6 should be asserted in response to the following 6B inputs:
The list of these vectors is almost identical to the list above for PDRR6 except that the pattern for D7 is the complement, i.e., 111000, so the modified left column looks as follows:
The vectors D/K23 and D24 above are defined by the expression:
n19=a′·b′·c′·d·(e∝+i′)
The vector D7 is defined by the expression:
n20=a·b·c·d′·e′·i′
The following net name abbreviation is used in the circuit diagram shown in FIG. 15B:
n21=n19+n20
The expression for n21 replaces the term a′·b′·c′ in the PDRR6 equation, therefore:
NDUR6=n21+d′·e′·i′·(a·b·c)′+(a′·b′+a′·c′+b′·c′)·(d′·e′+d′·i′+e′·i′)
The signal PDUR6 should be asserted in response to the following 6B inputs:
Again, the list of these vectors is almost identical to the list above for NDRR6 except that the pattern for D7 is the complement, i.e. 000111, so the left column looks as follows:
The three vectors above are defined by the expression n24. The following net name abbreviations are used in the circuit diagram show in FIG. 15B:
The term n24 replaces the term a·b·c in the NDRR6 equation:
Therefore:
PDUR6=n24+d·e·i·(a+b+c)+(a·b+a·c+b·c)·(d·e+d·i+e·i)
d. Circuit Simplification
The first term (D7) in each of the equations for PDUR6 and NDUR6 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 (D7) is also dropped from PDRR6 and NDRR6. 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 PDRR6 is equal to NDUR6, and NDRR6 is equal to PDUR6. 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
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 K3 with negative ending disparity, i.e., if c′·d′·e′·i′ is true.
1 0 1 0
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=m0+m1+m2
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 K3 with negative ending disparity, i.e. if c′·d′·e′·i′ is true.
1 0 1 1
1 0 0 1
The left column can be characterized by
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=m0·(f·h)′+m4+m5
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 K3 with negative ending disparity, i.e., if c′·d′·e′·i′ is true.
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=m0+m1+m4+g′·h·j
b. Logic Equations for the required Disparity at the Front of the R4 Vector
The terms PDRR4 and NDRR4 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 PDRR4 at the front:
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,
PDRR4=f′·g′+m6
A total of six 4B vectors require a negative disparity NDRR4 at the front:
c. Logic Equations for the assumed ending Disparities PDUR4 and NDUR4
A total of six 4B vectors have a positive ending disparity PDUR4:
A total of six 4B vectors have a negative ending disparity NDUR4:
d. Logic Equation for invalid Vector R4, INVR4
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 INVR4:
INVR4=(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
VKx7=(i·g·h·j+i′·g′·h′·j′)·(e≠i)·P22
Where P22=(a≠b)·(e≠d)+(a=b)·(c=d)·(b≠c)
If the required entry disparity DRR4 does not match the exit disparity DUR6 of a disparity dependent R6 vector, an invalid character is flagged by the signal DV64 under the following conditions:
DV64=PDRR4·NDUR6+NDRR4·PDUR6
The signal INVR4V64 is the OR function of INVR4 and DV64.
4. 10B/8B-T Decoder, Error Checks
A 10B/8B-T decoder is shown in FIG. 18.
a. Error Reporting
The circuit shown in
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=PDUR4+PDUR6·NDUR4′
NDUBY=NDUR4+NDUR6·PDUR4′
5. Byte Disparity, Fast Version
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 L2N, the inverted output of the slave latch L2), 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
8. Four-Byte Word Decoder
A four-byte word decoder is shown in FIG. 21.
a. Notation
The signal names PDFBY0 and NDFBY0 refer to a positive and negative disparity, respectively, in front of byte #0.
The signal names PDUBY0 and NDUBY0 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 PDFBY3, PDUBY3, and PNDUBY3 are stored in the latches with the complementary outputs PDFBY3_LAST/NPDFBY3_LAST, PDUBY3_LAST/NPDUBY3_LAST, and PNDUBY3_LAST/NDUBY3_LAST, respectively, for the computation of the starting disparities PDFBY0 and PNDFBY0 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
PDFBY0=PDUBY3—LAST+PDFBY3—LAST·NDUBY3—LAST
NDFBY0=NDUBY3—LAST+NDFBY3—LAST·PDUBY3—LAST
The values of PDFBY0 and NDFBY0 are complementary, but the values of PDUBY3 and NDUBY3 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.
PDFBY1=PDUBY0+PDFB0·NDUB0′
NDFBY1=NDUBY0+NDFB0·PDUBY0′
PDFBY2=PDUBY1+PDUB0·NDUB1′+PDFBY0·NDUBY0′·NDUBY1′
n0=NDUBY0+NDUBY1
PDFBY2=PDUBY1+PDUB0·NDUB1′+PDFBY0·n0′
NDFBY2=NDUBY1+NDUBY0·PDUBY1′+NDFBY0·PDUBY0′·PDUBY1′
n1=PDUBY0+PDUBy1
NDFBY2=NDUBY1+NDUBY0·PDUBY1′+NDFBY0·n1′
PDFBY3=PDUBY2+PDUBY1·NDUBY2′+PDUBY0·NDUBY1′·NDUBY2′+PDFBY0·NDUBY0′·NDUBY1′·NDUBY2′
n2=NDUBY0+NDUBY1+NDUBY2
n3=NDUBY1+NDUBY2
PDFBY3=PDUBY2+PDUBY1·NDUBY2′+PDUBY0·n3′+PDFBY0·n2
NDFBY3=NDUBY2+NDUBY1·PDUBY2′+NDUBY0·PDUBY1′·PDUBY2′+NDFBY0·PDUBY0′·PDUBY1′·PDUBY2′
n4=PDUBY0+PDUBY1+PDUBY2
n5=PDUBY1+PDUBY2
NDFBY3=NDUBY2+NDUBY1·PDUBY2′+NDUBY0·n5+NDFBY0·n4′
In the circuit implementation of
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 PNDFBY3 and perhaps PNDFBY0 at a penalty of one inversion for each of those two signals.
M. 5B/6BT Code and Partitioned 10B/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
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. 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 K3 (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 K15 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 K3 followed by K15 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 K15 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 K3.K2 with some coder circuit modification to complement K2 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
4. 5B/6B-T Encoding for 10B/12B Format
An encoding portion of a 10B/12B encoder is shown in
The bit encoding for K2 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 PDRS6, the last term E′·K must be expanded to K·A·B·C′·D′·E′ to identify the K2 vector.
PDRS6=E′·(A≠B)·(C≠D)+A′·(B≠C)·(D≠E)+B′·C′·E·(A≠D)+K·A·B·C′·D′·E′
The vector K2 is an addition to the set of vectors which require a negative entry disparity. Within the limited set of the table shown in
NDRS6=A·B·C·D′+C·D·E·(A≠B)+A·B·C′·D·E+{A′·C′·E′·K}
The vector K2 is also an addition to the set of balanced S6 vectors:
BALS6=(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
The alternate vector for K2 “101100” is normally decoded to D13=1*0*1*1*0 in the B6 format, but if the preceding 6B vector is K3, then it is decoded to D2=01000, i.e., the first four bits are complemented. Since the alternate 6B vector for D/K18 “101101” is decoded to D18=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 (K3LAST·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 PDRR6 below, the implementation does not make use of the possible simplification for applications which require disparity checks.
Therefore:
CMPLa=CMPL5+b′·i·(a≠c)·(d≠e){+K3LAST·a·b′·c·d·e′·i′}
CMPLb=CMPL5+a′·b′·e′·i·(c≠d)+a′·b′·c·i·(d≠e){+K3LAST·a·b′·c·d·e′·i′}
CMPLc=CMPL5+a·b′·c·d′·e′·i{+K3LAST·a·b′·c·d·e′·i′}
CMPMd=CMPL5+b′·i·(a≠c)·(c≠d)·(d≠e){+K3LAST·a·b′·c·d·e′·i′}
In the circuit diagram shown in
7. Disparity Checks
For the limited set of control characters implemented, the primary vector K2=010011 and the alternate vector K2=101100 require a negative and positive entry disparity, respectively, when following K3. So the positive required front end disparity PDRR6 is augmented by the term:
K3LAST·a·b′·c·d·e′·i′=n30
The equation for the positive required front end disparity PDRR6 must include n30:
PDRR6=a′·b′·c′+d′·e′·i′·(a·b·c)′+(a′·b′+a′·c′+b′·c′)·(d′·e+d′·i′+e′·i′)+n30
The negative required front end disparity NDRR6 is augmented by the term:
K3LAST·a′·b·c′·d′·e·i=n33
The equation for the negative required front end disparity NDRR6 must include n33:
NDR6=a·b·c+d·e·i·(a+b+c)+(a·b+a·c+b·c)·(d·e+d·i+e·i)+n33
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
For another example of circuit changes in the pipe-lined version refer to the circuit shown in
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.
Number | Name | Date | Kind |
---|---|---|---|
4486739 | Franaszek et al. | Dec 1984 | A |
5387911 | Gleichert et al. | Feb 1995 | A |
6496540 | Widmer | Dec 2002 | B1 |
Number | Date | Country | |
---|---|---|---|
20050062621 A1 | Mar 2005 | US |