3 ms·
Well, high speed serial coms existed before USB, so the premise of the question is a bit wrong. RS-422 officially supports 10 Mbps over short distances, for ex
by labcomputer 3y ago
Well, high speed serial coms existed before USB, so the premise of the question is a bit wrong. RS-422 officially supports 10 Mbps over short distances, for example, and various serial WAN protocols supported >100Mbps over copper before USB launched.
I would argue that what USB (1.1-2.0) does differently from previous serial peripheral ports is mostly software and standardization, and really relate to making it cheap and simple for "normal people" to use:
1. USB 1.1 supports only two bit rates (1.5 and 12 Mbps), which is autoconfigured before device enumeration. 12 = 8 * 1.5, so the clock divider is cheap and easy.
2. USB limits cables to fairly short lengths (<=5m) compared to earlier serial ports (RS-422 supports 10 Mbps at 15m)
3. USB (pre-OTG extensions) rigorously enforced the idea of a "host" (upstream) and "device" (downstream), at both the protocol and physical connector level (which greatly simplifies things--for example, you can't create a loop, and don't need STP to detect it). A child can easily see that a B (device) socket doesn't fit an A (host) plug.
4. USB device enumeration and configuration are extensively software based, and USB defines a number of standard device classes so that many common types of devices (e.g., keyboards, mice) don't need specific drivers.
5. One thing that USB does that's less common among serial peripheral interfaces is to use a single differential pair for data going in both directions (it's time-shared: so the host polls the device then the device responds). The pin-count is less than a "regular" RS-422 port, but you still get the advantages of differential signaling.
6. USB carries power with only one more pin than needed to create a minimal bidirectional serial data connection, so "lite" devices don't need a separate power connector (ignoring very slow protocols like "1-wire").
7. USB does some funny things with packet framing (like NRZI encoding and bit-stuffing) and some things to help reduce device cost (like the JKJKJK packet preamble to sync the device baud-rate generator and using SE1/SE0 states for device disconnect and bus reset signaling), but none of that is really fundamental to making a 10Mbps-class serial interface.