Zum Inhalt springen

Universal Serial Bus

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 22. Mai 2004 um 11:33 Uhr durch 80.185.230.2 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Der Universal Serial Bus (USB) ist ein Bussystem zur Verbindung von einem Computer mit externen Geräten zum Austausch von Daten. Durch die relativ hohen möglichen Datenraten und die automatische Erkennung von Geräten und deren Eigenschaften ist der USB zum Anschluss fast aller Gerätearten von Maus und Tastatur bis zu Festplatten und Kameras geeignet. Die Anzahl der USB-Anschlüsse eines Computers kann mit USB-Hubs vergrößert werden.

(Im Zusammenhang mit USB Hubs wird oftmals fälschlich von "aktiv" oder "passiv" gesprochen. Das ist irreführend, da ein USB-Hub immer ein aktives Gerät ist. Was eigentlich damit gemeint wird ist "Self Powered" oder "Bus Powered", also selbstversorgt oder busversorgt. Ein Hub mit eigenem Netzteil, also selbstversorgt, gibt an nachfolgende Geräte jeweils bis zu 500 mA Strom ab, ein busversorgter Hub bekommt selbst aber nur maximal 500 mA und kann dadurch maximal vier Ports haben, an die er jeweils 100 mA weitergibt.)

Überblick

USB ist ein serieller Bus. Das heißt, dass die Kommunikation seriell, auf lediglich einer differenziellen Daten-Leitung (zwei Leitungen, eine überträgt invertierte Daten, dadurch reduziert sich die Abstrahlung und erhöht sich die Übertragungssicherheit) erfolgt.

Er erlaubt es, bis zu 127 verschiedene Geräte an einem Hostcontroller anzuschließen. Durch Verwendung mehrerer Hostcontroller können auch noch mehr Geräte angeschlossen werden, jedoch ist dies abhängig vom verwendeten Betriebssystem, Windows beispielsweise wird lange vor Erreichen der 127 Geräte instabil. Er zeichnet sich dadurch aus, dass die Installation der Geräte verhältnismäßig einfach ist und die Datenkabel der Geräte im laufenden Betrieb ein- und ausgesteckt werden können.

Gegenüber den bisherigen externen Schnittstellen am PC beitet das USB deutlich höhere Datenübertragungsraten. USB stellt aus all diesen Gründen eine gute Weiterentwicklung zu den bisher verwendeten Schnittstellen (parallell/Centronics und seriell/RS232) dar.

Bus-Struktur

Bei einem "klassischen" Datenbus werden mehrere Geräte parallel an eine Leitung angeschlossen. Bei USB bezieht sich "Bus" auf die logische Vernetzung. An einen Host können mehrere Devices angeschlossen werden, jedoch grundsätzlich mittels Hubs. An einer elektrischen Leitung ist immer nur ein einzelnes USB-Device angeschlossen. Durch den Einsatz von Hubs entstehen Baumstrukturen, die alle in einem Host-Controller enden.

USB-Kabel

Datei:USB-Stecker Typ B.jpg
USB-Stecker Typ B
Datei:USB-Stecker Typ A.jpg
USB-Stecker Typ A

In einem USB-Kabel werden nur vier Adern benötigt (zwei für Strom, zwei für Daten). Die Kabel müssen je nach Geschwindigkeit unterschiedlich geschirmt werden. Nur Kabel, die der Spezifikation für Full Speed entsprechen dürfen mit A und B Stecker versehen sein. Low Speed Kabel müssen generell als "captive cable", also fest angeschlossenes Kabel ausgeführt sein (die Verwendung eines eigenen Steckers auf Geräteseite ist möglich, es darf nur kein USB Stecker sein), da durch die geringe Abschirmung Probleme auftreten würden wenn dieses Kabel mit einem Full Speed Gerät benutzt wird. Ein High Speed Kabel gibt es nicht, die Full Speed Kabel der USB 1.0 und 1.1 Spezifikation waren technisch bereits völlig ausreichend um die 480MBit/sec des High Speed USB zu erlauben. Kabel die im Handel als "USB 2.0 Kabel" verkauft werden sind daher als Aufschneiderei anzusehen, oder ein Hinweis darauf, dass das daneben hängende USB 1.1 Kabel eher als Wäscheleine geeignet ist... Die Länge eines Kabels vom Hub zum Device ist auf fünf Meter begrenzt (Low Speed Kabel werden von der Spezifikation auf 3m beschränkt, dies ist technisch jedoch unbegründet und wird voraussichtlich in einer zukünfitgen Fassung der Spec entfallen). Die Spezifikation schließt Verlängerungen aus. Sind sie notwendig, müssen USB-Hubs dazwischen geschaltet werden. Diese und andere Geräte mit geringem Stromverbrauch können über den Bus mitversorgt werden. Einer der Vorteile geringer Adernzahl sind kleine Stecker, die zudem verpolungssicher ausgeführt sind.

