In order to realize the 480 Mbps bus operation for USB 2.0, a change in electrical specifications was necessary, but without sacrificing compatibility with USB 1.x. Furthermore, a change in protocol was required to allow 12/1.5 Mbps transfers to coexist with 480 Mbps transfers. The new specification also resolves issues that were evident in USB 1.x.
Under USB 1.x, an Interrupt or Isochronous transfer to a particular endpoint could only be performed once per frame. Under USB 2.0, up to 3 transfers can be performed per microframe. Endpoints that support these kinds of transfers under USB 2.0 are referred to as high-Speed High-Bandwidth Endpoints. In USB 2.0, the Endpoint Descriptor's wMaxPacketSize Field has been modified as follows in order to enable multiple transfers per microframe.
|Endpoint Descriptor wMaxPacketSize Field|
|Field||Reserved||Number of transactions per microframe||Maximum size of data payload in bytes|
Note that the number of transfers per microframe and the data payload per packet are restricted as follows.
- transaction, Max packet size < 1024 bytes
- transactions, Max packet size 513-1024 bytes
- transactions, Max packet size 683-1024 bytes
Isochronous transfers under USB 1.x used only DATA0 (C3h) as the PID for data packets. However, with this method, if an Isochronous transfer without retries failed, it was not possible to determine which packets were valid for a High Bandwidth Isochronous transfer. For this reason, DATA1 (4Bh), DATA2 (87h), and MDATA (0Fh) are now used in addition to DATA0 (C3h).
For High Bandwidth Interrupt transfers, a data toggle sequence is used as before.