USBハブはどのように機能しますか?


9

上記の質問に対するグーグルの答えとウィキペディアの答えを知っています。しかし、もっと具体的な質問があります。USBハブには、多くの受信ポートと1つの送信ポートがあります。これにより、n個のデバイスを一緒に使用できます。しかし、1つのUSBポートでn個のUSBポートを使用してデータ転送を行う方法を理解できません
どのようにすれば同時にすべてのUSBポートに異なるデータを送信できますか?

*

概略図

この回路のシミュレーションCircuitLabを使用して作成された回路

*。


1
ネットワークルーターが1つのLANポート(インターネット)を複数のデバイスに接続できるのとほぼ同じ方法です。各エンドポイント(USBデバイス)にはアドレスが割り当てられ、ハブは、どのアドレスがどのポートにあるかを追跡することにより、ホストからの要求を正しいデバイスにルーティングするだけです。USBでは、すべてのトランザクションを開始するマスター(ホストポート)が1つしかないという意味で、はるかに単純です。
トムカーペンター

@TomCarpenterでは、USBポートはどのようにして異なるデータを一緒に送信しますか?
Aaditya Sahay

1
ホストポートは特定のエンドポイントに話すように要求します。エンドポイントは、ホストから要求されたときにのみ応答します。
トムカーペンター

@TomCarpenterしかし、それらはすべて同時に使用されており、1つずつではなく、すべて一緒に使用されています。
Aaditya Sahay、2016

3
USBバスはUSB 2.0で最大480Mbpsで実行できることを覚えておいてください。ホストは一度に1つのエンドポイントとのみ通信しますが、すべてのエンドポイントと順番に通信し、それらをすばやく切り替えることはできません。ネットワークと同じことです。「ねえ、ポート1でマウスを動かしたかどうか教えてください。ポート2のキーボードでレポートするキーを押しましたか?ポート3のフラッシュドライブにいるので、このデータを保存してください。話をする必要がありますが移動した場合いいえ、[OK]を、その後、ポート1上のマウスが、私に教え」?
トム・カーペンター

回答:


16

それはすべて仲裁に関係しています。複数のデバイスを接続する必要があるシステムでは、だれがいつ話すべきかを決定する何らかの方法が必要です。あなたがアプリケーションに応じて期待するように異なるスキームがあります。

一般的な例-ネットワーキングでは、多くのノードがすべて互いに通信しています。これはアドレス(IPアドレスなど)を持つ各ノードによって行われ、ノードが別のノードと通信したい場合、そのアドレスにパケットを送信します。次に、ルーターなどのデバイスを使用して、複数のポートに着信するパケットを取得し、それらを正しいポートに転送します。アービトレーションは、宛先ポートが解放されるまでパケットを格納するためにメモリを使用して行われます。


次にUSBに接続します。すべてのノードが同等になるわけではないため、これは実際にはネットワーキングよりもはるかに単純です。ホストとエンドポイントの2つの種類があります。ホストは1つだけですが、多くのエンドポイントになる可能性があります。この場合、ホストポートのみが自由に通信できるため、調停ははるかに簡単です。エンドポイントは、ホストから要求された場合にのみ会話を許可され、ホストは一度に1つのエンドポイントとのみ会話します。

host-> endpointパケットの場合、USBハブはホストからすべてのエンドポイントに要求を渡すだけです。すべてのエンドポイントにアドレスがあるため、要求の宛先となったエンドポイントだけがそれに対して何かを行い(応答など)、他のすべてのエンドポイントはパケットを無視します。

エンドポイント->ホストパケットの場合、ホストは最初にアドレスで特定のエンドポイントにパケットを送信し、「今すぐ話せる」と言ってから、そのエンドポイントはすぐに応答を送信する必要があります。常に1つのエンドポイントのみが通信を許可されているため、USBハブは、ホストからの要求に応答するポートからパケットをルーティングするだけです。


ホストがどのデバイスが接続されているか、およびエンドポイントがどのようにアドレスを取得するかに関しては、これは列挙によって実現されます。

すべてのホストおよびハブポートには、D +およびD-ラインにプルダウン抵抗(15kΩ)があります。これらは、デバイスが接続されていないときにポートのデータラインを既知の状態にします。この状態では、ポートはD + / D-ラインを介してデータをまったく送信しません。

デバイスが接続されると、1.5kΩ抵抗を使用してD +(フルスピード)またはD-(低速)データラインをVCCに接続することにより、デバイス自体が認識されます。これにより、列挙イベントがトリガーされます。次に、ポートはデバイスの構成とアドレスの割り当てのプロセスを開始します。2つのデバイスを同時に接続すると、一度に1つずつ列挙されます。

