Lerntippsammlung Headergrafik
Linie
Abstandshalter

Suchbegriff:

USB-Präsentation - Referat



Präsentation über Usb-technologie!!

Einleitung

Der Universal Serial Bus entstand im Zeitraum 1994/95 unter einem Konsortium der verschiedensten Hard- und Softwarefirmen wie Intel, Microsoft, Compaq, IBM, NEC, DEC usw.

Entwicklungs-Hintergründe

Leichte Benutzbarkeit:

Die Flexibilität der PC-Konfiguration gilt gleichzeitig auch als die Achillesferse seiner Weiterentwicklung. Für den Endanwender wird die Konfiguration heute zwar schon durch PCI, PnP, PCMCIA u.a. erleichtert, aber es gibt aus seiner Sicht immer noch zu viele I/O-Interfaces (ser./parall., Keyboard, Joystick usw.).


Port-Erweiterungen:

Ein bisher fehlender bidirektionaler, billiger Peripherie-Bus unterdrückte Einsatz von Telefon, Fax, Modem, Anrufbeantworter, Scanner, PDA, Keyboard, Maus usw. an einem Host-Adapter.

Existierende Lösungen waren immer nur für wenige verschiedene Geräte geeignet, woraus ein Wirrwar an unterschiedlichen Interfaces resultierte.


computergestütztes Telefonieren:

Durch die unterschiedliche Entwicklung der Computer- u. Kommunikationsindustrie wurde bis jetzt eine Integration des Telofons in die PC-Umgebung nie richtig erreicht.




Existierende Technologien

Folgende Bus-Technologien fanden in der USB-Spezifikation Anklang bzw. wurden erweitert:

Apple Desktop-Bus( ADB): sehr einfach gehaltenes Interface; 90 kbs; für Keyboards u. andere Zeigegeräte
Access.bus( A.b): vielseitiger als ADB; 100 û 400 kbs; bis 127 Geräte
IEEE P1394: Hochgeschwindigkeits-Bus; 100 Mbs; isochroner u. asynchroner Datentransfer über selbe Verbindung; Konkurrenz zu SCSI HD-Interfaces
Concentration Highway Interface( CHI): für Terminals; Übertragung digitalisierter Sprache in Kommunikationssystemen
GeoPort: computergestütztes Telefonieren( Apple)

Implementations-Ziele

Folgende Ziele wurde bei Entwicklung der Spezifikation berücksichtigt:

einfach zu handhabende Peripherie-Erweiterungen
preisgünstige Lösung für Übertragungsraten bis 12 Mbs
volle Echtzeit-Unterstützung von Sprach-, Audio- u. komprimierten Video-Daten
Protokoll-Flexibilität: isochroner Datentransfer u. asynchroner Nachrichtenfluß
Unterstützung verschiedenster PC-Konfigurationen
Bereitstellung eines Standard-Interfaces zur weiten Produkt-Verbreitung
Erweiterung der PC-Fähigkeiten durch neue Geräte-Klassen

Allgemeine Merkmale des USB

nur eine Sorte Kabel u. Steckverbinder
elektrische Feinheiten für Endanwender transparent( z.B.: Terminierung)
Automatische Identifizierung, Konfiguration u. Einbindung d. Gerätes in d. Treiber
Dynamische Peripherieverbindungen( Hot-Plugging)

Flexible Anwendungsmöglichkeiten:

Unterstützung mehrerer USB-Host-Adapter in einem System
Bandbreiten von wenigen kbs bis einigen Mbs
gleichzeitiges Arbeiten mit mehreren Geräten
Unterstützung von bis zu 127 Geräten
gleichzeitiger Transfer von verschiedenen Daten u. Nachrichten zwischen Host u. Endgeräten
Unterstützung von Multifunktions-Geräten
geringer Protokoll-Overhead

Anpassungsfähiges Protokoll:

Datenrate an Gerät anpassungsfähig durch Änderung d. Puffer-Größen u. Latenz-Zeiten
Fluß-Steuerung in Protokoll eingearbeitet

Robustheit:

Fehlerbehandlung/ -behebung in Protokoll eingearbeitet
dynamisches Einfügen und Abtrennen von Geräten
Identifizierung defekter Geräte

