9
\$\begingroup\$

In the physical layer of USB 3.0 there is an 8b/10b encoder.

Wikipedia says that this eliminated DC offset, while the tutorial I am reading says

it is a common encoding scheme in high-speed serial designs

What is the purpose of this encoding in the context of USB? Additionally, what other applications and benefits does this encoding provide in other types of devices?

\$\endgroup\$
3
  • \$\begingroup\$ Turns out later in the tutorial this is explained. Still curious what other areas this encoding is used in. \$\endgroup\$
    – Vorac
    Commented Oct 10, 2013 at 13:36
  • 2
    \$\begingroup\$ Can you elaborate on their explanation of why? \$\endgroup\$ Commented Oct 10, 2013 at 13:55
  • \$\begingroup\$ If 8b/10b ensures lot of transitions, will it affect signal integrity due to skin effect. Also, what everyone mean by DC balanced channel and why it is needed? \$\endgroup\$ Commented Nov 28, 2020 at 14:28

3 Answers 3

11
\$\begingroup\$

The simple answer for an encoding like 8b/10b is that it ensures that the encoded data stream has at least a certain amount of data transitions. Without such encoding a long stream of 0's or 1's would tend toward looking like trying to send DC through the channel.

The same philosophy applies to Manchester encoding where the net bandwidth to transmit through the channel is two times the actual data bandwidth. The advantages touted for 8b/10b is that the transmission bandwidth used is much less than the 2X imposed by Manchester.

One wants to avoid DC through the channel for a number of reasons. Whilst each transmission channel has different types of requirements the main consideration is that DC does not go through capacitor or transformer coupled circuits very well. The other big consideration, even for direct coupled circuits, is that transitions are required to be able to sync a PLL circuit on the receiver end so that clocking can be recovered to allow strobing the data bits at the correct time.

\$\endgroup\$
8
  • \$\begingroup\$ and the reason it is important to not have it 'look like DC' ...? \$\endgroup\$ Commented Oct 10, 2013 at 13:34
  • \$\begingroup\$ See added comment in answer.... \$\endgroup\$ Commented Oct 10, 2013 at 13:48
  • 1
    \$\begingroup\$ "DC does not go through capacitor or transformer coupled circuits very well" - might as well leave the last two words off :) \$\endgroup\$
    – Mels
    Commented Oct 10, 2013 at 14:19
  • \$\begingroup\$ i'd be a little worried if there was a transformer or a capacitor before the sensitive signal detector in a high speed digital transmission design, but yea, I'm with you and the clocking and strobing is what i'm really thinking of. i mean, this is the main difference between synchronous and asychronous transmission. and the reason why asynchronous is chosen time and time again, even though it wastes bits, because of it's resistance to noise. \$\endgroup\$ Commented Oct 10, 2013 at 14:20
  • \$\begingroup\$ @AndyzSmith "The electrical aspects of each path are characterized as a transmitter, channel, and receiver; these collectively represent a unidirectional differential link. Each differential link is AC-coupled with capacitors located on the transmitter side of the differential link." USB 3.0, section 3.2.1 \$\endgroup\$
    – Vorac
    Commented Oct 10, 2013 at 14:53
2
\$\begingroup\$

Apart from the nice properties mentioned by others, the other good things that 8b10b gives you include: 1. Easy discrimination at the receiver between link control and data symbols 2. Easy detection of ~75% of errors.

It's also surprisingly easy to build 8b10b transmitters and receivers in programmable logic; the original IBM patent specifies all of the logic operations required (and if you're too lazy for that, Chuck Benz has done it for you in Verilog).

Wikipedia has a very useful page on 8b10b as well.

\$\endgroup\$
1
\$\begingroup\$

It is explained later in the linked tutorial, on page 15.

The listed reasons to apply this encoding to USB 3.0 are:

  • clock recovery - without the encoding, long streams of 1s or 0s would look like DC
  • error detection - when the receiver decodes the 10 bit symbol, there are many impossible symbols; receiving one of them signals an error.

A colleague has another hypothesis. Paraphrasing:

The cable has inductance and capacitance. This smooths the attacking front of the pulses. Thus, transmitting a single 1 would leave the bus in a certain electrical state, while transmitting several 1s will leave it in a different electrical state (closer to steady-state). Consequently, sending a 0 afterwords will be at a different potential in the two scenarios.


Thirdly, here is a quote from the standard, section 3.2.1

The receiver needs enough transitions to reliably recover clock and data from the bit stream. To assure that adequate transitions occur in the bit stream independent of the data content being transmitted, the transmitter encodes data and control characters into symbols using an 8b/10b code.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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