In the world of USB, a chip referred to as the "host controller" determines and controls all actions. Transfers must be started by the host, and cannot be requested directly by peripheral devices. In other words, USB peripheral devices cannot perform direct data transfer with each other. The only action that peripheral devices can actively initiate against a host is to wake a suspended system. This action is referred to as "remote wake up."
When the host controller needs to announce the start of a transfer, it broadcasts packets called "tokens" to the bus. Each peripheral device connected to the USB bus has an assigned address. If the address included in the token does not match the address assigned to the device, the device will ignore the upcoming transfer. The device with the matching address will be the only device that responds. This procedure remains unchanged for USB 2.0, as is the number of addresses that can be defined.

About Host Controller

 

Downstream ports on a hub

 

Addresses are assigned to ports by taking advantage of the fact that downstream ports on a hub are disabled until the hub has been properly recognized by the host PC. All peripheral devices, including hubs, will respond to the default address of "00h" until a unique address has been assigned. The host PC begins by interpreting the type of the first connected device, and then assigns addresses to peripheral devices and loads the necessary drivers. This process is called "enumeration." When the PC recognizes the first peripheral device to be a hub, it will enable the downstream ports on the hub one by one, and in doing so, identify the connected devices, assign addresses, and load applicable drivers.

In the following section, a USB FDD is used as an example to describe the necessary configuration. A USB FDD needs Control transfers for configuration under the USB environment, Bulk transfers for exchanging data, and Interrupt transfers for notification of the insertion/ejection of an FD (a more detailed explanation of each transfer type will follow later). Since a peripheral device can only have 1 address, the transfer type to be used must be specified with tokens. Furthermore, peripheral devices have FIFO buffers for transfers, so each buffer must be numbered. Once a transfer type has been linked to each buffer number, the transfer method for the peripheral device can selected by simply specifying the buffer number with a token. In USB terms, a buffer with an associated transfer method is referred to as an "endpoint."
Control transfers are used for configuration under the USB environment, and are required for every device. For this reason, Endpoint 0 is always linked to Control transfers. Control transfers are bidirectional, but only use 1 endpoint. For an FDD, Bulk transfers require independent endpoint number allocation for receiving and sending transfers. This is because Bulk transfers may be receive-only, send-only, or bidirectional, as opposed to Control transfers which are always bidirectional.
"Interface" is a concept that has been derived to handle endpoints as a group. Using an interface allows the host PC to load drivers on a per-Interface basis, making it relatively easy to implement multiple functions on a single device.

 

Interface