Low-cost Implementation:

preisgünstiger Sub-Channel
optimiert für Integration in Peripherie- u. Host-Hardware
geeignete Entwicklung von billiger Peripherie möglich
preisgünstige Kabel u. Steckverbinder



Übersicht über die USB-Architektur


USB-System

Host:

Es gibt nur einen Host in jedem USB-System. Das USB-Interface zum Host-Computer-System wird als Host-Controller bezeichnet, welcher normalerweise als Kombination von Hardware, Firmware und Software implementiert wird. Ein sogenannter Root-Hub ist im Host-System integriert um schon Anschlußmöglichkeiten für ein oder mehr Endgeräte zu ermöglichen.

Folgende USB-Geräte unterscheided man:

Hubs:

Hubs (Verteiler) stellen zusätzliche Anschlußmöglichkeiten für Endgeräte im USB-System bereit. Sie stellen Schlüsselemente in der Plug-and-Play-Umgebung des USB dar.





Bild: Hub-Schema


Ein Anschluß an einem Hub wird als Port bezeichnet. In einem USB-System kann es meherere 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 Anschluß eines beliebigen USB-Geräts. Hubs sind in der Lage, neu angeschlossene oder wieder entfernte Geräte automatisch zu erkennen und stellen die Energieversorgung 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 Kotroll-Befehle erlauben es dem Host, den Hub zu konfigurieren und seine Ports zu überwachen.

Endgeräte:

Um dem USB-System zu seiner Funktionalität zu verhelfen, müssen Endgeräte an den Host oder einen Hub angeschlossen werden. Ein Endgerät ist normalerweise ein separates Peripheriegerät mit einem Anschlußkabel, das in den Port eines Hubs gesteckt wird. Es ist jedoch auch möglich, ein physikalisches Gerät mit mehereren Funktionen zu versehen, die sonst in verschiedenen Endgeräten realisiert würden. Solche Geräte werden Multifunktionsgeräte (compound devices) genannt. Sie erscheinen für den Host in Gestalt eines Hubs mit mehreren permanent angeschlossenen Geräten.

Mögliche Endgeräte sind zum Beispiel Telefone, digitale Joysticks oder Lautsprecher.

Hubs und Endgeräte stellen ein standardisiertes USB-Interface mit folgenden Merkmalen zur Verfügung :

Unterstützung des USB-Protokolls
Reaktion auf standardardisierte USB-Operationen wie Konfiguration oder Reset
Bereitstellung von Informationen über ihre implementierten Funktionen



Bus Topologie

Der Universal Serial Bus verbindet die USB-Endgeräte mit dem USB-Host. Die physikal. Verbindung beruht auf der Tired Star-Topologie. Der Hub, welcher mit anderen Hubs oder Endgeräten( Nodes) verbunden ist, stellt jeweils das Zentrum jedes "Sterns"dar.



Bild: Allgemeine Bus-Topologie






Bild: Physikalische Bus-Topologie




Bild: Logische Bus-Topologie


Allgemeine Physikalische Merkmale

Elektrik

Der USB überträgt elektrische Signale und die Betriebsspannung über ein vieradriges Kabel mit 90 W Impedanz. Die Signalübertragung erfolgt differentiell über 2 dieser Adern, wobei mindestens 200 mV Eingabespannung für den Empfänger bereitgestellt werden müssen.



Bild: USB Kabel-Schema


Zwei verschiedene Arten der Signalübertragung werden unterstützt: normale Übertragung mit 12 Mbs und langsame Übertragung mit 1,5 Mbs. Beide Modi sind zur selben Zeit im USB-System möglich, was durch geräte-transparentes Umschalten zwischen diesen Modi ermöglicht wird.

Ein Taktsignal wird kodiert mit den differentiellen Daten übertragen, wobei NRZI mit Bit-Stuffing als Verschlüsselungsmethode benutzt wird, um eine hinreichend sichere Übertragung zu gewährleisten. Außerdem geht ein SYNC-Feld jedem Datenpaket voraus, damit der Empfänger seinen Takt mit dem Sender synchronisieren kann.

