USBシステム設計

USBシステム設計

USB の設計アーキテクチャはトポロジが非対称で、ホスト、多数のダウンストリーム USB ポート、階層型スター トポロジで接続された複数の周辺デバイスで構成されます。追加の USB ハブを階層に含めることができ、最大 5 階層レベルのツリー構造に分岐できます。 USB ホストは複数のホスト コントローラーを実装することができ、各ホスト コントローラーは 1 つ以上の USB ポートを提供することができます。ハブ デバイスが存在する場合はそれを含め、最大 127 台のデバイスを 1 つのホスト コントローラーに接続できます。USB デバイスはハブを介して直列にリンクされます。ホスト コントローラーに組み込まれている 1 つのハブがルート ハブです。

物理 USB デバイスは、デバイス機能と呼ばれる複数の論理サブデバイスで構成されている場合があります。単一のデバイスが複数の機能を提供する場合があります。たとえば、内蔵マイク (オーディオ デバイス機能) を備えた Web カメラ (ビデオ デバイス機能) です。このようなデバイスを複合デバイスと呼びます。これに代わる方法は、ホストが各論理デバイスに固有のアドレスを割り当て、すべての論理デバイスが物理 USB ケーブルに接続される内蔵ハブに接続する複合デバイスです。

図: デバイス内には複数のエンドポイントがあり、それぞれが論理パイプによってホスト コントローラーに接続されています。各パイプ内のデータは一方向に流れますが、ホスト コントローラーに送受信されるデータが混在しています。

USB デバイスの通信はパイプ (論理チャネル) に基づいています。パイプは、ホスト コントローラーから論理エンティティへの接続であり、デバイス上にあり、エンドポイントと呼ばれます。パイプはエンドポイントに 1 対 1 で対応するため、これらの用語は同じ意味で使用されることがあります。 USB デバイスには最大 32 個のエンドポイント (IN 16、OUT 16) を含めることができますが、これほど多くのエンドポイントを持つことはまれです。エンドポイントは、初期化中 (「列挙」と呼ばれる物理接続後の期間) にデバイスによって定義され、番号が付けられるため、比較的永続的ですが、パイプは開閉される可能性があります。


USB エンドポイントは実際には接続されたデバイス上に存在します。ホストへのチャネルはパイプと呼ばれます。

パイプには、ストリーム パイプとメッセージ パイプの 2 種類があります。メッセージ パイプは双方向であり、制御転送に使用されます。メッセージ パイプは通常、デバイスへの短く単純なコマンドと、たとえばバス制御パイプ番号 0 によって使用されるステータス応答に使用されます。ストリーム パイプは、転送を行う単方向エンドポイントに接続された単方向パイプです。アイソクロナス転送、割り込み転送、またはバルク転送を使用したデータ:

• アイソクロナス転送: 一定の保証されたデータ レート (多くの場合、常にではありませんが、可能な限り高速) ですが、データ損失の可能性があります (リアルタイム オーディオまたはビデオなど)。
• 割り込み転送: 保証された迅速な応答 (制限された遅延) を必要とするデバイス (ポインティング デバイスやキーボードなど)。
• バルク転送: 残りの利用可能な帯域幅をすべて使用する、大規模な散発的な転送ですが、帯域幅や遅延は保証されません (ファイル転送など)。

パイプのエンドポイントは、ホストがデータ転送セッションを開始するときに送信する TOKEN パケットで指定されているタプル (device_address、endpoint_number) でアドレス指定できます。データ転送の方向がホストからエンドポイントへの場合、必要なデバイス アドレスとエンドポイント番号を持つ OUT パケット (TOKEN パケットの特殊化) がホストによって送信されます。データ転送の方向がデバイスからホストの場合、ホストは代わりに IN パケットを送信します。宛先エンドポイントが、製造業者が指定した方向が TOKEN パケットと一致しない単方向エンドポイントである場合 (たとえば、製造業者が指定した方向が IN で、TOKEN パケットが OUT パケットである場合)、TOKEN パケットは無視されます。それ以外の場合は受け入れられ、データ トランザクションを開始できます。一方、双方向エンドポイントは、IN パケットと OUT パケットの両方を受け入れます。

エンドポイントはインターフェイスにグループ化され、各インターフェイスは単一のデバイス機能に関連付けられます。例外はエンドポイント 0 です。エンドポイント 0 はデバイス設定に使用され、どのインターフェイスにも関連付けられません。独立して制御されるインターフェースから構成される単一のデバイス機能を複合デバイスと呼びます。ホストはデバイス アドレスを機能に割り当てるだけであるため、複合デバイスには単一のデバイス アドレスしかありません。


コンピュータの前面にある 2 つの USB 標準 A ソケット

USB デバイスが初めて USB ホストに接続されると、USB デバイス列挙プロセスが開始されます。エニュメレーションは、USB デバイスにリセット信号を送信することで開始されます。 USB デバイスのデータ レートは、リセット シグナリング中に決定されます。リセット後、USB デバイスの情報がホストによって読み取られ、デバイスには一意の 7 ビット アドレスが割り当てられます。デバイスがホストによってサポートされている場合、デバイスとの通信に必要なデバイス ドライバーがロードされ、デバイスは構成された状態に設定されます。 USB ホストが再起動されると、接続されているすべてのデバイスに対して列挙プロセスが繰り返されます。

ホスト コントローラーはトラフィック フローをデバイスに指示するため、ホスト コントローラーからの明示的な要求がなければ、USB デバイスはバス上でデータを転送できません。 USB 2.0 では、ホスト コントローラーは、通常はラウンドロビン方式でバスのトラフィックをポーリングします。各 USB ポートのスループットは、USB ポートまたはポートに接続されている USB デバイスのどちらか遅い速度によって決まります。

高速 USB 2.0 ハブには、高速 USB 2.0 バスとフルおよび低速バスの間で変換を行うトランザクション トランスレータと呼ばれるデバイスが含まれています。高速 USB 2.0 ハブを高速 USB ホストまたはハブに接続すると、高速モードで動作します。次に、USB ハブは、ハブごとに 1 つのトランザクション トランスレータを使用して、ハブ上のすべての高速デバイスと低速デバイスにルーティングされるフル/低速バスを作成するか、ポートごとに 1 つのトランザクション トランスレータを使用して、ポートごとに分離されたフル/低速バスを作成します。ハブ上のポート。

各 USB 3.0 ホストには 2 つの個別のコントローラーがあるため、USB 3.0 デバイスは、そのホストに接続されている USB 2.0 以前のデバイスに関係なく、USB 3.0 データ レートで送受信を行います。以前のデバイスの動作データ レートは従来の方法で設定されています。