USB 3.0レセプタクルのピンを見ると、送信と受信のペアが別々にあることがわかりますが、USB 2.0には「データ」ピンペアが1つしかありません。USB 2.0は、デバイスが同時に通信しないことをどのように保証しますか?
USB 3.0レセプタクルのピンを見ると、送信と受信のペアが別々にあることがわかりますが、USB 2.0には「データ」ピンペアが1つしかありません。USB 2.0は、デバイスが同時に通信しないことをどのように保証しますか?
回答:
USBは厳密にマスタースレーブです。ホストが送信するように指示しない限り、デバイスは送信しません。
いわゆる「割り込み」モードは実際にはポーリングです。たとえば、8ミリ秒ごと(またはゲーマーマウスを持っている場合はそれ以下)、PCはマウスに「自分の位置は何ですか」と尋ね、マウスが応答します。
たとえば、USBシリアルインターフェイスがある場合も同じです。インターフェイスがシリアル回線でデータを受信すると、データをPCに送信しません。代わりに、PCがトランザクションを開始し、データを要求するのを待ちます。
このウェブページは、交換されるパケットに関する適切な説明があります。基本的に、USBは最も低価格で安価な周辺機器が機能するように実装されていることに注意してください。つまり、ほとんどのインテリジェンスはホスト、ホストUSBコントローラー、OS、およびドライバーにあります。これは、仕様を読むと非常に明白です。
Firewire(たとえば)はまったく異なる哲学を持ち、はるかに強力で、マルチマスターであるため、デバイスはホスト/マスターの助けを借りずに互いに通信できます。実際には、その哲学は、USBよりも、アイソクロナス転送を上に重ねたトークンリングのようなものにはるかに近いものです。ただし、「マルチマスター」とは、複雑なソフトウェアスタックを実行するデバイスに強力なマイクロコントローラーが必要であることを意味します。したがって、より高価であるため、カムコーダーや高速ハードドライブエンクロージャーなどの高価な製品に限定されます。ファイヤーワイヤーマウスは意味がありません、あまりにも高価です。これが、FireWireが失敗した理由の1つです。
USBフレームワークでは、USBホストが通信を「許可」した場合にのみ「通信」するため、デバイスは同時に通信できません。また、USBホストでは、最初のデバイスとのシーケンシャルトランザクションプロトコルが完了した場合にのみ、別のデバイスが「通話」できます。また、USBデバイスには、それ自体で「話す」手段がなく、USBにはアクティブな割り込みメカニズムがありません。手短に言えば、この規律を実装するメカニズムは次のとおりです。
USB 2.0デバイスが接続された後、ホストは各デバイスに一意のアドレスを割り当ててそれらを列挙します。
バス上のすべてのトランザクションは、USBホストによって開始されます。
すべてのUSBトランザクションのヘッダーには、特定のデバイスアドレスが含まれています。トランザクションがUSBツリー全体(特定のホストコントローラーインスタンス上)でブロードキャストされる場合でも、一致したアドレスを持つデバイスのみがトランザクションに応答し、データを取得するか、データで応答します。
「パートナー」リンクは、データを正常に受信したユーザーからの指示で確認応答を送信します。トランザクション全体は、トランザクションの整合性を確保するために、トークン、タイムアウト、エラー修正コードの定義されたシーケンスで確立されたプロトコルに従います。
他のすべてのデバイスは、それらに向けられていないトラフィックをリッスンして無視しています。
それはそれについてです、それは「半二重」インターフェースです。