Die mit VBus und GND bezeichneten Adern versorgen die USB-Geräte jeweils mit Betriebsspannung. VBus liegt am Ausgang der Quelle bei +5 V. Um eine garantierte Eingabespannung und ordnungsgemäße Terminierungswiderstände zu gewährleisten, werden vorkonfigurierte Terminatoren an beiden Enden des Kabels benutzt. Die Terminierungen ermöglichen es weiterhin festzustellen, ob Verbindungen von Geräten mit dem USB-System hergestellt oder unterbrochen werden. Außerdem läßt sich dadurch zwischen Geräten unterscheiden die den normalen bzw. langsamen Übertragungsmodus verwenden.



Mechanik

Alle Geräte besitzen eine Upstream-Verbindung für Host-gerichtete Datenübertragungen. Steckverbinder für Upstream- und Downstream-Verbindungen sind nicht mechanisch austauschbar, was illegale elektrische Verbindungen unterbindet.

Energieversorgung

Jedes USB-Segment stellt mittels Verbindungskabel begrenzten Strom zur Verfügung. Der Host liefert wie auch die Hubs Strom an alle direkt angeschlossenen Geräte. Ein USB-Gerät kann zusätzlich seine eigene Stromversorgung besitzen. Ist dies nicht der Fall, wird das Gerät als busbetrieben bezeichnet, anderenfalls als selbstbetrieben.

Der USB-Host verfügt über ein Energiesparsystem das unabhängig vom USB funktioniert. Die USB-System-Software interagiert mit dem Host-Energiersparsystem, um auf Ereignisse wie SUSPEND (schlafen) oder RESUME (aufwachen) zu reagieren. Zusätzlich kann jedes USB-Gerät über ein eigenes, USB-definiertes Energiesparsystem verfügen, was es ermöglicht, von der USB-System-Software oder generischen Geräte-Treibern manipuliert zu werden.

Das beschriebene Energiesparsystem macht den Einsatz von USB in energiesensitiven Rechnern wie zum Beispiel Notebooks möglich.

Bus-Protokoll

Alle Bus-Transaktionen führen zur Übertragrung von bis zu drei Paketen. Jede Transaktion beginnt, wenn der Host-Controller ein USB-Paket sendet, das die Art und Richtung der Transaktion sowie die Geräte-Adresse und Endpunkt-Nummer bestimmt. Dieses Paket wird als Token-Paket bezeichnet. Das angesprochene Gerät wird bestimmt, indem jedes angeschlossene Gerät die Adress-Felder dekodiert und sich im Falle der Übereinstimmung selbst selektiert. Bei einer bestimmten Transaktion können Daten entweder nur von Host an ein Gerät gesendet werden oder der Host kann nur Daten eines Gerätes empfangen.

Die Datenquelle sendet im Anschluß ein Datenpaket oder zeigt dem Empfänger an, daß keine Daten zu übertragen sind. Der Empfänger antwortet dann generell mit einem Handshake-Paket, welches anzeigt, ob die Übertragung erfolgreich war oder nicht.

Das USB-Transfer-Modell zwischen Datenquelle oder -ziel Host und einem Endpunkt am Empfänger wird als Pipe (Übertragungsstück) bezeichnet. Es gibt zwei Arten von Pipes: Stream- (Datenfluß-) und Message- (Nachrichten-) Pipes. Im Gegensatz zu Message-Pipes haben Stream-Pipes keine USB-definierte Datenstruktur. Außerdem hat eine Pipe weitere bezeichnende Eigenschaften wie Daten-Bandbreite, Transfer-Art und Endpunkt-Merkmale wie Puffer-Größe. Pipes entstehen, wenn ein USB-Gerät konfiguriert wird. Eine Message-Pipe -Kontroll-Pipe 0 - existiert, sobald das Gerät mit Strom versorgt wird und ermöglicht damit die Bereitstellung von Informationen zur weiteren Geräte-Konfiguration sowie Status- und Kontroll-Informationen.



System-Konfiguration

Das Verbinden von Geräten mit dem USB bzw. das Trennen vom USB wird zu jedem beliebigen Zeitpunkt unterstützt.

Alle USB-Geräte werden über Hub-Ports mit dem USB verbunden. Hubs zeigen die Verbindung oder Trennung von Geräten in ihrem Port-Status an. Im Falle einer neuen Verbindung fragt der Host beim Hub nach und erhält als Antwort den entsprechenden Port der neuen Verbindung. Der Host schaltet dann diesen Port ein und adressiert das angeschlossene USB-Gerät dann über eine Kontroll-Pipe, welche die Standard-USB-Adresse benutzt (alle USB-Geräte werden über die Standard-USB-Adresse angesprochen, wenn sie neue verbunden oder zurückgesetzt sind und noch nicht konfiguriert wurden).

Der Host bestimmt nun, ob das neue Gerät ein Hub oder ein Endgerät ist und weist ihm eine eindeutige USB-Adresse zu. Anschließend öffnet der Host eine Kontroll-Pipe unter Benutzung dieser Adresse und des Endpunkts 0 des Geräts.

Wenn das angeschlossene Gerät ein Hub ist, dann wird diese Prozedur für jedes der angeschlossenen Geräte durchgeführt. Wenn das Gerät eine Endgerät ist, dann werden Information über dieses Gerät von der USB-System-Software veröffentlicht.

Wird ein USB-Gerät von einem Port entfernt, schaltet der verantwortliche Hub den Port automatisch aus und meldet dies dem Host. Alle Daten über dieses Gerät werden daraufhin aus der Host-Software entfernt. Wenn das entfernte Gerät ein Hub ist, wird diese Prozedur für alle angeschlossenen Geräte durchgeführt. Wenn das ehemals angeschlossene Gerät ein Endgerät ist, dann werden Informationen über dessen Entfernung veröffentlicht.



Datenfluß des USB

Der USB untersützt den Datenaustausch zwischen USB-Host und USB-Gerät auf uni- oder bidirektionaler Basis. Datentransfers finden immer zwischen der Host-Software und einem bestimmten Endpunkt eines USB-Gerätes statt, wobei ein bestimmtes USB-Gerät verschiedene Endpunkte haben kann. Der USB-Host behandelt die Kommunikation mit einem Endpunkt eines Geräts unabhängig von einem anderem Endpunkt des selben Geräts. Wie schon erläutert, wird die Verbindung zwischen Host und dem Endpunkt eines Geräts Pipe genannt.

Eine Pipes (außer Message-Pipes) sind immer unidirektional, d.h. für eine bidirektionale Verbindung zwischen USB-Host und USB-Gerät sind mindestens zwei Pipes erforderlich.

Arten des Datenflusses

Die USB-Architektur unterstützt vier verschiedene Arten des Datenflusses:

Kontroll-Transfers:

Kontroll-Daten werden von der USB-Software benötigt, um ein Gerät zu konfigurieren oder Status-Informationen anzuzeigen. Die Datenübertragung erfolgt verlustfrei, d.h. fehlerkorrigiert.

Bulk-Transfers:

Mittels Bulk-Transfer werden typischerweise große Datenmengen übertragen, wie sie beispielsweise bei Druckern oder Scannern anfallen. Bulk-Daten sind sequentiell. Ordnungsgemäßer Datenaustausch wird auf Hardwareebene durch Fehlererkennung sichergestellt. Im Bedarfsfall können auch begrenzt Wiederholungen einer Transaktion ausgeführt werden.

Eine feste Bandbreite ist für diese Art der Datenübertragung nicht vorgesehen. Es wird die Bandbreite benutzt, die gerade verfürbar ist. Ist der Bus schon voll ausgelastet wird mit der Übertragung solange gewartet, bis wieder Kapazitäten vorhanden sind.

Interrupt-Transfers:

Für kleine, zu unbestimmbaren Zeiten autftretende Datentransfers wird diese Art der Übertragung verwendet.
Die Daten werden dabei mit der vollen Geschwindigkeit übertragen, die das Gerät unterstützt.

Interrupt-Transfers finden normalerweise in Verbindung mit auftretenden Ereignissen Verwendung. Es werden dabei zum Beispiel die Koordinaten eines Zeigegerätes übertragen.

Isochrone Transfers:

