USB · Module 3
The D+ Line
The pair is symmetric as a measurement and asymmetric in its roles. What D+ specifically carries, why a full-speed device announces itself on this conductor and what that makes the idle state, and why the naming implies a fixed polarity that does not exist.
Chapter 3.2 established that the receiver's decision depends on the difference between the conductors. That makes the pair perfectly symmetric as a measurement — subtraction does not care which term you call which.
It is not symmetric in anything else, and this chapter is about the difference. The two conductors have different roles, different responsibilities at attachment, and different consequences when something goes wrong with one of them. This chapter takes D+; Chapter 3.4 takes D-, and the pair of chapters together dismantles the most persistent misconception in USB's physical layer.
1. Two Roles, Not One
D+ does two separate jobs, and keeping them apart is the whole content of this chapter.
As half of the signalling pair, D+ is one of the two conductors the differential receiver subtracts. In this role it is genuinely interchangeable with D-: reverse the two and the receiver still sees a difference, just with the opposite sign. Nothing about the measurement singles out D+.
As a static indicator, D+ is one of the two conductors that a device can bias to announce its presence — and, for a full-speed device, it is the conductor. A full-speed device presents a pull-up resistor to a positive supply on D+. That is a static electrical condition, not signalling: it is present before any communication occurs, and its purpose is to be noticed.
Those two roles are why this chapter exists. The first role is symmetric and the second is not, and almost every confusion about D+ comes from applying an intuition formed in one role to the other.
2. What a Full-Speed Pull-Up Does to the Line
Chapter 3.5 owns the pull-up mechanism properly and Chapter 3.6 owns the host side. What belongs here is the consequence for this conductor.
A downstream port with nothing attached holds both conductors low, so the pair sits in SE0. When a full-speed device attaches, its pull-up on D+ raises that conductor while D- remains held low. The pair is no longer SE0: one conductor is high and the other is low, which Chapter 3.1 established is a signalling condition.
Now the consequence that matters. For a full-speed device, that resting condition — D+ high, D- low — is the idle state, and the idle state is named J.
Read that sentence carefully, because it contains a trap. It is entirely correct, it is what almost every USB reference says, and reading it as a definition of J is the mistake Chapter 3.4 exists to correct. What has actually been established is narrower: for a full-speed device, the idle condition happens to be D+ high, and the idle condition is called J. The name J is attached to the idle condition, not to the polarity.
3. Attachment, on This Conductor
Full-speed attachment and idle, viewed on D+ — logical line-state view
7 cycles4. Why the Asymmetry Exists at All
It is worth asking why the designers did not keep the pair symmetric and signal speed some other way.
The answer is economy. The interface needed a way for a device to announce two things — that it is present, and how fast it speaks — before any communication is possible. Communication cannot be used to carry that information, because the host does not yet know how to communicate with the device: the signalling rate is one of the things being announced. So the announcement has to be made by a mechanism that works with no protocol at all.
Biasing a conductor is such a mechanism. It requires no clock, no encoding and no agreement — just a resistor — and it is observable the moment the device is connected. And because there are two conductors, the choice of which one to bias can itself carry information. One bit, expressed as a resistor's position, available before anything else works.
That is an elegant piece of design and it is the reason for the asymmetry. It also means the asymmetry is a property of the device's configuration, not of the conductors themselves. D+ is not intrinsically the announcement line; it is the conductor that a full-speed device biases. Which sets up the next chapter exactly.
5. What This Means for Hardware and Verification
For the digital side, the important consequence is a boundary: the static bias is not something RTL observes or controls. Whether a pull-up is presented is a matter of a resistor and, in many devices, a switch controlling whether that resistor is connected — which is a device-level and often analog concern. What the digital domain receives is the consequence, as a line-state indication. RTL that tries to model resistors has crossed a boundary it should not.
A device controlling when its pull-up is presented is a real and important capability, since it is how a device can make itself appear to detach and re-attach — but the mechanism belongs to Chapter 3.5 and its uses to later modules.
For verification, D+'s dual role creates a stimulus dimension that is easy to miss. An environment that models only driven signalling exercises the conductor in one of its two roles. The static conditions — nothing attached, a pull-up presented, a pull-up removed while the bus is otherwise active — are the other role, and they are what the presence and speed machinery is built on. A device model that is always simply there never exercises attachment at all.
And for debug, the two roles fail differently and distinguishably. A fault in the static role prevents the device from ever being noticed: the port stays at SE0 and nothing further happens, which is a clean and early symptom. A fault in the dynamic role lets the device be noticed and then communicate badly. Whether the port ever left SE0 is therefore among the most informative single observations available, because it separates not noticed from noticed and broken — two problems with entirely different causes.
6. Common Misconceptions
7. Reason It Through
A newly built full-speed device is attached to a host. Nothing happens: the host never reports an attachment, and a scope on the port shows both conductors remain low indefinitely.
What has been established by the observation? That the port never left SE0 — which per §5 separates not noticed from noticed and broken, and places this firmly in the first category. Everything downstream of detection, including every line of the device's digital logic, is irrelevant so far because none of it has been given a reason to run.
What conditions produce a permanent SE0 on an attached port? The host's pull-downs are holding both conductors low, which is their job when nothing is presenting a bias. So the question is why no bias is present. Either the device is not presenting its pull-up — absent, misplaced, connected to a supply that is not up, or switched off by a device that controls when it presents — or the connection itself is not made on that conductor, or the device has no power to bias with.
Why is the device's digital design not a candidate? Because nothing has asked it to do anything. The host has not begun communicating, and it has not begun because it has not noticed a device. A controller that is entirely broken and one that is perfect look identical from here.
What single measurement would discriminate fastest? Whether the device is presenting the pull-up at all — measured at the device end rather than the host end, so that a cable or connector fault is separated from a device fault. If the bias is present at the device and absent at the host, the problem is between them; if it is absent at both, the problem is the device's biasing arrangement or its power.
The general lesson. The first question in a physical-layer bring-up is not what the device is doing but whether it was ever noticed, because the answer partitions the entire problem space and is cheap to obtain.
8. Understanding Check
9. Summary
The pair is symmetric as a measurement — subtraction does not care which conductor is which — and asymmetric in every other respect.
D+ carries two kinds of information at once. As half of the signalling pair it contributes to the difference the receiver decides on, and in that role it is interchangeable with D-. As a static indicator it is the conductor a full-speed device biases with a pull-up, which is not signalling: it is an electrical condition present before any communication, invisible to a differential receiver and observable only single-endedly.
The static mechanism exists because a device must announce presence and speed before communication is possible, since the signalling rate is among the things being announced. A resistor needs no clock, no encoding and no agreement — and because there are two conductors, the choice of which one to bias carries a bit of information by itself.
For a full-speed device the resting condition is D+ high with D- low, that condition is the idle state, and the idle state is named J. That sentence is correct and is routinely over-read: the name is attached to the idle condition, not to the polarity, and the asymmetry is a property of the device's configuration rather than of the conductors.
Practically: RTL neither observes nor controls the bias and receives only its consequence; verification must cover the static conditions, not only driven signalling; and whether the port ever left SE0 is among the most informative single observations in bring-up, because it separates never noticed from noticed and broken.
10. What Comes Next
Everything in this chapter was qualified with for a full-speed device, repeatedly and deliberately.
Chapter 3.4 removes the qualification and finds that the answers change. A low-speed device biases the other conductor, which means its idle condition is the opposite polarity — and since idle is J in both cases, J is a different physical polarity at low speed than at full speed. The name is the same; the voltages are reversed.
That is the fact this module has been building toward, and it is why every earlier chapter refused to define J as a voltage pattern. It also has a direct consequence for RTL: any logic that decides J or K must be told what speed it is operating at, and a decoder that hard-codes a polarity is correct for exactly half the devices it will ever meet.
Browse the full path on the USB tutorials index.
Continue learning
Related tutorials
- Related topic
Pull-Up Resistors
How a device announces itself with no protocol available: a resistor working against the host's opposing pull-down, why the ratio between them makes the announcement unambiguous, why the choice of conductor carries the speed, and what it means that a device can choose when to present it.
- Related topic
Full Speed (FS)
The baseline the architecture was designed around, and the mode against which Low Speed is a reduction. What the two share, the small number of commitments that actually differ, and why the envelope model becomes useful the moment you can say which line of the table moved.
- Related topic
PCIe vs USB — Who Is Allowed to Start a Transfer
A device that must wait to be asked is a different machine from one that may speak. At a 128-step service interval the polled model completed 3,124 of 7,967 transfers.
- Related topic
The Peripheral-Connectivity Problem
Before a universal peripheral bus, every class of device arrived with its own connector, signalling, host interface, configuration story and driver model — and the cost of that fragmentation landed on the host, the operating system, the peripheral vendor and the user at once. The problem, layer by layer, and the requirements it forces on any architecture meant to replace it.
Standards & specifications
- Governing standard
- USB-IF (Universal Serial Bus Specification)(opens USB Implementers Forum (USB-IF) in a new tab)
Defines the USB bus — its electrical signalling, connectors, packet and transaction model, device framework and the descriptors a device must expose — together with the device-class specifications layered on it. It does not define host-controller register interfaces (xHCI and EHCI are separate documents) nor any operating system's driver architecture.
This page also covers RTL structure, verification approach and debugging technique. Those are engineering practice built on the standard, not requirements the standard itself imposes.
Where this fits
Part of the USB curriculum.