Geschwindigkeiten, Datenraten

USB erlaubt es einem Gerät mit 1,5 MBit/s (Low Speed), 12 MBit/s (Full Speed) oder mit 480 MBit/s (High Speed, ab USB 2.0 verfügbar) Daten zu übertragen. Diese Übertragungsraten basieren auf dem Systemtakt der jeweiligen USB-Geschwindigkeit und stellen die theoretisch maximale Übertragungsrate dar. In der Praxis muss mit einer spürbar geringeren Übertragungsrate gerechnet werden. Geräte mit geringem Datenaufkommen können mit preiswerteren Chips ausgestattet werden und im Falle von Low Speed Geräten sogar dünnere Kabel mit einfacherem Schirm zu verwenden.

Vergleich zu IEEE1394 (FireWire, i.Link)

Auch wenn die maximale Datenrate von USB 2.0 eine Überlegenheit zu IEEE 1394a/FireWire (USB 2.0 bis zu 480 Mbit/s, IEEE 1394a bis zu 400 Mbit/s) erwarten lässt, gelten für USB technische Einschränkungen, die im praktischen Einsatz deutliche Nachteile gegenüber FireWire bringen. Dies ist zum Beispiel darin begründet, dass alle Kommunikation vom Host (in der Regel der Desktop-PC) gesteuert werden muss. Ein USB-Device hat keine Möglichkeit, mit einem anderen USB-Device zu kommunizieren, ohne dass sämtliche Daten zuerst in den Host gelesen und von dort wieder herausgeschrieben werden. FireWire bietet hier die Möglichkeit der Peer-To-Peer-Kommunikation auf Request-Ebene, d.h. ein Device kann die Kommunikation mit einem anderen Device aufbauen, ohne dass die Steuerung durch einen Host erforderlich ist.

Begriff "USB 2.0"

Wird die Schnittstelle eines Geräts mit "USB 2.0" angegeben, führt dies manchmal zu Verwechsungen mit High Speed. Demzufolge wird erwartet, dass ein als USB 2.0 kompatibel bezeichnetes Gerät auch eine High-Speed-Datenrate von 480 MBit/s anbietet. Korrekt ist jedoch, dass ein USB 2.0-kompatibles Gerät grundsätzlich jede der drei Geschwindigkeiten benutzen kann und die 2.0 Kompatibilität in erster Linie bedeutet, dass die neueste Fassung der Spezifikation eingehalten wird. Lediglich bei Hubs und bei Computern, bzw. USB Karten bedeutet "USB 2.0" auch High Speed. Bei allen anderen Geräten muss darauf geachtet werden, dass sie über das Logo "USB 2.0 Hi-Speed" verfügen, wenn man ein Gerät mit bis zu 480 MBit/s erwartet. Low, Full und High Speed Geräte lassen sich an einem USB 2.0 Host fast beliebig mischen, ohne dass Geschwindigkeitsnachteile entstehen. Lediglich bei den Hubs muss man aufpassen, ein USB 1.1 Hub kann natürlich kein High Speed Gerät mit High Speed versorgen, hinter diesem Hub stehen dann nur noch Full und Low Speed zur Verfügung. Ebenfalls empfindlich die Datenrate einschränken können USB 2.0 Hubs die über nur einen sogenannten "Transaction Translator" verfügen. Bis zu einem USB 2.0 Hub läuft die Kommunikation an einem USB 2.0 Host immer mit High Speed, auch wenn an dem Hub ein Low oder Full Speed Gerät angeschlossen ist. Der Transaction Translator ist dafür zuständig die Kommunikation mit dem langsamen Gerät dann zwischen den Geschwindigkeiten umzusetzen. Dadurch werden andere Geräte nicht durch die langsamen Geräte ausgebremst. Hat der Hub aber nur einen TT, so kann die Kommunikation mit mehreren Low und Full Speed Geräten an diesem Hub auf Geschwindigkeiten deutlich unter denen an einem USB 1.1 Host zusammenbrechen.

Die verschiedenen Host-Controller

Die USB-Controller-Chips in den PCs halten sich an einen von drei etablierten Standards. Diese unterscheiden sich jeweils in ihrer Leistungsfähigkeit und der Implementierung von bestimmten Funktionalitäten (entweder erledigt sie der Chip von selbst, "in Hardware", oder der Treiber muss softwareseitig dafür sorgen). Für ein USB-Gerät sind die verwendeten Controller vollständig transparent, allerdings ist es für den Benutzer des PC mitunter wichtig, feststellen zu können, welche Art Chip der Rechner verwendet, um den korrekten Treiber auswählen zu können.

