Skip to content
VLSI Mentor

USB · Module 3

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.

Three chapters have leaned on the pull-up without examining it. It determined the idle polarity, announced the device's presence, and carried the speed information that Chapter 3.4's decoder needs. That is a great deal of work for one resistor, and this chapter is about how it does it.

The framing that makes the mechanism make sense is Chapter 3.3 §4's: a device must announce presence and speed before any communication is possible, because the signalling rate is one of the things being announced. Anything requiring agreement, a clock or an encoding is therefore unavailable. What remains is physics — and a resistor is about the simplest physics that can carry information.

1. A Contest Between Two Resistors

The announcement works because two components pull the same conductor in opposite directions, and one of them wins decisively.

The host's downstream port presents a pull-down on each conductor: a resistor to ground, nominally 15 kΩ. Chapter 3.6 is about these; what matters here is that they are always present and always pulling toward ground.

A device presents a pull-up on one conductor: a resistor to a positive supply of nominally 3.3 V, with a value of nominally 1.5 kΩ.

When a device attaches, the conductor it biases has both resistors on it, forming a divider between the device's supply and the host's ground. Work out where the conductor sits:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  3.3 V

   1.5 kΩ        (device pull-up)

    ├───────── the conductor

   15 kΩ         (host pull-down)

   GND

  conductor  =  3.3 V  ×  15 / (15 + 1.5)  =  3.3 × 0.909  ≈  3.0 V

That is the whole mechanism, and the ratio is the design. The pull-down is an order of magnitude larger than the pull-up, so the divider lands close to the supply rather than anywhere ambiguous. A single-ended receiver comparing the conductor against its threshold sees an unmistakable high.

Reverse the ratio and the scheme collapses: comparable resistor values would put the conductor near the middle of the range, where a receiver's decision becomes a matter of tolerances and temperature rather than of what is attached. The pull-up is not merely present; it is decisively stronger, and that is what makes the announcement a fact rather than an opinion.

With no device attached there is no pull-up, so each conductor sees only its 15 kΩ to ground and rests low. Both low is SE0 — which is why an unoccupied port sits in that condition, and why Chapter 3.1's decoder resets to it.

2. One Resistor, Two Facts

The mechanism carries two independent pieces of information at once, using nothing but position.

That a device is present — because the conductor rose at all, which cannot happen without something supplying current against the pull-down.

How fast it speaks — because there are two conductors and the device biased a particular one. Chapter 3.4 established the mapping: full speed puts the pull-up on D+, low speed on D-.

The pull-up contest shown on both conductors. Each conductor of the host's downstream port carries a fifteen kilohm pull-down to ground, which holds it low when nothing is attached. A full-speed device connects a one-point-five kilohm pull-up from a three-point-three volt supply to D plus, and a low-speed device connects the same pull-up to D minus instead. In either case the pull-up is roughly ten times stronger than the pull-down, so the biased conductor settles close to the supply and reads as a clear high, while the other conductor remains held low. Which conductor rose therefore tells the host both that a device is present and at which of the two speeds it operates.Full-speed device1.5k pull-up on D+Low-speed device1.5k pull-up on D-D+ at the port15k pull-down always presentD- at the port15k pull-down always presentWhich conductor rose?presence AND speed, from positionalone12
Figure 1 — the same contest on either conductor. Which one it happens on is the entire speed announcement, available before any communication exists.

Two facts, one resistor, no protocol. It is a genuinely economical piece of design, and it is worth appreciating that the choice of conductor — a purely spatial property — is doing the work an encoded field would otherwise have to do.

3. Attachment, and Why It Is Not an Edge

A full-speed attachment, conceptually — conditions, not voltages

