1
\$\begingroup\$

In telecommunications, 8b/10b is a line code that maps 8-bit symbols to 10-bit symbols to achieve DC-balance and bounded disparity. In this case we take each 8-bit data and map it to a 10-bit symbol. Now long time ago some humans sat down and thought about which 8-bit value corresponds to which 10-bit value/values. They also decided to create some special symbols e.g comma symbol.

As far as I know, there are many 10-bit symbols which are not used and I assume that 0000000000 and 1111111111 are included in it. Which 10-bit symbol shall be transmitted next also depends on which 10-bit symbol was transmitted last time and also on the current 8-bit data to be mapped.

Is there a table that can show me which 8-bit symbol is mapped to which 10-bit symbols such that running disparity is maintained?

In simple words, I want to understand how does 8b/10b encoding ensure running disparity.

\$\endgroup\$
7
\$\begingroup\$

Basically what's done is some 8-bit message words have two corresponding 10-bit code words. One of these has positive disparity (more 1's than 0's) and the other has negative disparity (more 0's than 1's).

When encoding you keep track of the running disparity. If the running disparity is positive and the next input octet gives you a choice of code words, you pick the one with negative disparity, and vice versa.

\$\endgroup\$
2
  • \$\begingroup\$ how does one keep track of this anyway? \$\endgroup\$
    – quantum231
    Jan 10 '14 at 12:09
  • 1
    \$\begingroup\$ @quantum231, it's just one bit of state (to indicate disparity high or low). If you use a "neutral" code word, the state doesn't change. If you use a word with disparity, the state will flip. \$\endgroup\$
    – The Photon
    Jan 21 '14 at 17:05
4
\$\begingroup\$

8b/10b encoding has a wikipedia page with good explanations and also the encoding tables : http://en.wikipedia.org/wiki/8b/10b_encoding

I think you can also look at some bus standards that use 8b/10b to have more practical examples.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ 8b/10b is specified in IEEE 802.3z and ANSI X3.230-1994 \$\endgroup\$
    – CapnJJ
    May 9 '18 at 18:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.