Die mit dieser Transferart übertragenen Daten sind vortlaufend und werden in Echtzeit erstellt, übermittelt und empfangen. Timing-Informationen werden dabei mit übertragen.

Ein isochroner Datenstrom muß mit der Rate geliefert werden, mit der er empfangen werden soll. Die dabei für die jeweilige Pipe benötigte Bandbreite ist abhängig von der Sampling-Rate des USB-Geräts. Mögliche Latenzzeiten während der Übertragung hängen von der Pufferung an den entsprechenden Endpunkten ab.

Ein typisches Beispiel für isochrone Daten ist Sprache. Wenn der Datenstrom während einer solchen Übertragung abreißt, kommt es zu unschönen Störungen bei der Sprachausgabe. Selbst wenn die Daten komplett übertragen wurden, kann eine verzögerte Übertragung den wie zum Beispiel bei Telefon-Konferenzen benötigten Echtzeit-Effekt zunichte machen.

Die zeitlich korrekte Übertragung wird bei isochronen Transfers durch das potentielle Auslassen bestimmter Datenteile erreicht. Mit anderen Worten: wenn ein Fehler bei der Übertragung auftritt, wird er nicht durch Hardware-Mechanismen (Wiederholungen) korrigiert. In der Praxis wird der Fall des Datenverlustes jedoch nur selten auftreten, da bei isochronen Transfers die ausreichende Bandbreite für die Übertragung reserviert wird, um sicherzustellen, daß die Daten mit der gewünschten Rate geliefert werden können. Außerdem ist der USB für minimale Datenverzögerungen bei der Übertragung konfiguriert.




USB-Implementationsbereiche



Zur Erläuterung: In deBus-Interface-Schicht wird die physikal. Verbindung zwischen dem Host und einem USB-Gerät hergestellt. Die Logische Geräteschicht führt generische Operationen mit dem USB-Gerät aus. Die Endgeräteschicht dagegen stellt dem Host mittels entsprechender Client-Software zusätzliche Fähigkeiten des USB-Geräts zur Verfügung.

Der USB-Kommunikationsfluß



Zur Erläuterung: Die logischen USB-Geräte erscheinen dem USB-System als Sammlung von Endpunkten, welche wiederum in Mengen von Endpunkten unterteilt sind, die eine bestimmte Datenschnittstelle bereitstellen. Die System-Software verwaltet die Geräte unter Benutzung der Standard-Pipe, die mit Endpunkt 0 verbunden ist. Client-Software verwaltet ein Interface durch Verwendung von Pipe-Bündeln, die mit einer Menge von Endpunkten verknüpft sind. Das folgende Bild beschreibt den Datenaustausch näher:





Bild: Client-Endpunkt-Verbindung




Endpunkte

Jedes Logische USB-Gerät besitzt eine Anzahl unabhängig voneinander operierender, eindeutig nummerierter Endpunkte. In Zusammenhang mit der Logischen Geräte-Adresse, die vom System vergeben wird, kann so jeder Endpunkt korrekt per Software angesprochen werden.

Endpunkte verfügen über die folgenden Eigenschaften:

Bus-Zugriffsfrequenz/ erforderliche Latenzzeiten
benötigte Bandbreite
Endpunktnummer
benötigte Fehlerbehandlungsroutinen
maximale Paketgröße zum Senden/ Empfangen
Transferart

Endpunkte befinden sich vor ihrer Konfiguration in einem unbestimmten Zustand, dürfen in dieser Zeit also nicht vom Host benutzt werden. Einzig Endpunkt 0, der von der Systemsoftware zur Konfiguration benutzt wird, ist schon bei Anschluß eines Geräts an den USB konfiguriert.

Weiterhin dürfen langsame Geräte maximal zwei Endpunkte besitzen, normale Geräte dagegen bis zu 16 Endpunkte.



Pipes

Eine Pipe ist eine Verbindung zwischen einem Endpunkt eines Gerätes und der Host-Software. Sie ermöglichen den Datenfluß zwischen Host-Software und Endpunkt über Puffer im Speicher.

Es gibt zwei verschiedene Arten von Pipes: Stream-Pipes, deren Daten keine USB-spezifische Struktur besitzen und Message-Pipes, die USB-spezifische Daten transportieren.

