Wednesday, March 31, 2010

8b/10b encoding

excerpted from wikipedia: http://en.wikipedia.org/wiki/8b/10b_encoding and etc.
In telecommunications, 8b/10b is a line code that maps 8-bit symbols to 10-bit symbols to achieve DC-balance and bounded disparity, and yet provide enough state changes to allow reasonable clock recovery. This means that the difference between the count of 1s and 0s in a string of at least 20 bits is no more than 2, and that there are not more than five 1s or 0s in a row. This helps to reduce the demand for the lower bandwidth limit of the channel necessary to transfer the signal.

As the scheme name suggests, 8 bit of data are transmitted as a 10-bit entity called a symbol, or character. The low 5 bit of data are encoded into a 6-bit group (the 5b/6b portion) and the top 3 bits are encoded into a 4-bit group (the 3b/4b portion). These code groups are concatenated together to form the 10-bit symbol that is transmitted on the wire. The data symbols are often referred to as D.x.y where x ranges from 0–31 and y from 0–7.

Standards using the 8b/10b encoding also define up to 12 special symbols (or control characters) that can be sent in place of a data symbol.

There's fixed tables for the conversion of 5b-to-6b and 3b-to-4b respectively, which is controled by RD (Running Disparity, either -1 or 1, initially -1) from earlier stage to guide the conversion, and a new RD is generated to guide next conversion.

No comments: