USB-Systemdesign

USB-Systemdesign

Die Designarchitektur von USB ist in ihrer Topologie asymmetrisch und besteht aus einem Host, einer Vielzahl von Downstream-USB-Anschlüssen und mehreren Peripheriegeräten, die in einer mehrstufigen Sterntopologie verbunden sind. In den Ebenen können zusätzliche USB-Hubs integriert werden, sodass eine Verzweigung in eine Baumstruktur mit bis zu fünf Ebenen möglich ist. Ein USB-Host kann mehrere Host-Controller implementieren und jeder Host-Controller kann einen oder mehrere USB-Anschlüsse bereitstellen. An einen einzelnen Host-Controller können bis zu 127 Geräte, einschließlich Hub-Geräte, falls vorhanden, angeschlossen werden. USB-Geräte werden über Hubs in Reihe geschaltet. Ein in den Host-Controller integrierter Hub ist der Root-Hub.

Ein physisches USB-Gerät kann aus mehreren logischen Untergeräten bestehen, die als Gerätefunktionen bezeichnet werden. Ein einzelnes Gerät kann mehrere Funktionen bereitstellen, beispielsweise eine Webcam (Videogerätefunktion) mit integriertem Mikrofon (Audiogerätefunktion). Diese Art von Gerät wird als Verbundgerät bezeichnet. Eine Alternative dazu ist das Verbundgerät, bei dem der Host jedem logischen Gerät eine eindeutige Adresse zuweist und alle logischen Geräte mit einem integrierten Hub verbunden werden, der mit dem physischen USB-Kabel verbunden wird.

Diagramm: Innerhalb eines Geräts befinden sich mehrere Endpunkte, von denen jeder über logische Pipes mit einem Host-Controller verbunden ist. Die Daten in jeder Pipe fließen in eine Richtung, obwohl es eine Mischung gibt, die zum und vom Host-Controller geht.

Die Kommunikation von USB-Geräten basiert auf Pipes (logischen Kanälen). Eine Pipe ist eine Verbindung vom Host-Controller zu einer logischen Entität, die sich auf einem Gerät befindet und als Endpunkt bezeichnet wird. Da Pipes 1:1 Endpunkten entsprechen, werden die Begriffe manchmal synonym verwendet. Ein USB-Gerät kann bis zu 32 Endpunkte (16 IN, 16 OUT) haben, obwohl es selten vorkommt, dass so viele vorhanden sind. Ein Endpunkt wird vom Gerät während der Initialisierung definiert und nummeriert (der Zeitraum nach der physischen Verbindung, der als „Aufzählung“ bezeichnet wird) und ist daher relativ dauerhaft, während eine Pipe geöffnet und geschlossen werden kann.


USB-Endpunkte befinden sich tatsächlich auf dem angeschlossenen Gerät: Die Kanäle zum Host werden als Pipes bezeichnet

Es gibt zwei Arten von Pipes: Stream- und Message-Pipes. Eine Nachrichtenpipe ist bidirektional und wird für Kontrollübertragungen verwendet. Nachrichtenpipes werden typischerweise für kurze, einfache Befehle an das Gerät und eine Statusantwort verwendet, die beispielsweise von der Bussteuerungspipe Nummer 0 verwendet werden. Eine Streampipe ist eine unidirektionale Pipe, die mit einem unidirektionalen Endpunkt verbunden ist, der Übertragungen durchführt Daten mithilfe einer isochronen Übertragung, einer Unterbrechung oder einer Massenübertragung:

• Isochrone Übertragungen: mit einer garantierten Datenrate (oft, aber nicht unbedingt so schnell wie möglich), aber mit möglichem Datenverlust (z. B. Echtzeit-Audio oder -Video).
• Unterbrechungsübertragungen: Geräte, die garantiert schnelle Antworten benötigen (begrenzte Latenz) (z. B. Zeigegeräte und Tastaturen).
• Massenübertragungen: große sporadische Übertragungen, die die gesamte verbleibende verfügbare Bandbreite nutzen, jedoch ohne Garantien für Bandbreite oder Latenz (z. B. Dateiübertragungen).

