Transactions: A USB transaction has three parts: the token packet, the optional data
packet, and the status packet, which represent the header, payload, and data
acknowledge, respectively. Since USB is host-driven, the host initiates
transactions by sending the token packet. It also sends packets to indicate the
start of each frame, every millisecond. Packets on this layer are taken care
of, so the developer does not have to worry about such low level transactions.
Endpoints: Endpoints can be thought of as the low-level interface between the hardware and firmware
on the device. Packets are sent using specific input or output endpoints.
Endpoint zero is used for control and status requests during enumeration.
Pipes: Pipes are the equivalent of endpoints for the host. It is the interface between the
host and the endpoints. Since pipes are used by the PC, pipes have bandwidth,
transfer type, direction, and maximum packet size associated with them. There
are two types: stream pipes for bulk, isochronous, and interrupt transfers; and
message pipes for control transfers.
Transfer types. There are 4 transfer types, control, interrupt, bulk, and isochronous. The transfer types are compared in the table below.
Control transfers are used for device enumeration and other USB device tasks. Interrupt transfers are used when timely delivery as
well as data integrity is required, and a low packet size (compared to
isochronous transfers) can be tolerated. Bulk transfers are used for bursts of
data whose integrity is critical, but do not have to be delivered at a regular,
fixed rate. Isochronous transfers are useful from streaming devices that
require the delivery of large quantities of data at fixed intervals.
For control, interrupt, and bulk transfers, data integrity is ensured through cyclic redundancy checking and acknowledging
reports through the status packet. For interrupt and isochronous transfers,
timely delivery is ensured because the host assigns bandwidth to interrupt and
isochronous endpoints up to 90% of the total available bandwidth on the bus.
For the remaining 10% (or more), priority is given to control transfers and
then any remaining space is given for bulk transfers.
Control, interrupt, bulk, and isochronous transfers use multiple transactions each containing a token, data, and status packet to carry out their USB communication.