Stream-Pipes unterstützen Bulk-, Interrupt- und isochrone Transfers und sind immer uni-direktional, was durch das IN- oder OUT-Token im Protokoll festgelegt wird.

Mit Message-Pipes ist bidirektionale Kommunikation möglich. Außerdem unterstützen sie nur Kontroll-Transfers.

Das USB-System intepretiert die Daten nicht, wenn sie über die Pipes transportiert werden. Dies gilt auch für Message-Pipes.

Eine Client-Software fragt Daten normalerweise über I/O Request Pakete (IRPs) ab. Sie wartet anschließend bis sie Nachricht über Erfolg oder Mißerfolg der Transaktion erhält. Genaue IRP-Datails sind Betriebssystem-spezifisch.



Kontroll-Transfers

Kontroll-Transfers dienen der Konfiguration von USB-Geräten sowie der Bereitstellung von Status-/ Kontrollinformationen über diese. Sie können nur über Message-Pipes ausgeführt werden. Die dabei genutzten Daten haben ein USB-spezifisches Format.

Kontroll-Transfers können sowohl von langsamen als auch von normalen USB-Geräten benutzt werden. Eine bestimmte Bandbreite kann für den Transfer jedoch nicht verlangt werden. Das USB-System wird jedoch größte Anstrengungen unternehmen, um die Daten so schnell wie möglich zu liefern. Das wird dadurch erreicht, daß 10% der Frames für Kontroll-Transfers reserviert werden. Wenn diese 10% nicht komplett genutzt werden, bleibt der Rest für Bulk-Transfers nutzbar.

Kontroll-Transfer-Limits bei normaler Geschwindigkeit:





Kontroll-Transfer-Limits bei langsamer Geschwindigkeit:





Isochrone Transfers

Isochrone Transfers sind in der USB-Umgebung definiert durch garantierte Bus-Bandbreiten mit festen Latenzzeiten, konstante Daten-Raten, solange Daten an die entsprechende Pipe geliefert werden, sowie Fehlererkennung aber nicht Behandlung im Fehlerfalle. Die genutzten Daten haben kein USB-spezifisches Format.

Isochrone Transfers können nicht von langsamen USB-Geräten genutzt werden, sondern nur von Geräten, die normale Geschwindigkeit unterstützen.

Isochrone Transfer-Limits:



Eine Endpunkt einer isochronen Pipe hat keine Informationen darüber, mit welcher Frequenz auf den Bus zugegriffen wird. Auf allen isochronen Pipes wird exakt ein Daten-Paket pro Frame gesendet/empfangen ( also pro 1 ms).

Es wurde festgelegt, daß nicht mehr als 90% eines Frames für periodische (d.h. isochrone und Interrupt-) Transfers genutzt werden dürfen. Weiterhin ist die Anzahl von 1-Byte Payloads pro Frame durch die Bus-Frequenz und das Frame-Timing auf 151 begrenzt.



Interrupt-Transfers

Interrupt-Transfers werden zur Übermittlung kleiner Datenmengen zu nicht vorhersehbaren Zeiten genutzt. Für die Daten ist dabei keine Struktur vom USB vorgesehen. Im Falle eines Fehlers ist eine Wiederholung der Übertragung in der nächsten Periode möglich.

Eine Interrupt-Pipe ist immer unidirektional und zum Host gerichtet. Andere Interrupt-Pipes werden nicht unterstützt.

Interrupt-Transfer-Limits bei normaler Geschwindigkeit:



Interrupt-Transfer-Limits bei langsamer Geschwindigkeit:



Die Bus-Frequenz und das Frame-Timing begrenzen die maximale Anzahl von Interrupt-Transfers pro Frame auf 108 1-Byte Payloads mit normaler Geschwindigkeit oder auf 14 1-Byte Payloads mit langsamer Geschwindigkeit.

Ein Endpunkt für eine Interrupt-Pipe gibt eine gewünschte, maximale Bus-Zugriffszeit an. Diese kann bei normal-schnellen Endpunkten zwischen 1 ms und 255 ms liegen, bei langsamen Endpunkten zwischen 10 ms und 255 ms. Die vom USB-System erziehlte Zugriffszeit kann auch kürzer sein als die gewünschte, bis hin zum minimal möglichen Wert. Auf jeden Fall wird durch das USB-System sichergestellt, daß die Pause zwischen zwei fehlerfreien Übertragungen nicht länger ist als die gewünschte.