7 cycles
A full-speed device attaching to an idle port, shown conceptually. The port begins in SE0 with both conductors held low by the host pull-downs. On connection the device's pull-up begins raising D plus, and during a settling interval the conductor's level is rising and the observed condition is not yet dependable. Once settled the pair reads as the idle state J. The host qualifies the condition over an interval rather than acting on the first observation, so a brief or bouncing contact does not produce a spurious attachment. The figure is conceptual and shows no voltages or real durations.contact made — the pull-up begins to wincontact made — the pull-upbegins to winsettled: D+ high, D- lowsettled: D+ high, D- lowqualified over time, not on first sightqualified over time, not onfirst sightD+ conditionlolorisingrisinghihihiD- conditionlololololololoobservedSE0SE0unsettledunsettledJJJhost viewemptyemptyemptyemptycandidatequalifyingattachedt0t1t2t3t4t5t6
Figure 2 — attachment is a condition that settles, not an edge that arrives. The host qualifies it over time rather than acting on the first observation.

The important idea is in the last row. Attachment is a condition that settles, not an edge that arrives. A resistor charging a cable takes real time; a connector's contacts do not mate instantaneously or cleanly. A host that concluded device present from a single observation would be reporting attachments that had not happened and, worse, would be sampling a level that was still moving. Detection therefore qualifies the condition over an interval, which is why Chapter 3.7 treats attachment as a sequence with timing rather than as an event.

4. A Resistor the Device Can Choose to Present

The last property of the mechanism is the one with the most architectural consequence: in many devices, the pull-up is not permanently connected. The device controls whether it is presented, typically through a switch.

That turns a static announcement into something deliberate, and it gives a device two abilities it would not otherwise have.

It can finish initialising before being noticed. A device that presented its pull-up the instant power arrived would be announcing itself while its own logic was still coming up — and the host, having noticed it, would begin a sequence the device is not ready for. Withholding the pull-up until ready makes being noticed something the device opts into.

It can make itself disappear and return. Removing the pull-up lets the conductor fall back to the host's pull-down, so the port returns to SE0 and the host observes a disconnection — which is genuine as far as the interface is concerned, because the interface's definition of present is exactly something is winning the contest. Re-presenting it produces a fresh attachment. A device can therefore re-enter the host's discovery sequence without anyone touching the cable, which is a capability later modules build on.

And it is how a high-speed-capable device leaves this model behind. As Chapter 3.7 develops, a device that negotiates high-speed operation removes this pull-up as part of the transition, because high-speed operation uses a different electrical arrangement in which this static bias has no place. The pull-up is the mechanism of the low- and full-speed world, and switching it off is part of leaving that world.

5. Where the Boundary Falls for a Hardware Engineer

This is a chapter about resistors, which makes it a good place to be precise about what is and is not an RTL concern.

The resistor is not. Its value, its tolerance, its supply and the divider of §1 are analog and device-level design. No digital model represents them, and RTL that computes a divider is describing something outside its domain.

The switch control frequently is. Whether the pull-up is presented is commonly a controllable bit — driven by the device's own logic or firmware — so a digital design may well own the decision, even though it owns nothing about the resistor itself. That is a clean and typical split: the digital side chooses, the analog side implements.

And the consequence arrives as a line state. What the host's digital domain learns is that the port's condition changed, through the path Chapter 2.4 built — synchronised, made sticky, and reported. Nothing in that path knows a resistor exists.

The state worth holding on the device side, then, is small and specific: whether the pull-up is currently presented, and whatever condition gates presenting it. That is a design decision with real consequences — a device that presents too early gets a sequence it cannot answer — and it is entirely separable from anything about the resistor.

6. Verification and Debug

The stimulus dimension this chapter creates is presence itself, and it is the one most often reduced to a constant. A device model that simply exists has no attachment, no removal, and no re-attachment. Worth driving: attach; detach; attach at each speed; a device that withholds its pull-up for a while before presenting it; and removal partway through activity, which is the case that exercises whatever the host does about a device that vanishes mid-operation.

Representative coverage dimensions — not a verification plan:

  • attachment at each of the two static speeds
  • pull-up presented promptly, and presented after a delay
  • pull-up removed while the port is idle, and while it is active
  • repeated attach/detach cycles without physical change, exercising the §4 capability
  • an unoccupied port held at SE0 for an extended interval

