A look at the USB 3.0 functional layer, an application layer and system software on the host side, and a logical function and device on the device side.
The USB 3.0 SuperSpeed architecture is based on a layered protocol, which includes a functional layer (executed in software); and a protocol layer, link layer and physical layer, all executed in hardware. The functional layers of a USB 3.0 Host and Device are linked by software pipes; the hardware layers are linked with a USB 3.0 cable.
Figure 1 The functional layer of USB3.0 is connected by software pipes, the physical layer by cable (Source: Synopsys)
The Functional layer consists of an application layer and system software on the host side, and a logical function and logical device on the device side.
Pipes are the logical connections between host software and device endpoint.
Figure 2 The USB 3.0 Host and Device Stacks (Source: Synopsys)
In the USB 3.0 software architecture, the Host Stack includes:
- A Host Application, which produces or consumes data and interfaces with USB devices through standard interfaces provided by the…
- Class Drivers, which translate application requests into a protocol specific to a certain type/class of devices; use I/O Request Packets (IRPs) to transfer data to or from USB devices; correspond to a particular class of USB device; and are usually part of the operating system or provided with the USB device.
- USB Drivers, which provide services to allow multiple Class Drivers to configure, control, and exchange data with their associated devices; and handle all communication with the…
- Host Controller Driver, which interacts with the host controller hardware to execute the USB transfers requested by the USB Drivers, and understands the hardware architecture of the host controller.
The Device Stack includes:
- A Device Function/Endpoint, the sink or source of data requested by the host.
- A Function Driver, which handles some USB requests directly, and provides endpoint read/write data interfaces and notification services to the Peripheral Function.
- A Device Controller Driver, which understands the hardware architecture of the peripheral controller, and interacts with the peripheral controller hardware to transfer data via the USB, notifying the Function Driver of USB requests.
If you are new to designing with USB, or looking for tips on implementing USB 3.0 IP, attend Synopsys’ “USB 3.0 University.” Topics in this instructional video series range from a basic USB overview, to implementing USB on FPGAs, to top-level synthesis, and more. Click on the links below.