8b/10b Encoding

In 8b/10b encoding each byte of data is assigned a 10 bit code. The byte is split up into the 3 most significant bits and the 5 least significant bits. This is then represented as two decimal numbers with the least significant bits first e.g. for the octet 101 00110 the result is the decimal 6.5. 10 bits are used to create this code and the naming convention follows the format /D6.5/. There are also 12 special codes which follow the naming convention /Kx.y/.

The 10 bit code must contain either five ones and five zeros, or four ones and six zeros, or six ones and four zeros. This prevents a sequence of too many consecutive ones and zeros, assisting clock synchronisation. Two 'commas' are used to aid in bit synchronisation, these 'commas' are the 7 bit patterns 0011111 (+comma)and 1100000 (-comma). To maintain a DC balance, a calculation called the Running Disparity calculation is used to keep the number of '0's transmitted the same as the number of '1's transmitted.

The method uses 10 bits for each 8 bits of data (byte) and therefore increases the rate required to send the data. A 1Gbps the line speed results in a transmission rate of 10/8 x 1 = 1.25Gbps. In Gigabit Ethernet this rate is then reduced using PAM-5 a 5-level code (acheiving less bandwidth than possible with a 3 laevel code, such as MLT).


Gorry Fairhurst - Date: 01/03/2007 EG3567