480MbpsのBus動作を実現するためには電気的な仕様の変更が、USB1.xとの互換性を維持しながら必要になります。 また、12/1.5Mbpsの転送と480Mbpsの転送が混在できるようにするために、プロトコルの変更が必要になります。また、USB1.xで目立つようになってきた問題点も改善されます。

USB1.xでは一つのエンドポイントに対するInterruptまたはIsochronous転送は1 フレームに1回以上は行えませんでしたが、USB2.0では一つのエンドポイントに対するInterruptまたはIsochronous転送は1 マイクロフレームに3回まのでの転送が許されます。このような転送に対応するエンドポイントをUSB2.0ではhigh-Speed, High Bandwidth Endpointと呼びます。USB2.0ではこの複数回の転送を実現するためにEndpoint DescriptorのwMaxPacketSize Fieldを以下のように変更しています。

 

Endpoint Descriptor wMaxPacketSize Field
Bits15:1312:1110:0
FieldReservedNumber of transactions per microframeMaximum size of data payload in bytes

 

この時、マイクロフレーム当たりの転送回数と1つのパケットのデータ ペイロードには以下のような制約があります。

  1. transaction, Max packet size < 1024 bytes
  2. transactions, Max packet size 513-1024 bytes
  3. transactions, Max packet size 683-1024 bytes

USB1.x Isochronous転送ではData packetのPIDとしてDATA0(C3h)のみを使用していましたが、リトライの無いIsochronous転送で転送に失敗した場合にHigh Bandwidth Isochronous転送では、どのパケットが有効であったかを知ることができません。このため、DATA0(C3h)以外にDATA1(4Bh)、DATA2(87h)、MDATA(0Fh)の3つのPIDを新たに使うようになりました。

USB2.0 Isochronous transfers

なお、High Bandwidth Interrupt転送は通常と同じData toggle sequenceを使います。

  • カタログポータル