Wenn ich mir die Pins von USB 3.0-Buchsen anschaue, sehe ich, dass es separate Sende- und Empfangspaare gibt, aber für USB 2.0 gibt es nur ein "Daten" -Pin-Paar. Wie stellt USB 2.0 sicher, dass die Geräte nicht gleichzeitig kommunizieren?
Wenn ich mir die Pins von USB 3.0-Buchsen anschaue, sehe ich, dass es separate Sende- und Empfangspaare gibt, aber für USB 2.0 gibt es nur ein "Daten" -Pin-Paar. Wie stellt USB 2.0 sicher, dass die Geräte nicht gleichzeitig kommunizieren?
Antworten:
USB ist ausschließlich Master-Slave. Das Gerät sendet nur, wenn der Host das Senden anfordert.
Sogar der sogenannte "Interrupt" -Modus fragt wirklich ab: Beispielsweise fragt der PC alle 8 Millisekunden (oder weniger, wenn Sie eine Gamermaus haben) die Maus, "was ist Ihre Position", und die Maus antwortet.
Gleiches gilt zum Beispiel für eine USB-serielle Schnittstelle. Wenn die Schnittstelle Daten auf der seriellen Leitung empfängt, überträgt sie diese nicht an den PC. Stattdessen wartet es, bis der PC die Transaktion initiiert und nach den Daten fragt.
Diese Webseite enthält eine gute Erklärung zu den Paketen, die ausgetauscht werden. Denken Sie grundsätzlich daran, dass USB implementiert wurde, um die Funktion des dümmsten und kostengünstigsten Peripheriegeräts zu ermöglichen. Dies bedeutet, dass sich der größte Teil der Informationen auf dem Host, dem Host-USB-Controller, dem Betriebssystem und den Treibern befindet. Dies wird beim Lesen der Spezifikation sehr deutlich.
Firewire (zum Beispiel) hat eine völlig andere Philosophie, es ist viel leistungsfähiger, es ist Multi-Master, sodass Geräte ohne die Hilfe eines Hosts / Masters miteinander kommunizieren können. Tatsächlich ist es in seiner Philosophie einem Token-Ring mit darauf geschlagenen isochronen Übertragungen viel näher als USB. "Multi-Master" bedeutet jedoch, dass ein leistungsstarker Mikrocontroller in den Geräten erforderlich ist, auf dem ein komplexer Software-Stack ausgeführt wird. Es ist daher teurer und daher auf teure Produkte wie Camcorder und schnelle Festplattengehäuse beschränkt. Eine Firewiremaus macht keinen Sinn, es wäre zu teuer. Das ist einer der Gründe, warum FireWire versagt hat.
In USB-Frameworks können Geräte nicht gleichzeitig kommunizieren, da sie nur dann "sprechen", wenn der USB-Host ihnen erlaubt, zu sprechen. Über den USB-Host kann ein anderes Gerät nur dann "sprechen", wenn das sequentielle Transaktionsprotokoll mit dem ersten Gerät abgeschlossen ist. Und USB-Geräte haben keine Möglichkeit, selbstständig zu "sprechen". Es gibt keinen aktiven Unterbrechungsmechanismus im USB. Kurz gesagt, der Mechanismus zur Umsetzung dieser Disziplin ist wie folgt.
Nach dem Anschließen von USB 2.0-Geräten werden diese vom Host aufgelistet, indem jedem Gerät eine eindeutige Adresse zugewiesen wird.
Jede Transaktion auf dem Bus wird vom USB-Host initiiert.
Header jeder USB-Transaktion tragen eine bestimmte Geräteadresse. Selbst wenn die Transaktionen über den gesamten USB-Baum (auf der bestimmten Host-Controller-Instanz) übertragen werden, reagiert nur das Gerät mit der übereinstimmenden Adresse auf die Transaktion und nimmt die Daten entgegen oder antwortet mit Daten.
Der Link "Partner" sendet dann eine Bestätigung in der Richtung, von wem die Daten erfolgreich empfangen wurden. Die gesamte Transaktion folgt einem festgelegten Protokoll mit einer definierten Abfolge von Token, Zeitüberschreitungen und Fehlerkorrekturcodes, um die Integrität der Transaktion sicherzustellen.
Alle anderen Geräte hören nur zu und ignorieren den Datenverkehr, der nicht an sie gerichtet ist.
Das war's auch schon, es ist eine "Halbduplex" -Schnittstelle.