Bulk-Transfers

Bulk-Transfers wurden entwickelt, um relativ große Datenmengen mit jeder beliebigen, gerade verfügbaren Bandbreite zu übertragen. Wenn viel Bandbreite verfügbar ist, dann werden diese Transfers sehr schnell abgewickelt. Umgekehrt kann bei wenig nutzbarer Bandbreite ein Transfer sehr lange dauern.

Nur normal-schnelle USB-Geräte können diese Transferart nutzen.



Es ist für Bulk-Transfers keine feste Frame-Zeit vorgesehen, wie es bei Kontroll-Transfers festgelegt wurde. Da Kontroll-Transfers bevorzugt behandelt werden, besteht bei Bulk-Transfers keine Anspruch auf irgendeine Bandbreite.

Die Bus-Frequenz und das Frame-Timing begrenzen die maximale Anzahl von Bulk-Transfers pro Frame auf 72 8-Byte Payloads.

Transferarten im Überblick





NRZI-Verschlüsselung

Der USB benutzt NRZI-Veschlüsselung zur Datenübertragung. Bei dieser Art der Verschlüsselung wird eine 0 durch einen Wechsel des Signal-Levels repräsentiert, während das bei einer 1 nicht der Fall ist. Mit anderen Worten: ein Bit-String aus Nullen bewirkt mit jeder Null einen Level-Wechsel, ein Bit-String aus Einsen führt zum fortwährenden Halten des Signal-Levels.



Bild: Beispiel-Datensignal






Bild: NRZI-Flußdiagramm


Bit-Stuffing

Um korrekte Signal-Wechsel sicherzustellen, wird Bit-Stuffing bei der Übertragung eines USB-Pakets verwendet. Dazu wird alle sechs aufeinanderfolgenden Einsen eine 0 in den Datenstrom eingefügt, bevor das Signal NRZI-verschlüsselt wird. Das bewirkt beim Empfänger mindestens alle sieben Bit-Zeiten einen Signal-Wechsel. Der Empfänger muß der Entschlüsselung die zusätzlichen Bits aufspüren und aus dem Datenstrom wieder entfernen.

Bit-Stuffing wird nach dem Sync-Muster eingeschaltet und die ganze Übertragung lang beibehalten. Die 1, welche das Sync-Muster beendet wird als erste 1 in der Stuffing-Sequenz verwendet. Wenn es nötig ist wird außerdem for dem EOP-Paket (End Of Packet) eine 0 eingefügt.







Bild: Bit-Stuffung-Flußdiagramm



Elektrik des USB

Für das USB-Datensignal wird ein differentieller Ausgangs-Bus-Treiber verwendet. Sein Low State VOL muß unter 0,3 V mit einer Last von 1,5 kW gegen 3,6 V liegen. Sein High State VOH bei 2,8 V mit einer Last von 15 kW gegen Erde. Der Treiber muß ein Signal von û0.5 V bis 3,8 V für mindestens 10m s tolerieren.

Der Bus-Treiber muß den Tri-State-Modus unterstützen, um birdirektionale Halb-Duplex-Operationen durchführen zu können. Hochohmigkeit ist zudem gefordert, um den Port von Downstream-Geräten zu isolieren die gerade angeschlossen werden oder die im Schlafmodus sind.



Signalcharakteristik bei normaler Geschwindigkeit (12 Mbs)





Bild: CMOS-Bus-Treiber für normale Geschwindigkeit






Bild: Signalformen bei normaler Geschwindigkeit




Signalcharakteristik bei niedriger Geschwindigkeit (1,5 Mbs)





Bild: Signalformen bei niedriger Geschwindigkeit




Terminierung

Zwischen langsamen und schnellen USB-Geräten wird durch die Position des Terminators am Downstream-Ende des Kabels unterschieden. Normale Geräte werden an der D+ Leitung terminiert, langsame Geräte an der D- Leitung.