ハブがない場合、ホストは新しいデバイスと通信してセットアップするだけです。システムにハブがある場合、新しいデバイスが接続されたことを報告するのはハブです。ハブが新しい​​デバイスが接続されていると報告した場合、ホストは新しいデバイスをリセットして通信を開始するようにハブに指示します。リセット中、エンドポイントにはデフォルトアドレス0(*)が与えられます。その後、ホストはデフォルトアドレスを使用してエンドポイントと通信し、いつ通信しているのかを知ることができるようにする一意のゼロ以外のアドレスでエンドポイントを構成できます。

(*)一度に列挙されるデバイスは1つだけであるため、アドレス0は常に新しく接続されたデバイスに対して一意になります。


次に、「どうすれば、同時に複数のデバイスが同時に話せるようになるのか」と質問するかもしれません。マウス、キーボード、フラッシュドライブがすべて同じUSBハブに接続されているとします。マウスとキーボードを同時に使用しながら、フラッシュドライブとの間でファイルをコピーできることは誰もが知っていますが、一度に1つのデバイスしか通信できない場合、どうすればそれが可能になるのでしょうか。

まあ、それはすべて、あなたが脳がキーを押したことに気づき、画面が更新されることを期待するのに数百ミリ秒かかるという事実に帰着します。USB 2.0インターフェースは最大480Mbpsで実行できます(USB 3.1は最大10Gbpsで実行できます!)。つまり、ホストは常に1つのエンドポイントとしか通信していなくても、高速で切り替えられるため、それをやっていると言わないでください。

USBホスト:「ねえ、ポート1でマウスを動かしたかどうか教えてください。ポート2のキーボードで、レポートするキーを押しましたか?ポート3のフラッシュドライブにこのデータを保存してください。他に誰か話をする必要がありますか?いいえ、じゃあ、ポート1でマウスを動かしてください。

人間:「ああ、コンピューターは、マウスを動かし、キーボードのキーを押して、画像をフラッシュドライブにすべて同時にコピーしたことに気づきました。」

ホストデバイスは、使用されているエンドポイントアドレスを追跡し、順次または必要に応じて(つまり、OSが特定のデバイスへのアクセスを要求したときに)パケットをそれぞれに送信します。したがって、すべてが同時に発生しているわけではありませんが、仲裁は非常に高速であるため、人間のコンピューターは違いを見分けることができません。


2
追加するには:USBデバイス(正確には「割り込み」エンドポイントのみ)は、1ミリ秒までの一定の間隔でポーリングするように要求できます。何百もの入力デバイスがない限り、遅延に気付くことはありません。
マイケル、

ホストはどのエンドポイントが接続されているかをどのようにして知るのですか?また、これは実際にはハブに関する元の質問に答えているようには見えません。彼らはこのプロセスでどのように相互作用しますか?列挙ではどのように相互作用しますか?
Yona Appletree

1
@YonaAppletree列挙。ホストとハブは、デバイス接続のすべてのポートをスキャンします-それらは、D +(フルスピード)またはD-(低速)のいずれかで1.5kOhmプルアップ抵抗を検出します。エンドポイントにアドレスを割り当てる方法に関する情報を追加します。
トムカーペンター

@YonaAppletreeは、動作中のハブに関しては、答えはすでにそれについて語っています。ホストからエンドポイントへ:「USBハブはホストからすべてのエンドポイントにリクエストを渡すだけです」。エンドポイントをホストする場合:「一度に1つのエンドポイントのみが通信を許可されるため、USBハブは応答するポートからパケットをルーティングするだけです」
Tom Carpenter

1

より短い答え:ホストは、特定のデバイス(これは予備的な「列挙型」でした)にアドレス指定されたデータを、一度に1つのトランザクションで順次送信します。ハブはすべてのパケットをすべてのデバイスにブロードキャストします。デバイスは、自分宛てのトランザクションにのみ応答します。それはすべて、HSデバイスに当てはまります。

FSおよびLSデバイスの場合、プロセスはもう少し複雑です。いわゆる「スプリットトランザクション」をLSまたはFSトラフィックに変換する、すべてのポートのすべてのハブに組み込まれている「トランザクショントランスレータ」を使用します。


USB 3はどうですか?
jbarlow 2016

USB3ハブは、Super-Speedリンクに対してよりインテリジェントで、デバイス/エンドポイントへの明示的なルーティングを使用します。USB2セクションは同じままです。最新のUSB3.1仕様のセクション3.1「アーキテクチャの概要」を参照してください。usb.org
developers / docs /
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.