- 64b/66b encoding
In data networking and transmission, 64B/66B is a
line codethat transforms 64- bitdata to 66-bit line codeto achieve DC-balance and bounded disparity, and yet provide enough state changes to allow reasonable clock recovery. This means that there are just as many 1s as 0s in a string of two symbols, and that there are not too many 1s or 0s in a row. This is an important attribute in a signal that needs to be sent at high rates because it helps reduce intersymbol interference.
The overhead of the 64B/66B encoding is considerably less than the more common
How it works
As the scheme name suggests, 64
bits of data are transmitted as a 66-bit entity.
The 66 bit entity is made by pre-pending one of two possible two-bit 'preambles' to the 64 bits to be transmitted.
*If the preamble is '01', the 64 bits are entirely data
*If the preamble is '10', the 64 bits are a mixture of control information and data
*The preambles '00' and '11' are not used, and generate an error if seen.
The use of the '01' and '10' preambles guarantees a bit transition every 66 bits, which means that a continuous stream of 0s or 1s cannot be valid data. It also allows easier clock/timer synchronization, as a transition must be seen every 66 bits.
The 64 bits of data are scrambled using a self-synchronous scrambler function, with the intention of ensuring that a relatively even distribution of 1s and 0s are normally found in the transmitted data. The intention is not to encrypt the data, but to give the transmitted data useful engineering properties. This does not guarantee that pathological data will not generate a transmitted output that has all 0s or all 1s or other undesirable properties, but simply reduces the probability that this will occur with normal data. This method is different from the codebook based approach of
The encoding is normally done entirely in hardware, using a
linear feedback shift register. Upper layers of the software stack should be "unaware" that this encoding is being used.
Technologies that use it
*Fibre Channel 10GFC
10 Gigabit Ethernet
* [http://grouper.ieee.org/groups/802/3/10G_study/public/jan00/walker_1_0100.pdf 64b/66b low-overhead coding proposal for serial links (update 1/12/00)] :Note that this is the original proposal to the IEEE, and some changes were made for the final, agreed standard e.g. the scrambling polynomial is neither of the two options outlined in the paper, but actually x58+x39+1
* [http://gauss.ffii.org/PatentView/EP1133123 PatentView/EP1133123 Software Patent: 64b/66b decoding, for packetized serial data]
* [http://ieeexplore.ieee.org/iel5/10384/33117/01556959.pdf?isnumber=33117&prod=CNF&arnumber=1556959&arSt=+412&ared=+416&arAuthor=+Raahemi%2C+B.#search=%2264B%2F66B%20encoding%22 ERROR CORRECTION ON 64/66 BIT ENCODED LINKS]
* [http://www.iol.unh.edu/services/testing/10gec/training/10GbE_Cl49.pdf#search=%2264B%2F66B%20encoding%22 Introduction to 10 Gigabit 64b/66b (Clause 49)] .
Wikimedia Foundation. 2010.