Bild: Normales USB-Gerät am Bus






Bild: Langsames USB-Gerät am Bus





Protokoll des USB

Überblick

Jedes übertragene Paket beginnt mit einem Synchronisationsfeld (SYNC). Es dient nur der Synchronisation und wird deshalb in den folgenden Diagrammen nicht mit dargestellt.

Teil des SYNC-Feldes ist der SOP-Begrenzer (Start Of Packet), der den Anfang des Pakets anzeigt. Das Ende des Pakets wird entsprechend durch den EOP-Begrenzer (End Of Packet) signalisiert.

Dem SYNC-Feld folgt ein PID (Packet Identifier), der aus zwei 4-Bit Feldern besteht.



Bild: PID


Die ersten 4 Bits enthalten den Pakettyp, die folgenden 4 Bits stellen jeweils das Einerkomplement der ersten 4 Bits dar. Dies ermöglicht die Überprüfung des PID auf Übertragungsfehler.




PID-Typ
PID Name
PID[3:0]
Beschreibung

Token
OUT


IN


SOF

SETUP
b0001


b1001


b0101

b1101
Adresse + Endpunktnummer im host -> Endgerät- Transaktion

Adresse + Endpunktnummer im Endgerät -> Host-Transaction

"Start of frame"-Markierung and Frame-Nummer

Adresse + Endpunktnummer im Host -> Endgerät-Setup-Transaktion zum einem Kontroll-Endpunkt

Data
DATA0

DATA1
b0011

b1011
Daten-Paket; gerade Parität

Daten-Paket; ungerade Parität

Handshake
ACK

NAK


STALL
b0010

b1010


b1110
Empfänger meldet fehlerfreien Empfang

Empfänger akzeptiert Daten nicht oder Sender kann nicht übermitteln

Endpunkt ist "abgestürzt"

Special
PRE
b1100
Host-initiierte Ankündigung; schaltet Downstream-Bus-Übertragung für langsame USB-Geräte ein.




Tabelle: PID-Arten


Endpunkte in USB-Geräten werden unter Benutzung eines Adress- und Endpunkt-Feldes angesprochen. Beide Felder werden nur von IN-, OUT- und SETUP-Token verwendet.

Mit dem 7-Bit-Adressfeld lassen sich insgesamt 128 verschiedene Geräte ansprechen. Adresse 0 ist jedoch für normale Operationen verboten, da sie die Standard-Adresse darstellt.



Bild: Adressfeld


Die Endpunkt-Nummer wurde entwickelt, um Geräte, die mehr als eine Pipe zur Übertragung nutzen, flexibler ansprechen können. Insgesamt lassen sich mit dem 4-Bit Feld 16 verschiedene Endpunkte in USB-Geräten adressieren. Langsame Geräte dürfen jedoch nur maximal 2 Endpunkte besitzen.





Mit jedem Frame wird auch eine 11-Bit Framenummer gesendet, die pro Frame vom Host um 1 erhöht wird bis sie den Maximalwert von 07FFh erreicht hat. Dann beginnt die Zählung von neuem.

Die Größe für Datenfelder kann zwischen 0 und 1023 Bytes liegen. Das folgende Bild zeigt die Anordnung für mehrere Bytes:





Paket-Aufbau

Im folgenden wird die Struktur der verschiedenen Paket-Arten beschrieben.



Start-Of-Frame-Pakete:



Token-Pakete:



Daten-Pakete:



Handshake-Pakete:





Cyclic Redundancy Check (CRC)

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, daß 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.



Kontroll-Transfers







Bulk-Transaktionen







Isochrone Transaktionen







Interrupt-Transaktionen


Ich hoffe ich konnte einem von euch dort drausen ein bißchen weiterhelfen!!
das ganze zu Präsentieren bzw zu erstellen war hammer schwer und zeit intensiv also falls ihr mehr wissen möchtet meldet euch bei mir ich hab das ganze in html programmieren müssen, an dem ich schon fast ne ganze woche drangehangen bin!! also viel spaß damit es grüßt euch euer magges!!!


Dieses Referat wurde eingesandt vom User: scholl Roland



Kommentare zum Referat USB-Präsentation: