A look at the role of four types of transaction in the USB 3.0 protocol layer: bulk, control, interrupt and isochronous.
The types of packets involved in a transaction depend on the endpoint type.
There are four transaction types:
- Bulk Transactions
- Control Transactions
- Interrupt Transactions
- Isochronous Transactions
Each type of transaction has both IN and OUT directions.
A bulk transaction guarantees error-free delivery of data between the host and the device using error detection and retry. It supports up to 16 bursts, and streams and works with a maximum packet size of 1024 bytes.
For an IN basic retry transaction, the Host sends ACK with the Retry bit set when a data packet is not received, or is corrupted.
Seq# is set to the Seq# of the corrupted/missing data packet.
For an IN retry burst the host discards data packets that are sent in between the corrupted/missing data packet and the retry of the corrupted/missing data packet.
SuperSpeed streaming is like an extension of a logical Bulk endpoint, and can multiplex multiple independent logical data streams. The protocol supports between 1 and 65,533 streams.
Control transactions support bursts of one only, with a maximum packet size of 512 bytes. USB 3.0 carries forward the 2- and 3-stage control transfer strategies from USB 2.0.
There are three stages to a control transaction. The setup stage uses an 8 byte data packet. A data stage carries data packets of up to 512 bytes, with a Retry mechanism for guaranteed delivery. The Status stage includes a transaction packet.
There are two types of control transaction: a Control Read and a Control Write.
Interrupt transactions in USB 3.0 offer a guaranteed bounded latency (service interval) and are mainly used for infrequent data transfer. The maximum packet size is 1024 bytes and the reason they are useful is that there is a verification that a packet was delivered successfully.
Similar to Bulk transactions, Interrupt transactions support the Retry, Not Ready (NRDY)/Endpoint Ready (ERDY) protocols.
Isochronous transactions have a guaranteed bounded latency (service interval), like interrupt transactions, but don’t have a Retry mechanism. This means that packets sent using the isochronous protocol aren’t guaranteed to arrive, which makes it a sensible choice for sending audio and video – you don’t want dropped audio packets to be reinserted in the audio stream later.
The maximum packet size is 1024 bytes, and USB 3.0 will support up to 48 of these 1024 byte packets during a Microframe.
The bInterval value, which is used by the device to tell the host how frequently it wants to move data, can vary between 1 and 16, representing intervals from 125µs to 4s, as in USB 2.0.
The ITP packet is used for synchronization between the host and the device: the device needs to be in U0 if expecting an Isochronous Timestamp Packet (ITP). Whenever an ITP is forwarded by a hub, if the downstream link is in a low-power state, the hub sets the delayed bit to tell the device that the ITP contains old information.
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 fuller descriptions of each type of transaction and examples of their use, and more. Click on the links below.