Kommentare
- Haben Sie sich die Universal Serial Bus Specification angesehen, insbesondere USB Kapitel 9? Oder lesen Sie Jan Axelson ' s USB Complete?
- Vielen Dank für diese Ressourcen, aber das einzige Problem ist, dass ich kaum etwas über Elektronik weiß, sodass die Anleitung keinen Sinn ergibt mich. Ich weiß, dass das Verständnis des gesamten USB-Protokolls spezielle Kenntnisse erfordert, aber ich brauche nur einen kurzen Überblick. (Diese Frage ist nicht ' t für ein Projekt. Ich habe sie nur gestellt, weil ich war neugierig)
Antwort
Ich werde versuchen, Ihre Fragen zu beantworten, damit Sie sie vorschlagen (Nummerierung) kann helfen).
Es gibt tatsächlich vier Drähte (wobei USB3.x im Moment ignoriert wird). Zwei tatsächlich für die Stromversorgung (+ 5V und GND) und zwei für die Signalisierung (D + und D -).
Das Wichtigste an den Signaldrähten ist ihr Name. Beachten Sie die + und – (manchmal auch P und N oder P und M). Diese weisen in der Elektronik normalerweise darauf hin, dass etwas anders ist bedeutet, dass die 1 „s und 0“ s durch die Polarität der Spannung zwischen jedem Kabel angezeigt werden. Dies steht im Gegensatz zu Single Ended, bei dem die 1 „s und 0“ s als a geführt werden Spannung relativ zu GND.
Was meine ich mit Polarität? Stellen Sie sich vor, das D + -Kabel wird auf \ $ + 3,3 \ m angesteuert athrm {V} \ $, und das D- wird zu \ $ 0 \ mathrm {V} \ $ gefahren. Der Unterschied zwischen den beiden ist \ $ V_ {D +} – V_ {D-} = 3,3 – 0 = 3,3 \ mathrm {V} \ $. Wenn nun stattdessen das D + -Kabel auf \ $ 0 \ mathrm {V} \ $ und das D- auf \ $ + 3.3 \ mathrm {V} \ $ getrieben wurde, wird die Differenz zu \ $ V_ {D +} – V_ {D- } = 0 – 3,3 = -3,3 \ mathrm {V} \ $. Beachten Sie das Minuszeichen, das die entgegengesetzte Polarität angibt.
Damit dies funktioniert, müssen die beiden Datenkabel das Komplement zueinander sein (wenn eines hoch ist, ist das andere niedrig), um Daten zu übertragen muss mit der gleichen Frequenz arbeiten. Sie denken vielleicht, warum Sie sich die Mühe machen, verwenden Sie einfach ein Kabel. Die Sache ist, dass die Welt ein ziemlich lauter Ort ist. Ein Single-Ended-Kabel (Gleichtaktkabel) ist sehr anfällig für Rauschen, das bei hohen Geschwindigkeiten (auch bei niedrigen Geschwindigkeiten in rauen Umgebungen) die Daten beschädigen kann (machen Sie eine 1 zu 0). Bei der Differenzialsignalisierung sind beide Kabel demselben Rauschen ausgesetzt, sodass sie aufgehoben werden!
Ein kurzes Beispiel. Angenommen, das von Ihnen gesendete Signal lautet \ $ 2 \ mathrm {V} \ $ oder \ $ 0 \ mathrm {V} \ $. Nehmen wir auch an, Sie erhalten auf jedem Draht \ $ 1 \ mathrm {V} \ $ Rauschen (unrealistisch, aber ein Beispiel). Für Single-Ended wären Ihre Signale am Empfänger entweder \ $ 2 + 1 = 3 \ mathrm {V} \ $, was eindeutig eine logische 1 ist, oder \ $ 0 + 1 = 1 \ mathrm {V} \ $ an welchem Punkt Sie Ich habe keine Ahnung, was es war. Für Differential wären Ihre Signale am Empfänger jedoch entweder \ $ (2 + 1) – (0 + 1) = 2 \ mathrm {V} \ $ oder \ $ (0 + 1) – (2 + 1) = – 2 \ mathrm {V} \ $, die beide gleich sind, als ob überhaupt kein Rauschen aufgetreten wäre!
Zwei Drähte haben andere Vorteile. Wenn keine Daten gesendet werden, verwendet die USB-Spezifikation die beiden Drähte unabhängig voneinander für Steuersignale, z. ein Synchronisationssignal, ein Rücksetzbefehl usw. Diese können durch verschiedene Tricks, die wahrscheinlich zu tief sind, klar von Datenpaketen unterschieden werden (alles in der in den Kommentaren erwähnten USB-Spezifikation).
Bei USB müssen beide Geräte dieselbe Frequenz haben. Dies ist normalerweise ein Vielfaches von 12 MHz. Aus diesem Grund werden USB-Geräte mit Taktfrequenzen wie 48 MHz oder 12 MHz usw. betrieben. Diese Frequenzen werden von einer Kristallreferenz erzeugt, die normalerweise auf etwa 20 ppm genau ist (240 Hz für einen 12-MHz-Kristall) ). Dies ist im Allgemeinen nahe genug, dass aufgrund von Synchronisationsimpulsen auf den Datenleitungen und der Tatsache, dass Daten in Bursts gesendet werden (was bedeutet, dass sich die Frequenzdrift über einen langen Zeitraum nicht summiert), dass die beiden Geräte synchron bleiben können Wenn Sie beispielsweise versehentlich einen 16-MHz-Quarz verwenden, wird das Gerät wahrscheinlich nicht aufgelistet.
Woher weiß der Master, dass das Gerät Strom benötigt? Einfach, alle USB-Geräte dürfen einen zeichnen Strommenge, ohne sie anzufordern – bis zu \ $ 100 \ mathrm {mA} \ $, soweit ich mich erinnere. Dies gibt dem Gerät genügend Strom zum Einschalten, um seine Anwesenheit zu bestätigen (mit einem Pull-up-Widerstand auf der D + -Leitung – wahrscheinlich wieder zu tiefgreifend). Sobald der Master das Gerät kennt, weist er diesem Gerät eine Stromzulage zu und fragt, ob es mehr benötigt (z. B. für ein Hochleistungsgerät, wenn es die \ $ 500 \ mathrm {mA} \ $ möchte hohe Strombelastbarkeit).
Das USB-Protokoll ist alle in der Spezifikation enthalten.Nachdem Sie jedoch gesagt haben, dass Sie diese Antwort auf eine andere Frage überprüfen möchten, die einige Details enthält.
Antwort
USB 1.x (1,5 Mbit / s und 12 Mbit / s) und 2.0 (480 Mbit / s) verwenden vier Drähte, V \ $ _ {BUS} \ $ ( +5), D +, D- und GND. D + und D- bilden ein Differentialpaar. Es gibt auch eine Erweiterung namens OTG (On-The-Go), mit der ein Gerät entweder als USB-Host oder als Gerät fungieren kann. Dabei wird ein fünfter ID-Anschluss verwendet, den wir ignorieren können.
Wenn der Die maximale Rate von Host und Gerät ist unterschiedlich, es findet eine Aushandlung statt und es wird die höchste Geschwindigkeit verwendet, die beiden gemeinsam ist.
Differenzielle Signalisierung vorgesehen ein hohes Maß an Störfestigkeit. Die Datensignale werden positiv auf der D + -Leitung und negativ auf der D- -Leitung gesendet. Auf der Empfangsseite wird die Plusleitung in die + Leitung eines Komparators (der als Subtrahierer fungiert) und die Minusleitung in die – Leitung des Komparators gesendet.
Für gültige Impulse addieren sich diese beiden (da der negative Impuls gesendet wurde die – Leitung des Komparators, fügen sie hinzu). Wenn jedoch Rauschen auf der Leitung induziert wird, wirkt es sich im Allgemeinen gleichermaßen auf die D + – und D- -Linien aus, und der Komparator subtrahiert sie.
Das Diagramm zeigt Daten, die nur in eine Richtung gehen. Da USB-Signale Halbduplex-Signale sind, werden die Daten jeweils nur in eine Richtung übertragen.
USB 3.0 (bis zu 10 Gbit / s) verwendet neun statt vier Drähte und bietet seitdem Vollduplex-Betrieb Für das Senden und Empfangen gibt es jeweils unterschiedliche Paare.
Geräte können bis zu 100 mA ziehen, ohne „fragen“ zu müssen. Bei USB 1.x und 2.0 kann das Gerät den Host auffordern, bis zu 500 mA zu liefern. Für USB 3.0 wurde dieser Wert auf 900 mA erhöht. Es gibt ein separates Protokoll zum Laden des Akkus (kein Datenaustausch). Dies kann in einigen Fällen bis zu 5A betragen.
Kommentare
- Vielen Dank für die Antwort. Was passiert, wenn die beiden Geräte unterschiedliche Taktfrequenzen haben?
- Eine Technik namens " Taktwiederherstellung " wird verwendet: arrowdevices.com/blog/beginners-guide-to-clock-data-recovery
Antwort
USB verwendet Differenzsignale, um Interferenzen zu reduzieren und eine Hochgeschwindigkeitsübertragung über große Entfernungen zu ermöglichen. Ein Differentialbus besteht aus zwei Drähten, von denen eine die übertragenen Daten darstellt und die andere die Ergänzung darstellt. Die Idee ist, dass die „durchschnittliche“ Spannung an den Drähten keine Informationen enthält, was zu weniger Interferenzen führt. Modernste serielle Busse (USB, Ethernet, PCIe, SATA usw.) sind unterschiedlich, da die Kosten für die zusätzlichen Kabel durch die Vorteile der Rauschunterdrückung bei weitem aufgewogen werden. USB 2 wird auch als „Halbduplex“ bezeichnet. Dies bedeutet, dass nur die Verbindung besteht funktioniert zu einem bestimmten Zeitpunkt in eine Richtung. Angenommen, Ihr Computer kann eine Nachricht an Ihre Maus senden. Oder Ihre Maus kann eine Nachricht an Ihren Computer senden. Aber nicht beide gleichzeitig. Der Bus muss jeweils „umgedreht“ werden Zeitdaten müssen in die andere Richtung gesendet werden.
Bei der Taktung nutzt USB Geräte, die als Serializer und Deserializer bezeichnet werden. Der Serializer ist für die Erzeugung der seriellen Daten auf der Sendeseite und des Deserializers verantwortlich ist verantwortlich für die Wiederherstellung der Bits auf der anderen en d. Ein Teil der Aufgabe des Serializers besteht darin, die Daten so zu codieren, dass sie durch Einbeziehen von Framing- und Synchronisationsinformationen leicht zu decodieren sind. Ein Teil der Aufgabe des Deserialisierers besteht darin, das Taktsignal wiederherzustellen. USB verwendet eine Codierung namens NRZI oder nicht invertiert auf Null. In NRZI wird die logische 0 durch einen Übergang und die logische 1 durch keinen Übergang dargestellt. USB verwendet Bit-Stuffing, um die Länge aufeinanderfolgender 1s zu begrenzen, die über das Kabel gesendet werden. Das Ergebnis bedeutet, dass es häufig genug Übergänge gibt, um alle Bits wiederherzustellen, selbst wenn die Uhren auf dem Sender und dem Empfänger nicht genau mit der gleichen Rate ticken. Sie müssen jedoch relativ nah sein. Es gibt auch explizite Synchronisationssequenzen, die zusammen mit den Daten gesendet werden.
In Bezug auf die Stromversorgung darf das Gerät eine bestimmte Menge an Strom ziehen, ohne den Host zu fragen. Um mehr als das zu zeichnen, müssen Sie verhandeln, um sicherzustellen, dass der Host nicht überlastet wird. Das Gerät muss warten, bis es die Berechtigung erhält, bevor es mehr Strom ziehen kann.