Universal Serial Bus. Grant Heileman. The History of USB. In 1994 a collaborative effort to design a standard for peripheral devices was made between Compaq, DEC, IBM, Intel, Microsoft, NEC, and Nortel. USB 1.0.
Universal Serial Bus
In 1994 a collaborative effort to design a standard for peripheral devices was made between Compaq, DEC, IBM, Intel, Microsoft, NEC, and Nortel.
USB 1.0 was released January 1996. It has a data transfer rate of 12 Mbit/s. However USB did not become popular until its first revision, in 1998. This revision featured the ability to use either 12 Mbit/s(FS) or 1.5 Mbit/s(LS) depending on the device being used.
April 2000, the specifications for USB 2.0 are released. With a data transfer rate of 480 Mbit/s(HS) this revision was much more superior than its predecessors. However, just because this speed is manageable does not mean that it is often met.
Signals are sent across USB cables by a twisted set of differential pair wires D+ and D- ( labeled W and G in the picture). USB uses Non Return to Zero Invert (NRZI) data encoding. This means that a 1 will be produced when there is no change in the level of the signal and a 0 will be produced whenever the signal changes. Power is supplied to the devices by the Vbus (+5v) and GND (-5v) wires.
A host controller is an additional piece of hardware that is used to guarantee that the data transmitted over the bus is within the USB specifications and no errors have occurred. Along with data processing and error management the HC is used to generate Start of Frame (SOF) packets every 1msec.
The SIE is used in both the host and slave. The SIE is used in the serialization of USB transmissions. USB implements bit stuffing. This means that after six consecutive ones a zero is inserted. The SIE is responsible for bit stuff encoding/decoding the NRZI stream. It also generates the CRCs and confirms any incoming CRC, as well as detects PID, SOP, EOP, reset signals, and resume signals.
Once you plug your device in a process called enumeration starts. The host initiates enumeration by…
- Sending a reset signal to the device, as well as determine it’s speed
- reading the device’s information
- assigning a unique 7 bit address to the device
- If the device is compatible with the host the device’s drivers are loaded and it is set to a configurable state.
An interface is a group of endpoint. A endpoint is the physical structure, located on a USB device, that is the destination of the Packets. Managing interfaces allows the use to send information from the hosts buffers to specific endpoints on the interface.
Endpoints can be Out (host to device)
or In (device to host)
A pipe is a logical connection between the appropriate software in the host and a particular endpoint on the device. There are two types of pipes, stream and message. A stream pipe is uni-directional and utilizes the isochronous, interrupt, and bulk data transfers. A message pipe is bi-directional and is exclusively used for control data transfers. Endpoint Zero is usually reserved for message pipes.
USB data is transmitted LSB first and contains packages consisting of these fields.
USB uses four different packet types. Token, Data, Handshake, and start of frame.
Token packets are used to identify the type of transaction that will be taking place.
Token packets must be formatted like this
Data packets contain the payload, low speed devices can have a maximum size of 8 bytes while full and high speed devices can have a maximum size of 1023 bytes and 1024 bytes respectively. The data must be sent in multiples of bytes. Data0 and Data1 can transmit up to 1024 bytes of data. High speed devices have an additional two packet types, Data2 and Mdata.
Data packets must be formatted like this
Handshake packets are used to determine whether or not the the transmission of the data packet was successful. The types of handshake packets consist of.
Handshake packets must be formatted like this.