Hubs (Verteiler) stellen zusätzliche Anschlussmöglichkeiten für Endgeräte im USB-System bereit. Sie stellen Schlüssel-elemente in der Plug-and-Play-Umgebung des USB dar.
Ein Anschluss an einem Hub wird als Port bezeichnet. In einem USB-System kann es mehrere Hubs geben. Der Upstream-Port verbindet den Hub mit einem anderen Hub näher am Host oder direkt mit dem Host. Alle weiteren (Downstream-)Ports ermöglichen den Anschluss eines beliebigen USB-Geräts. Hubs sind in der Lage, neu angeschlossene oder wieder entfernte Geräte automatisch zu erkennen und stellen die Energie-versorgung für das entsprechende Gerät sicher. Ports
von langsamen und normalen USB-Geräten werden voneinander isoliert.
Der Hub besteht hardwaremäßig aus dem Hub-Controller und dem Hub-Repeater. Letztgenannter ist ein Protokollgesteuerter Schalter zwischen Upstream- und Downstream-Ports. Er besitzt außerdem Reset- und Energiesparfunktionen. Der Hub-Controller stellt Register zur Verfügung, um die Kommunikation mit dem Host zu ermöglichen. Spezifische Kontroll-Befehle erlauben es dem Host, den Hub zu konfigurieren und seine Ports zu überwachen.
Fehlererkennung / Behandlung
Die Fehlererkennung und Behandlung erfolgt über die CRC-Technik (Cyklik Redundancy Check / Zyklische Blocksicherung).
CRCs werden bei allen ungeschützten Feldern von Token- und Daten-Paketen angewendet. CRCs werden von Sender vor dem Bit-Stuffing gebildet und müssen vom Empfänger entsprechend nach dem Entfernen der stuffed Bits dekodiert werden.
Durch CRCs wird ein 100-prozentiger Schutz vor Einzel- und Doppel-Bit-Fehlern erreicht. Eine falsche CRC bedeutet, dass ein oder mehr der CRC-geschützten Felder falsch übermittelt wurden.
Bei der CRC-Bildung wird das Schiebe-Register im CRC-Generator und CRC-Überprüfer mit einem Einer-Bit-Feld versehen. Jedes gesendete oder empfangene Bit wird nun mit dem höchstwertigsten Bit im Schiebe-Register XOR-verknüpft. Anschließend werden die Bits im Schiebe-Register um eins
linksgeschoben und das niedrigste Bit wird auf 0 gesetzt. Wenn das Ergebnis des o.g. XOR 1 ist, wird das Schiebe-Register mit dem Generator-Polynom wiederum XOR-verknüpft.
Wenn das letzte Bit des zu überprüfenden Feldes gesendet ist, wird die CRC im Generator invertiert und mit dem höchstwertigen Bit zuerst zum CRC-Überprüfer geschickt. Sind bei der Übertragung keine Fehler aufgetreten, dann ist das Bit-Feld im CRC-Überpfüfer gleich dem entsprechend CRC-Rest(siehe unten).
Generator-Polynom für 5-Bit Token-CRCs:
G(X) = X5 + X2 + 1
Daraus ergibt sich das Bitmuster 00101. Wenn alle Bits ohne Fehler erhalten wurden, ergibt der CRC-Rest entsprechend 01100.
Generator-Polynom für 16-Bit Daten-CRCs:
G(X) = X16 + X15 + X2 + 1
Daraus ergibt sich das Bitmuster 1000000000000101. Wenn alle Bits ohne Fehler erhalten wurden, ergibt der CRC-Rest 1000000000001101.
|