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 USB-Anschlüssen durchführen kann?
Wie kann es verschiedene Daten gleichzeitig an alle USB-Anschlüsse senden?
* *
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
*.
Antworten:
Es hat alles mit Schiedsverfahren zu tun. Jedes System, bei dem mehrere Geräte verbunden sein müssen, muss bestimmen, wer wann sprechen soll. 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. eine IP-Adresse), und wenn ein Knoten mit einem anderen Knoten sprechen 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. Die Arbitrierung erfolgt unter Verwendung von 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, einen Host und einen 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 Aufforderung des Hosts sprechen , und der Host spricht immer nur mit 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.
Bei Endpunkt-> Host-Paketen sendet der Host zuerst ein Paket an einen bestimmten Endpunkt mit der Adresse "Sie können jetzt sprechen", und dieser Endpunkt muss dann 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 antwortet.
In Bezug darauf, wie der Host ermittelt, 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) an 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 ein Gerät angeschlossen ist, 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 immer nur ein Gerät gleichzeitig aufgelistet wird, ist die Adresse 0 für das neu angeschlossene Gerät immer eindeutig.
Sie könnten dann fragen: "Nun, 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 und gleichzeitig Dateien auf / von Ihrem Flash-Laufwerk kopieren können. Wenn jedoch immer nur ein Gerät gleichzeitig sprechen kann, wie kann dies möglich sein?
Nun, es kommt alles auf die Tatsache 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 ausgeführt werden (USB 3.1 kann mit bis zu 10 Gbit / s ausgeführt werden!). Dies bedeutet, dass der Host zwar immer nur mit einem Endpunkt kommuniziert, jedoch so schnell zwischen diesen wechselt, dass dies möglich ist Ich sage nicht, dass es das tut.
Das Host-Gerät verfolgt, welche Endpunktadressen verwendet werden, und sendet Pakete nacheinander oder nach Bedarf an jedes Gerät (dh wenn das Betriebssystem den Zugriff auf ein bestimmtes Gerät anfordert). Obwohl nicht alles gleichzeitig geschieht, ist das Schiedsverfahren so schnell, dass der Computer-Mensch den Unterschied nicht erkennen kann.
quelle
Kürzere Antwort: Der Host sendet nacheinander Daten nacheinander an ein bestimmtes Gerät (das vorläufig "aufgezählt" wurde). 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.
Bei FS- und LS-Geräten ist der Vorgang etwas komplizierter. Es werden "Transaktionsübersetzer" verwendet, die in jedem Hub für jeden Port integriert sind und sogenannte "Split-Transaktionen" in LS- oder FS-Verkehr übersetzen.
quelle