|
1) 8B/10B Encoding/Decoding
Notation
The PCS examines each incoming octet passed
down by the GMII and encodes it into a ten bit code
group, this is referred to as 8B/10B encoding. Each octet
is given a code group name according to the bit arrangement. Each
octet is broken down into two groups; the first group contains the three
most significant bits (y) and the second group contains the remaining five
bits (x). Each data code group is named /Dx.y/, where the value of
x represents the decimal value of the five least significant bits and y
represents the value of the three most significant bits. For example:
/D0.0/ = 000 00000
/D6.2/ = 010 00110
/D30.6/= 110 11101
There are also 12 special octets which may be encoded into ten bits.
The PCS differentiates between special and data code words via a
signal passed to it from the GMII. Special code words follow the
same naming convention as data code words except they are named /Kx.y/
rather than /Dx.y/.
Motivation
One of the motivations behind the use of 8B/10B encoding lies with the
ability to control the characteristics of the code words such as the number
of ones and zeros and the consecutive number of ones or zeros. Another
motivation behind the use of 8B/10B encoding is the ability to use special
code words which would be impossible if no encoding was performed.
Features
-
Every ten bit code group must fit into one of the following three
possibilities:
1)
five ones and five zeros
2) four ones and six zeros
3) six ones and four zeros
This helps limit the number of consecutive ones and zeros between any
two code groups.
-
A special sequence of seven bits, called a comma,
is used by the PMA in aligning the incoming serial stream. The comma
is also used by the PCS in acquiring and maintaining synchronization.
The following bit patterns represent the comma:
0011111 (comma+)
1100000 (comma-)
The comma is contained within only the /K28.1/, /K28.5/ and /K28.7/
special code groups. The comma can not be transmitted across the
boundaries of any two adjacent code groups unless an error has occurred.1
This characteristic makes it very useful to the PMA in determining code
group boundaries.
-
DC balancing is achieved through the use of a running disparity calculation.
Running disparity is designed to keep the number of ones transmitted by
a station equal to the number of zeros transmitted by that station.
This should keep the DC level balanced halfway between the ‘one’ voltage
level and the ‘zero’ voltage level. Running disparity can take on
one of two values: positive or negative. In the absence of errors,
the running disparity value is positive if more ones have been transmitted
than zeros and the running disparity value is negative if more zeros have
been transmitted than ones since power-on or reset. Running disparity
is explained in much more detail in section 2 of PCS Fundamentals.
-
The 8B/10B encoding scheme was designed to provide a high transition density
which makes synchronization of the incoming bit stream easier.
1) The exception to this rule is if /K28.7/ is followed
by any of the following special or data code groups: /K28.x/, /D3.x/,
/D11.x/, /D12.x/, /D19.x/, or /D28.x/, where x is a value in the range
0 to 7, inclusive.
|