Universal Host Controller Interface (UHCI)

UHCI wurde im November 1995 von Intel spezifiziert. Die aktuelle Version des Dokuments trägt die Revisionsnummer 1.1, daher nennen sich auch alle gegenwärtigen USB-Geräte USB-1.1-kompatibel. UHCI-Chips bieten Unterstützung für USB-Geräte mit 1,5 oder 12 MBit/s Bandbreite. Sie werden hauptsächlich in Hauptplatinen von Intel verbaut, man findet sie aber auch in Produkten anderer Hersteller, z.B. VIA Technologies.

Open Host Controller Interface (OHCI)

OHCI ist eine Spezifikation, die gemeinsam von Compaq, Microsoft und National Semiconductor entwickelt wurde. Version 1.0 des Standards wurde im Dezember 1995 veröffentlicht, die aktuelle Fassung trägt die Versionsnummer 1.0a und stammt von September 1999. Ein OHCI-Controller hat prinzipiell die gleichen Fähigkeiten wie seine UHCI-Pendants, erledigt aber mehr Aufgaben in Hardware und ist dadurch marginal schneller als ein UHCI-Controller (der Unterschied bewegt sich in Bereichen, die gerade noch messbar sind, daher kann man dies in der Benutzung vernachlässigen, für Geräteentwickler können sich hier aber gemeine Fallen auftun...). Bei den USB-Controllern auf Hauptplatinen, die nicht von Intel oder VIA stammen handelt es sich mit großer Wahrscheinlichkeit um OHCI.

Enhanced Host Controller Interface (EHCI)

Der Enhanced Host Controller ist der Chip, der bei USB 2.0 verwendet wird. Er wickelt dabei nur die Übertragungen im Hi-Speed-Modus (480 MBit/s) ab. Wenn man USB-1.1-Geräte an einen Port mit EHCI-Chip steckt, reicht der EHCI-Controller den Datenverkehr an einen hinter ihm liegenden UHCI- oder OHCI-Controller weiter (diese Controller sind typischerweise auf dem gleichen Chip). Wenn kein EHCI-Treiber verfügbar ist, werden die USB 2.0-fähigen Geräte ebenfalls an den USB 1.1-Controller durchgereicht und arbeiten dann mit langsamerer Geschwindigkeit.

USB auf dem Low-Level

Endpunkte

Generell gilt beim USB, dass ein Gerät nur dann Daten senden darf, wenn ihm der Host-Controller eine Erlaubnis erteilt hat. Dies führt dazu, dass der Controller sich bei zeitkritischen Datenströmen (klassischer Anwendungsfall sind Mausbewegungen) häufig genug beim Gerät erkundigen muss, ob es Daten senden will, um Stockungen zu vermeiden. USB Geräte verfügen über eine Anzahl von "Endpunkten", gewissermaßen Unteradressen des Gerätes. Die Endpunkte sind in den Geräten hardwareseitig vorhanden und werden von der USB SIE (Serial Interface Engine) bedient. Über diese Endpunkte können voneinander unabhängige Datenströme laufen. Geräte mit mehreren getrennten Funktionen (z. B. Webcams, die Video und Audio übertragen) benutzen mehrere Endpunkte. Die Übertragungen von bzw. zu den Endpunkten erfolgen meist unidirektional, d. h. für bidirektionale Übertragungen ist ein IN- und ein OUT-Endpunkt erforderlich (IN und OUT beziehen sich jeweils auf die Sicht des Host-Controllers). Einzige Ausnahme sind Endpunkte, die den sogenannten Control Transfer Modus verwenden. Dies ist z.B. generell der Endpunkt 0, der immer vorhanden sein muß, da über ihn die Erkennung und Konfiguration des Gerätes läuft. Zusätzlich können auch noch andere Funktionen über den Endpunkt 0 ablaufen. Maximal möglich sind 31 Endpunkte pro Gerät, das ist der eine Control Endpunkt (der eigentlich zwei Endpunkte zusammenfasst) und je 15 In und Out Endpunkte. Low Speed (1,5MBit) Geräte sind auf Endpunkt 0 plus maximal zwei weitere Endpunkte im Interrupt Transfer Modus beschränkt.

Übertragungsmodi

Der USB bietet den angeschlossenen Geräten verschiedene Übertragungsmodi, die diese für jeden einzelnen Endpoint festlegen können.

Isochroner Transfer

Der isochrone Modus bietet sich besonders für die Übertragung zeitkritischer Daten an. Das Gerät teilt dem Host-Controller dazu mit, in welchen Zeitabständen es Daten senden will und wieviel Bandbreite es dazu benötigt. Wenn der Host-Controller über ausreichend freie Bandbreite verfügt, wird diese fest für das Gerät reserviert. Um Zeit zu sparen, findet keine Fehlerkorrektur statt. (Nicht für Low Speed Geräte verfügbar)

Interrupt-Transfer

Interrupt-Transfers dienen zur Übertragung von kleinen Datenmengen, die zu nicht genau bestimmbaren Zeitpunkten verfügbar sind. Im Endpoint Descriptor teilt das Gerät mit in welchen maximalen Zeitabständen es nach neuen Daten gefragt werden möchte. Der kleinstmögliche Zeitraum ist dabei 1 ms (10ms bei Low Speed Geräten). Die HID Klasse (Human Input Device, also alles von Tastatur und Maus über Joystick bis hin zum Datasuit) verwendet praktisch ausschließlich den Interrupt Transfer (abgesehen vom Control Transfer).

Bulk-Transfer

Bulk-Transfers sind für große Datenmengen gedacht, die jedoch nicht zeitkritisch sind. Diese Transfers sind niedrig priorisiert und werden vom Controller durchgeführt, wenn alle isochronen und Interrupt-Transfers abgeschlossen sind und noch Bandbreite übrig ist. Dafür sind die Bulk Transfers gesichert, die Daten kommen also definitv an, nur wann ist nicht festgelegt. (Nicht für Low Speed Geräte verfügbar)

Control-Transfer

Control-Transfers sind eine besondere Art von Datentransfers die einen Endpunkt erfordern, der sowohl In als auch Out Operationen durchführen kann. Control Transfers werden generell in beide Richtungen bestätigt, so dass Sender und Empfänger immer sicher sein können, dass die Daten auch angekommen sind. Daher wird der Endpunkt 0 im Control-Transfer Modus verwendet.

Konfigurationen, Interfaces und Alternate Settings

Intern adressiert der USB-Controller die angeschlossenen Geräte mit einer sieben Bit langen Kennung, wodurch sich die 127 maximal anschließbaren Geräte ergeben. Die Adresse 0 wird automatisch von Geräten belegt, die ein Reset Signal erhalten. Wenn an einem oder mehreren Ports neue Geräte detektiert werden, so schaltet der Host-Controller einen dieser Ports ein, sendet dem dort angeschlossenen Gerät einen Reset und versucht dann das Gerät zu identifizieren. Danach teilt er dem Gerät eine eindeutige Adresse mit. Da immer nur ein Port mit noch nicht konfiguriertem Gerät aktiviert wird, kommt es zu keinen Adresskollisionen. Der Host-Controller fragt meist zuerst nach einem Device-Deskriptor, der z. B. die Hersteller- und Produkt-ID enthält. Mit weiteren Deskriptoren teilt das Gerät mit, welche alternativen Konfigurationen es besitzt, in die es von seinem Gerätetreiber geschaltet werden kann. Bei einer Webcam könnten diese Alternativen z. B. darin bestehen, ob die Kamera eingeschaltet ist oder ob nur das Mikrofon läuft. Für den Controller ist dabei relevant, dass die unterschiedlichen Konfigurationen auch einen unterschiedlichen Stromverbrauch mit sich bringen. Ohne besondere Freigabe durch das Betriebssystem darf ein Gerät nicht mehr als 100 mA Strom verbrauchen. Innerhalb einer Konfiguration kann das Gerät verschiedene Interfaces definieren, die jeweils über einen oder mehrere Endpunkte verfügen. Unterschiedlicher Bedarf an reservierter Bandbreite wird über so genannte Alternate Settings signalisiert. Praktisches Beispiel ist wieder die Webcam, die z. B. in zwei verschiedenen Auflösungen Bilder senden kann. Das Alternate Setting 0 wird aktiviert, wenn ein Gerät keine Daten übertragen möchte und somit pausiert.

Geräteklassen

Um nicht für jedes Gerät eigene Treiber zu erfordern, definiert der USB-Standard verschiedene Geräteklassen, die sich durch generische Treiber steuern lassen. Auf diese Weise sind USB-Tastaturen, Mäuse, USB-Massenspeicher und andere Geräte mit ihren grundlegenden Funktionen sofort startklar, ohne dass erst ein Treiber von CD installiert werden müsste. Herstellerspezifische Erweiterungen (die dann einen eigenen Treiber erfordern) sind möglich. Die Information, zu welchen Geräteklassen sich ein Gerät zählt, kann im Device-Deskriptor (wenn das Gerät nur einer Klasse angehört) oder in einem Interface-Deskriptor (bei Geräten, die zu mehreren Klassen gehören) untergebracht werden.

Siehe auch

Externe Verweise