Ich kenne die Antwort von Google und die Antwort von Wikipedia auf die obige Frage. Aber ich habe eine spezifischere Frage zur Hand. USB-Hubs haben viele eingehende und einen Port und nur einen ausgehenden Port. Aus diesem Grund kann ich beispielsweise n Geräte zusammen verwenden. Aber ich verstehe nicht, wie ein USB-Port Datenübertragungen mit n Anzahl von USB-Ports durchführen kann?
Wie können unterschiedliche Daten gleichzeitig an alle USB-Anschlüsse gesendet werden?

*

Schema

simuliert diese Schaltung – Schema erstellt mit CircuitLab

*.

Kommentare

  • Ähnlich wie Ihr Netzwerkrouter einen LAN-Port (das Internet) mit mehreren Geräten verbinden kann. Jedem Endpunkt (USB-Gerät) wird eine Adresse zugewiesen, und die Hubs leiten Anforderungen vom Host einfach an das richtige Gerät weiter, indem sie verfolgen, welche Adresse sich an welchem Port befindet. ' ist für USB viel einfacher, da es nur einen Master (den Host-Port) gibt, der alle Transaktionen initiiert.
  • @TomCarpenter Then How Würde der USB-Port verschiedene Daten ' zusammen senden?
  • Der Host-Port fordert einen bestimmten Endpunkt zum Sprechen auf. Endpunkte sprechen nur dann zurück, wenn der Host sie dazu auffordert.
  • @TomCarpenter Sie werden jedoch alle gleichzeitig und nicht einzeln, sondern alle zusammen verwendet.
  • Denken Sie daran, dass der USB-Bus dies kann Laufen Sie mit bis zu 480 Mbit / s auf USB 2.0. Der Host spricht immer nur mit einem Endpunkt, aber er spricht nacheinander mit allen und wechselt so schnell zwischen ihnen, dass Sie ' nicht sagen können. Das Gleiche tun Netzwerke. " Hey, Maus auf Port 1, sag mir, ob du ' umgezogen bist. Ok, jetzt Tastatur an Port 2 Haben Sie Tastendrücke zu melden? Jetzt speichern Sie dort auf Port 3, Flash-Laufwerk, diese Daten für mich. Muss ich noch mit jemandem reden? Nein, ok, dann Maus auf Port 1, sag mir, ob du ' umgezogen bist … "

Antwort

Es hat alles mit Schiedsverfahren zu tun. Jedes System, bei dem mehrere Geräte verbunden sein müssen, muss auf irgendeine Weise bestimmen, wer sprechen soll Wann. Es gibt verschiedene Schemata, wie Sie es je nach Anwendung erwarten würden.

Ein häufiges Beispiel: Im Netzwerk sprechen viele Knoten miteinander. Dies geschieht, indem jeder Knoten eine Adresse hat (z. B. IP) Adresse), und wenn ein Knoten mit einem anderen Knoten kommunizieren möchte, sendet er ein Paket an diese Adresse. Sie haben dann Geräte wie Router, die an mehreren Ports eingehende Pakete entgegennehmen und an den richtigen Port weiterleiten Verwenden Sie den Speicher zum Speichern von Paketen, bis der Zielport frei ist.


Nun zu USB. Dies ist tatsächlich viel einfacher als das Netzwerk, da nicht alle Knoten gleich sind. Sie haben zwei Arten, a Host und ein Endpunkt. Es gibt immer nur einen Host, es können jedoch viele Endpunkte vorhanden sein. In diesem Fall ist die Schiedsgerichtsbarkeit viel einfacher, da nur der Host-Port nach Belieben sprechen darf. Endpunkte dürfen nur auf Anfrage des Hosts sprechen, und der Host spricht immer nur mit jeweils einem Endpunkt.

Bei Host- > Endpunktpaketen leiten die USB-Hubs die Anforderung vom Host einfach an alle Endpunkte weiter. Da alle Endpunkte eine Adresse haben, wird nur derjenige, an den die Anforderung adressiert wurde, etwas damit tun (z. B. antworten), alle anderen ignorieren das Paket.

Für Endpunkt- > Host-Pakete, der Host sendet zuerst ein Paket per Adresse an einen bestimmten Endpunkt, um zu sagen, " Sie können jetzt sprechen " und dann muss dieser Endpunkt sofort eine Antwort senden. Da jeweils nur ein Endpunkt kommunizieren darf, leitet der USB-Hub das Paket einfach von dem Port weiter, der auf eine Anfrage des Hosts reagiert.


In Bezug auf die Funktionsweise des Hosts Um herauszufinden, welche Geräte angeschlossen sind und wie der Endpunkt seine Adresse erhält, wird dies durch Aufzählung erreicht.

Alle Host- und Hub-Ports verfügen über Pulldown-Widerstände (15 kOhm) auf den D + – und D- -Leitungen. Diese versetzen die Datenleitungen dieses Ports in einen bekannten Zustand, wenn kein Gerät angeschlossen ist. In diesem Zustand sendet der Port überhaupt keine Daten über D + / D- Leitungen.

Wenn sich ein Gerät befindet angeschlossen macht es sich durch Anschließen der Datenleitung D + (volle Geschwindigkeit) oder D- (niedrige Geschwindigkeit) an VCC unter Verwendung eines 1,5 kOhm-Widerstands bemerkbar. Dies löst ein Aufzählungsereignis aus. Der Port beginnt dann mit der Konfiguration des Geräts und der Zuweisung einer Adresse.Wenn Sie zwei Geräte gleichzeitig anschließen, , werden sie einzeln aufgelistet .

