Bei UARTs können Sie häufig zwischen 1, 1,5 und 2 Stoppbits wählen. Bei einer Nutzlast von 1 Stoppbit beträgt die Effizienz 80% (8/10), bei 2 Stoppbits sinkt sie auf 72,7% (8/11). Was ist der Vorteil des zweiten Stoppbits?
Bei UARTs können Sie häufig zwischen 1, 1,5 und 2 Stoppbits wählen. Bei einer Nutzlast von 1 Stoppbit beträgt die Effizienz 80% (8/10), bei 2 Stoppbits sinkt sie auf 72,7% (8/11). Was ist der Vorteil des zweiten Stoppbits?
Antworten:
Zusätzliche Stoppbits können ein nützlicher Weg sein, um ein wenig zusätzliche Empfangsverarbeitungszeit hinzuzufügen, insbesondere bei hohen Baudraten und / oder bei Verwendung von Soft-UART, wo Zeit benötigt wird, um das empfangene Byte zu verarbeiten.
Wenn die Geschwindigkeit knapp ist und Ihr UART nur Teilungsverhältnisse in Potenzen von 2 bietet, kann das Hinzufügen eines zusätzlichen Stoppbits eine Option sein, die die Geschwindigkeit weniger drastisch reduziert als die nächstniedrigere Baudrate.
Ich glaube, das ist vielleicht einer der Gründe, warum der DMX512-Standard 2 Stoppbits spezifiziert.
Eine andere Situation, in der sie nützlich sein können, ist, wenn Sie Geräte haben, die einen Datenstrom ohne Pufferung oder Paketierung weiterleiten. Kleine Unterschiede in den Taktraten zwischen den Knoten und die Granularität der endlichen Abtastung können dazu führen, dass Fehler auftreten, wenn Daten von einer Reihe von Knoten in empfangen und erneut gesendet werden Wenn die Daten jedoch mit 2 Stoppbits gesendet werden und die Empfänger auf ein Stoppbit eingestellt sind, wird genügend Spielraum hinzugefügt, um diese Fehler auszugleichen und mindestens eine gültige Stoppbit-Periode für Knoten in der Kette zuzulassen, die zuverlässig empfangen werden.
Ich bin auch auf eine Situation gestoßen, in der eine sehr lange Kabelstrecke eine gewisse Asymmetrie in den Anstiegs- und Abfallzeiten verursachte, was zu einer unzureichenden Stoppbitlänge führte - das Senden von 2 Stoppbits und das Versenden des Empfängers erfordern nur eine Korrektur.
In längst vergangenen Tagen waren Drucker (fast) rein mechanische Konstruktionen. Die Baudraten waren schon damals einigermaßen standardisiert, sodass der Drucker durch Hinzufügen eines zusätzlichen Stoppbits mehr Zeit zum Drucken des Zeichens hatte. Timing-Aspekte waren damals sichtbarer. Bei meinem ersten Drucker, einem lauten http://en.wikipedia.org/wiki/Teletype_Model_33 , musste ich nach dem Senden eines Wagenrücklaufs eine Pause von zwei Zeichen einfügen.
Es ist unwahrscheinlich, dass zwei Stoppbits viel nützlicher sind als eines auf einem System, das einen erheblichen Anteil an Stoppzeiten aufweist und in einer Umgebung mit geringem Rauschen (low BER) wie z. B. geräteintern oder in einer peripheren Schnittstelle mit wenigen Metern arbeitet Kabel und / oder ohne Modem-Modem-Stufe.
Mit 2 Stoppbits haben Sie eine längere Synchronisationszeit, mehr Zeit für die Verarbeitung zwischen Zeichen und je nach Hardware und Algorithmus wahrscheinlich eine bessere Chance, während eines kontinuierlichen Datenstroms eine Synchronisation zu erreichen oder wiederzugewinnen. Die Intercharakter-Zeit ist auf modernen Systemen von viel geringerem Wert als bei niedrigen Taktraten und niedrigerem Prozessordurchsatz.
Wenn Sie einen im Wesentlichen kontinuierlichen Datenstrom haben, dann sieht jedes High-Bit, wenn es nicht synchronisiert ist, wie ein Stoppbit aus. Jeder High-Low-Übergang sieht wie eine Bytegrenze aus. Wenn Ihr Empfänger an einer 10-Grenze startet und es sich nicht um eine echte Startgrenze handelt, wird dies nur in 50% der Fälle festgestellt (dh, wenn das letzte "Stoppbit" tatsächlich ein niedriges Datenbit ist und Sie dies auch tun) Sie haben die echte Stopp / Start-Grenze auf dem Weg übersprungen. Im Durchschnitt haben Sie eine 1/4-Perspektive, dass eine Byte-Grenze 1/0 ist und fälschlicherweise wie ein Stopp / Start-Paar aussieht. Paar starten, dann besteht wahrscheinlich eine Wahrscheinlichkeit von 50%, dass Sie beim folgenden Versuch ein anderes auswählen.
Wenn Sie 2 Stoppbits (11) verwenden, ist eine gültige Stopp-Start-Sequenz 110, die eine 1/8 Chance hat, im Zufallsdatenverkehr aufzutreten. Das Mischen von echten Stopp- und Startbits in dem nicht synchronisierten Fluss verändert die Sats geringfügig, aber es scheint relativ unwahrscheinlich, dass Sie, wenn Sie in einem Zyklus eine falsche Stopp / Start-Sequenz für 110 erhalten, einen weiteren Versuch ausführen, bevor Sie über die echte 110 stolpern Reihenfolge, die als nächstes auftritt.
Wie Sie bemerken, ergibt 1 Stoppbit einen maximalen Durchsatz von 8/10 = 80% und 2 Stoppbits eine Effizienz von 8/11 = 72%. Die Durchsatzdifferenz an der äußersten Grenze beträgt 80% / 72% = ~ 11% mehr. Dies ist ein nützlicher Gewinn unter extremen Umständen, aber nicht sehr groß. Wenn die Schaltung mehr als 10% der Zeit im Leerlauf ist, hat sie einen minimalen Wert. Wenn Ihre Schaltung verrauscht ist und gelegentlich zu Synchronisationsverlusten neigt, kann das zusätzliche Stoppbit sehr hilfreich sein. ABER wenn Ihnen der Durchsatz so wichtig ist, können Sie häufig die Baudrate erhöhen (nicht immer) oder auf den vollsynchronen Betrieb umstellen.
Um den Punkt von mikeselectricstuff über die Empfangszeit mit "weichen UARTs" zu verstärken, kann eine Empfangsanwendung, die immer weiß, wann sie Daten akzeptiert und dies auf Abrufbasis tut, häufig schnellere Baudraten verarbeiten, als dies mit einem unterbrechungsgesteuerten weichen UART praktisch wäre. Solche Anwendungen können jedoch eingehende Daten nur während der Zeit zwischen dem Start des Stoppbits eines Bytes und dem Startbit des nächsten Bytes verarbeiten. Die für die Verarbeitung jedes Bytes erforderliche Zeit ist der begrenzende Faktor für die Kommunikationsgeschwindigkeit. Die Verarbeitung von Daten bei 115.200-N-8-2 ist nicht viel anspruchsvoller als die Verarbeitung bei 57.600-N-8-1, aber um mehr als 80% schneller.
Manchmal kann man die Dinge noch weiter vorantreiben, indem man scheinbar weniger effiziente Datenformate verwendet. Beispielsweise kann man jedes Byte in zwei Teilen senden, eines mit sieben Bits und eines mit einem (die MSBs des Ein-Bit-Teils sind alle gesetzt). Wenn man das tut, gibt es sogar mit nur einem Stoppbit acht Bitzeiten für die Markierung zwischen dem Ende eines Bytepaares und dem Beginn des nächsten, so dass man die Bitrate viermal so hoch drücken kann wie das, was man tut könnte mit nur zwei Stoppbits auskommen (und achtmal so hoch wie mit einem). Obwohl doppelt so viele Bytes gesendet werden müssen, wäre die Vervierfachung der Datenrate ein großer Gewinn. Obwohl jedes übertragene Bytepaar zum Senden von acht Datenbits verwendet werden könnte, würden zusätzlich nur 130 von 256 möglichen Bytewerten von der Codierung verwendet.
Es gab einmal elektromechanische Monster, die als Teletypen bezeichnet wurden. Die meisten liefen mit Wechselstrommotoren synchron zur Netzfrequenz. Somit bestand immer die Möglichkeit, dass zwei kommunizierende Maschinen nicht mit demselben Stromnetz synchronisiert waren oder sogar mit Wechselstrom mit unterschiedlichen Frequenzen betrieben wurden.
Damit eine langsamere Maschine aufholen und nicht aus der Synchronisation driften kann, wurden zwei Stoppbits gesendet.
Für andere Zwecke, z. B. um zu ermöglichen, dass der Druckwagen zum Anfang einer neuen Zeile zurückkehrt, wurden ein CR, ein LF und zwei Rubouts gesendet (alle Löcher auf einem 8-Ebenen-Band).
Es war üblich, dass Schaltkreise nur mit einer Geschwindigkeit von 110 Baud und langsamer betrieben wurden.
Die Langsamkeit der empfangenden mechanischen Geräte war der Grund für das Hinzufügen der zusätzlichen Stoppbits. Die heutigen Geräte sind jedoch schnell genug und arbeiten mit noch höheren Baudraten, ohne dass ein zusätzliches Stoppbit erforderlich ist