Re: Pullup resistors on 3-state buses

Andy Ingraham (ingraham@wrksys.ENET.dec.com)
Tue, 3 Jun 97 10:59:53 EDT

> When must pullup resistors (or bus-hold circuits) be used
> on 3-state buses, and when they can be dropped?

If the 3-state bus can ever remain un-driven for a significant length
of time, then pullup resistors may be necessary.

If some device on the bus always has bus ownership, so that the bus
will never float for more than a short time (for bus turnaround), then
pullup resistors are not necessary.

Obviously, "significant" and "short" are subjective. Most any CMOS
bus with no pullup/down resistors, will tend to hold the previous
voltage for a while. You can estimate how long by adding up the
leakage currents, and the total bus capacitance (IC plus intrinsic
trace capacitance).

However, adding pullups can backfire on you.

If your CMOS inputs must never linger around the threshold voltage for
more than a few nanoseconds, then you need to either drive the bus to
the correct state (high if you use pullups) every time before
releasing it, or use very stiff pullups, perhaps 50-100 ohms. Like
ECL terminators.

But if you just add 1k-100k pullups to a bus that may be left either
low or high when tri-stated, then the pullups will actually force your
CMOS inputs to spend a significant time in no-man's land between Vil
and Vih. This solution may be worse than the original problem.

In this situation, using a device with a bus-hold feature, instead,
would be helpful, as it would hold either previous state.

1k-100k pullups only help the long-term problem of a bus left
tri-stated forever.

Also, it is not a universal rule that all CMOS inputs shouldn't be
left floating. I/O's generally won't wander beyond VSS and VDD
because of inherent clamp diodes, but may linger around threshold.
Inputs can be designed to tolerate that condition.

> The PCI bus does not require pullups, but has a paragraph which
> suggests that there may be problems if pullups aren't used.
> So should resistors be used? Are the risks real?

The PCI AD, C/BE#, and PAR lines don't require pullups, but many of
the control lines do (they are listed in the PCI spec). The PCI
protocol ensures that data lines may remain un-driven for no more than
(something like) eight cycles, worst-case, which was believed to be
short enough to not require pullups.

On the PCI bus, adding pullups to the data lines will make the problem
worse.

What is the paragraph that implies problems if pullups aren't used?
Is this the one about the REQ# pins, which could float forever if a
PCI slot is empty and thus has no driver?

Regards,
Andy Ingraham