Wenn keine Hubs vorhanden sind, spricht der Host einfach mit dem neuen Gerät und richtet es ein. Wenn das System Hubs enthält, , meldet der Hub, dass das neue Gerät angeschlossen ist . Wenn ein Hub meldet, dass ein neues Gerät angeschlossen ist, weist der Host den Hub an, das neue Gerät zurückzusetzen und die Kommunikation zu starten. Während des Zurücksetzens erhält der Endpunkt die Standardadresse 0 (*). Der Host kann dann mit der Standardadresse mit dem Endpunkt kommunizieren und ihn mit einer eindeutigen Adresse ungleich Null konfigurieren, damit er weiß, wann mit ihm gesprochen wird.

(*) Da nur ein Gerät vorhanden ist Wird die Adresse 0 immer aufgelistet, ist die Adresse 0 für das neu angeschlossene Gerät immer eindeutig.


Sie können dann fragen, " wie Kann ich dann mehrere Geräte gleichzeitig sprechen lassen? ". Angenommen, Sie haben eine Maus, eine Tastatur und ein Flash-Laufwerk an denselben USB-Hub angeschlossen. Wir alle wissen, dass Sie Maus und Tastatur gleichzeitig verwenden können, während Sie gleichzeitig Dateien auf / von Ihrem Flash-Laufwerk kopieren. Wenn jedoch jeweils nur ein Gerät sprechen kann, wie kann dies möglich sein?

Nun Es kommt alles darauf an, dass die wenigen hundert Millisekunden, die Ihr Gehirn benötigt, um zu bemerken, dass Sie eine Taste gedrückt haben und erwarten, dass der Bildschirm aktualisiert wird, eine Ewigkeit für den Computer ist. Eine USB 2.0-Schnittstelle kann mit bis zu 480 Mbit / s betrieben werden (USB 3.1 kann mit bis zu 10 Gbit / s betrieben werden!). Dies bedeutet, dass der Host zwar immer nur mit einem Endpunkt kommuniziert, jedoch so schnell zwischen diesen wechselt, dass Sie dies tun können „t tell it“ macht es.

USB-Host: " Hey, Maus auf Port 1, sag mir, ob du umgezogen bist. Ok, jetzt Tastatur auf Port 2 hast du irgendwelche Tastendrücke zu melden? Jetzt bist du da Speichern Sie diese Daten auf Port 3, dem Flash-Laufwerk, für mich. Wenn ich noch mit jemandem sprechen muss, sagen Sie mir, ob Sie umgezogen sind … "

Mensch: " Oh, schau Der Computer bemerkte, dass ich gerade meine Maus bewegte, eine Taste auf meiner Tastatur drückte und gleichzeitig ein Bild auf das Flash-Laufwerk kopierte! "

Das Host-Gerät verfolgt, welche e ndpoint-Adressen werden verwendet und senden Pakete nacheinander oder nach Bedarf (d. h. wenn das Betriebssystem den Zugriff auf ein bestimmtes Gerät anfordert). Während also nicht alles gleichzeitig geschieht, ist das Schiedsverfahren so schnell, dass der Computer-Mensch den Unterschied nicht erkennen kann.

Kommentare

  • An Hinzufügen: USB-Geräte (genauer gesagt nur „Interrupt“ -Endpunkte) können in einem bestimmten Intervall von bis zu 1 ms eine Abfrage anfordern. Solange Sie nicht über Hunderte von Eingabegeräten verfügen, werden Sie keine Verzögerung bemerken.
  • Woher weiß der Host, welche Endpunkte verbunden sind? Außerdem scheint ' die ursprüngliche Frage zu Hubs nicht zu beantworten. Wie interagieren sie in diesem Prozess? Wie interagieren sie bei der Aufzählung?
  • @YonaAppletree-Aufzählung. Hosts und Hubs durchsuchen alle ihre Ports nach Geräteverbindungen – sie erkennen einen 1,5-kOhm-Pull-up-Widerstand an D + (volle Geschwindigkeit) oder D- (Niedrige Geschwindigkeit). Ich ' füge einige Informationen hinzu, wie Endpunkten eine Adresse zugewiesen wird.
  • @YonaAppletree in Bezug auf Hubs während des Betriebs spricht die Antwort darüber schon. Für Host an Endpunkt: " USB-Hubs leiten die Anforderung vom Host einfach an alle Endpunkte weiter ". Für den Endpunkt zum Host: " Da zu einem bestimmten Zeitpunkt nur ein Endpunkt kommunizieren darf, leitet der USB-Hub das Paket einfach von dem Port weiter, der "

Antwort

Kürzere Antwort: Der Host sendet Daten, die an ein bestimmtes Gerät adressiert sind ( das war vorläufig „aufgezählt“), eine Transaktion nach der anderen, nacheinander. Der Hub sendet alle Pakete an alle Geräte. Ein Gerät reagiert nur auf Transaktionen, die an es gerichtet sind. Das ist alles, was für HS-Geräte gilt.

Für FS- und LS-Geräte ist der Prozess etwas komplizierter. Es werden „Transaktionsübersetzer“ verwendet, die in jedem Hub für jeden Port integriert sind, der dies übersetzt -aufgerufene „Split-Transaktionen“ in LS- oder FS-Verkehr.

Kommentare

  • Was ist mit USB 3?
  • USB3-Hubs Intelligenter für Super-Speed-Verbindungen und explizites Routing zu Geräten / Endpunkten. Der USB2-Abschnitt bleibt unverändert. Siehe Abschnitt 3.1 " Zusammenfassung der Architektur " der neuesten USB3.1-Spezifikationen, usb.org/developers/docs/usb_31_052016.zip

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.