Ein Endpunkt einer Pipe ist mit einem Tupel (Geräteadresse, Endpunktnummer) adressierbar, wie in einem TOKEN-Paket angegeben, das der Host sendet, wenn er eine Datenübertragungssitzung starten möchte. Wenn die Richtung der Datenübertragung vom Host zum Endpunkt verläuft, sendet der Host ein OUT-Paket (eine Spezialisierung eines TOKEN-Pakets) mit der gewünschten Geräteadresse und Endpunktnummer. Wenn die Richtung der Datenübertragung vom Gerät zum Host verläuft, sendet der Host stattdessen ein IN-Paket. Wenn der Zielendpunkt ein unidirektionaler Endpunkt ist, dessen vom Hersteller angegebene Richtung nicht mit dem TOKEN-Paket übereinstimmt (z. B. ist die vom Hersteller angegebene Richtung IN, während das TOKEN-Paket ein OUT-Paket ist), wird das TOKEN-Paket ignoriert. Andernfalls wird es akzeptiert und die Datentransaktion kann beginnen. Ein bidirektionaler Endpunkt hingegen akzeptiert sowohl IN- als auch OUT-Pakete.

Endpunkte werden in Schnittstellen gruppiert und jede Schnittstelle ist einer einzelnen Gerätefunktion zugeordnet. Eine Ausnahme hiervon bildet der Endpunkt Null, der für die Gerätekonfiguration verwendet wird und keiner Schnittstelle zugeordnet ist. Eine einzelne Gerätefunktion, die aus unabhängig gesteuerten Schnittstellen besteht, wird als Verbundgerät bezeichnet. Ein Verbundgerät hat nur eine einzige Geräteadresse, da der Host nur einer Funktion eine Geräteadresse zuweist.


Zwei USB-Standard-A-Buchsen an der Vorderseite eines Computers

Wenn ein USB-Gerät zum ersten Mal an einen USB-Host angeschlossen wird, wird der USB-Geräteaufzählungsprozess gestartet. Die Aufzählung beginnt mit dem Senden eines Reset-Signals an das USB-Gerät. Bei der Reset-Signalisierung wird die Datenrate des USB-Geräts ermittelt. Nach dem Zurücksetzen werden die Informationen des USB-Geräts vom Host gelesen und dem Gerät wird eine eindeutige 7-Bit-Adresse zugewiesen. Wenn das Gerät vom Host unterstützt wird, werden die für die Kommunikation mit dem Gerät erforderlichen Gerätetreiber geladen und das Gerät in einen konfigurierten Zustand versetzt. Bei einem Neustart des USB-Hosts wird der Enumerationsprozess für alle angeschlossenen Geräte wiederholt.

Der Host-Controller leitet den Datenverkehr zu den Geräten, sodass kein USB-Gerät ohne eine ausdrückliche Anfrage des Host-Controllers Daten auf dem Bus übertragen kann. Bei USB 2.0 fragt der Host-Controller den Bus nach Datenverkehr ab, normalerweise im Round-Robin-Verfahren. Der Durchsatz jedes USB-Anschlusses wird durch die langsamere Geschwindigkeit des USB-Anschlusses oder des an den Anschluss angeschlossenen USB-Geräts bestimmt.

Hochgeschwindigkeits-USB-2.0-Hubs enthalten Geräte, die als Transaktionsübersetzer bezeichnet werden und zwischen Hochgeschwindigkeits-USB-2.0-Bussen und Bussen mit voller und niedriger Geschwindigkeit konvertieren. Wenn ein Hochgeschwindigkeits-USB-2.0-Hub an einen Hochgeschwindigkeits-USB-Host oder -Hub angeschlossen wird, arbeitet er im Hochgeschwindigkeitsmodus. Der USB-Hub verwendet dann entweder einen Transaktionsübersetzer pro Hub, um einen Bus mit voller/niedriger Geschwindigkeit zu erstellen, der an alle Geräte mit voller und niedriger Geschwindigkeit am Hub weitergeleitet wird, oder er verwendet einen Transaktionsübersetzer pro Port, um einen isolierten Bus mit voller/niedriger Geschwindigkeit zu erstellen Port am Hub.

Da in jedem USB 3.0-Host zwei separate Controller vorhanden sind, senden und empfangen USB 3.0-Geräte mit USB 3.0-Datenraten, unabhängig davon, ob USB 2.0- oder frühere Geräte an diesen Host angeschlossen sind. Die Betriebsdatenraten für frühere Geräte werden auf die alte Weise festgelegt.