For debug, the divider gives you a measurement with real diagnostic value. §1 says a correctly presented full-speed pull-up puts the conductor near 3.0 V. A conductor sitting near the supply suggests the pull-down is missing or disconnected — nothing is opposing. A conductor sitting near ground with a device attached suggests the pull-up is absent, unpowered or not connected through. A conductor sitting midway suggests the resistors are the wrong values relative to each other, or that there is unintended resistance in series with the pull-up — a partially mated contact, a damaged conductor, corrosion.

That middle case is the interesting one, because it is exactly where a receiver's decision stops being dependable. A port in that condition may appear to work intermittently, or work for one unit and not another, because the outcome depends on the threshold each particular receiver happens to have. A voltage in the ambiguous region is a fault even when the device happens to be detected, and recognising that saves chasing a symptom that will return.

7. Common Misconceptions

8. Reason It Through

A full-speed device is detected reliably on one host and intermittently on another. When it fails, it is simply not noticed. Measuring the biased conductor with the device attached shows roughly 1.8 V on both hosts.

What does 1.8 V tell you? That the contest is much closer than §1's design intends. A correct full-speed arrangement lands near 3.0 V; 1.8 V is far down toward the middle of the range, so whatever is pulling up is much weaker relative to the pull-down than it should be — or something is opposing it that should not be.

Why would one host detect it and another not? Because at that level the outcome depends on each receiver's threshold, which varies between implementations within their allowed range. Both hosts are behaving legitimately; the device is presenting a condition that is not clearly on either side of the decision, so different but equally valid receivers reach different conclusions. That is the signature of an ambiguous level rather than of a broken host.

What are the candidate causes? Unintended series resistance between the device's supply and the conductor — a partially mated contact, a damaged cable conductor, corrosion — which raises the effective pull-up value. A wrong pull-up resistor. A pull-up supply that is low. Or, less likely given the direction, an extra pull-down somewhere on the host side.

Why is “it works on host A” not evidence of health? Because the device is out of specification either way. Host A's threshold happens to fall on the convenient side of an ambiguous level; nothing about that is a property of the device being correct. A fix that consists of testing against host A is not a fix.

The general lesson. A level in the ambiguous region is a fault even when it happens to be interpreted correctly, and unit-to-unit or host-to-host variation in whether something works is one of the strongest available indicators that a quantity has landed where no one is obliged to agree about it.

9. Understanding Check

10. Summary

A pull-up announces a device by winning a contest. The host's port holds each conductor toward ground through a 15 kΩ pull-down; a device biases one conductor through a 1.5 kΩ resistor to roughly 3.3 V. The divider places the conductor near 3.0 V — an unmistakable high — and the ratio is the design, because comparable values would land in the ambiguous middle where tolerances rather than attachment decide the outcome. With nothing attached each conductor sees only its pull-down and rests low, which is why an empty port sits at SE0.

One resistor carries two facts: that a device is present, and how fast it speaks — the second encoded purely by which conductor is biased, D+ for full speed and D- for low speed.

Attachment is a condition that settles, not an edge that arrives. A resistor charging a cable takes time and contacts do not mate cleanly, so a host qualifies the condition over an interval instead of trusting a first observation.

In many devices the pull-up is switched, which lets a device finish initialising before being noticed, deliberately disappear and return without anyone touching the cable, and — for a high-speed-capable device — remove it entirely when leaving this electrical model behind.

The engineering boundary is clean: RTL may own the switch; it owns nothing about the resistor. And the divider is a diagnostic — near-supply suggests a missing pull-down, near-ground a missing or unpowered pull-up, and midway is a fault even when detection happens to succeed, because at that level different but equally legitimate receivers will disagree.

11. What Comes Next

This chapter treated the host's pull-down as a fixed background condition — always present, always pulling toward ground, the thing the pull-up wins against. It deserves its own examination, because the choice to have it there at all is not obvious.

Chapter 3.6 asks what the alternative would have been. A port with no pull-down does not sit at zero; it floats, and a floating input is not a defined logic state but an antenna whose apparent level is decided by leakage and nearby activity. The pull-downs exist to make nothing attached a definite, recognisable condition rather than an absence of information — and that turns out to matter as much for detecting a device leaving as for detecting one arriving.

Browse the full path on the USB tutorials index.

Continue learning

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.