Ein oder zwei UART-Stoppbits?


15

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:


19

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.


6

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.


Ein richtig eingestelltes Modell 33 benötigte nur ein Zeichen nach dem Wagenrücklauf. Dann solltest du den Zeilenvorschub senden! Ich habe vergessen, dass sie 2 Stoppbits brauchten, aber Sie haben Recht und so gilt die Antwort von Russel (aber diese 1,5 Stoppbits waren für Baudot-Hardware). Zusätzliche Stoppbits (von 10 ms) halfen jedoch keinen Carriage Return-Verzögerungen.
Gbarry

4

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.


Ich kenne keine UARTs, die so konfiguriert werden können, dass sie offensichtliche Startbits ignorieren, denen nicht mehr als eine volle Bitzeit des Markierens vorausgeht (in der Tat akzeptieren die meisten ein Startbit, dem eine halbe Bitzeit von vorausgeht Markierung und kann nicht anders konfiguriert werden). Eine solche Funktion könnte jedoch nützlich sein.
Supercat

Sie sind eher auf die richtige Antwort gestoßen, wenn wir akzeptieren können, dass diese Praxis auf die mechanischen Tage zurückgeht. Damals benötigte der Empfängermechanismus ungefähr 1 Bit Zeit, um zum Stillstand zu kommen, um für das nächste Startbit bereit zu sein. Daher wurde der Sender so konstruiert, dass er ein 1,5-Bit-Zeitstoppbit hat. Es hatte den von Ihnen beschriebenen Effekt. Wenn die Synchronisierung verloren gegangen ist, kann es vorkommen, dass mehrere Garbage-Zeichen vorhanden sind, bis Sie die Synchronisierung wiederhergestellt haben. Wenn wir auf elektronische Implementierungen bekommen, könnte der Empfänger startet für den nächsten Start warten biss sofort nach dem Übergang in das Stoppniveau zu sehen - es ist nicht padding brauchte
gbarry

@gbarry - denke, du bist in deinem Kommentar nicht so recht gestolpert.
Russell McMahon

Eigentlich sind mir die Charaktere ausgegangen :) Stimmt was nicht?
Gbarry

3

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.


Sie können auch hohe Soft-UART-Baudraten (250K und höher) erzeugen, indem Sie einen Interrupt an der Startbit-Flanke erzeugen und den Interrupt-Code für das gesamte Byte einhalten. Ein zusätzliches Stopbit kann hier sehr nützlich sein.
mikeselectricstuff

@mikeselectricstuff: Ein zusätzliches Stoppbit kann sehr nützlich sein, ebenso wie die Verwendung nur einiger der Bits in jedem Byte (vorausgesetzt, dass das LSB jedes Bytes gesetzt ist, kann nützlich sein, weil man das Timing sogar von der ansteigenden Flanke dieses Bits ableiten kann wenn es zu einem kleinen Einbruch kommen könnte, wenn der Interrupt auftritt). Eine Haupteinschränkung des Ansatzes von Bit-Interrupt-Triggered-On-Start-Bit ist jedoch, dass es keine gute Möglichkeit gibt, Daten zu senden, während eingehende Daten eintreffen. Entweder die gesendeten Daten oder die empfangenen Daten (oder beide) gehen verloren.
Supercat

2

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.


1

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.