Lassen Sie uns einen Schritt zurücktreten und über das von UARTs verwendete Low-Level-Signalisierungsprotokoll sprechen. TX und RX sind Datenleitungen, keine Uhren. Die Uhren befinden sich nur in jedem UART, weshalb im Vorfeld Einigkeit darüber bestehen muss, wie hoch die Baudrate ist.
Wenn nicht gesendet wird, bleibt die Leitung im Ruhezustand. Zur Übertragung eines Bytes (z. B. sind andere Datenbreiten möglich) sendet der Sender zunächst das Startbit . Der Empfänger verwendet die Zeit der Vorderflanke des Startbits und die bekannte Baudrate, um dann den Rest des Zeichens zu decodieren. Nehmen wir der Einfachheit halber an, dass 100 kBaud verwendet werden. Das heißt, jede Bitzeit ist 10 µs lang. Dies schließt das Startbit, die Datenbits und das Stoppbit (die Stoppbits) ein. Daher liegt die Mitte des ersten Datenbits bei 15 us nach der Vorderflanke des Startbits, die zweite bei 25 us usw.
Solange die Empfänger- und Senderuhr gleich sind, könnte dies für immer so weitergehen. Sie werden jedoch niemals exakt gleich sein, sodass es nicht ewig so weitergehen kann. Um eine erneute Synchronisation der Uhr des Empfängers mit der Uhr des Senders zu ermöglichen, endet das Datenzeichen, die Leitung wird für ein Bit frei gelassen, und der Vorgang wird wiederholt. Timing-Fehler häufen sich ab der Vorderflanke des Startbits an, sodass die maximale Drift beim letzten Bit liegt. Sobald dieses Zeichen vorbei ist, setzt der Empfänger das Warten auf das nächste Startbit zurück und der Vorgang wird wiederholt.
Mit 8 Datenbits ist der schlechteste Fall für das Timing das Abtasten des letzten Bits. Das sind 8,5 Bitzeiten von der Zeitreferenz, die die Vorderflanke des Startbits ist. Wenn der Empfänger um mindestens 1/2 Bit ausgeschaltet ist, wird das letzte Bit während eines anderen Bits abgetastet. Das ist eindeutig schlecht. Dies geschieht bei einer Taktfrequenzfehlanpassung von 1/2 Bit in 8 1/2 Bits oder 5,9%. Das ist die garantierte Fehlanpassung. Um die Zuverlässigkeit zu gewährleisten, sollten Sie normalerweise sicherstellen, dass der Empfänger mit dem Sender auf die Hälfte oder 2,9% genau übereinstimmt. Dies entspricht einem Zeitfehler von 1/4 Bit beim letzten Bit.
Ganz so einfach ist es jedoch nicht. In dem oben beschriebenen Szenario startet der Empfänger im Wesentlichen eine Stoppuhr an der Vorderflanke des Startbits. Das könnte theoretisch in der analogen Elektronik geschehen, wäre aber kompliziert und teuer und nicht einfach in digitale Chips integrierbar. Stattdessen verfügen die meisten digitalen UART-Implementierungen über einen internen Takt, der mit der 16-fachen erwarteten Bitrate ausgeführt wird. Die "Stoppuhr" zählt dann diese 16 Zyklen. Das bedeutet, dass zu allen Bitabtastzeiten ein zusätzlicher möglicher Fehler von 1/16 Bit hinzugefügt wird, was einer weiteren Taktinkongruenz von 0,7% beim letzten Bit entspricht.
Hoffentlich wird dadurch klar, was das Stoppbit ist, wie das Bit-Timing funktioniert und worum es bei der 16-fachen Uhr geht. Ich habe meistens Stoppbits übersprungen, aber vielleicht können Sie jetzt selbst sehen, warum mindestens ein Stoppbit erforderlich ist. Grundsätzlich sind die Stoppbits die minimale erzwungene Leerlaufzeit zwischen Zeichen. Dies ist die Zeit, in der der Empfänger ein Zeichen empfangen hat und für die nächste Vorderflanke eines Startbits bereit ist. Wenn es kein Stoppbit gäbe, könnte das letzte Datenbit die gleiche Polarität wie das Startbit haben und der Empfänger hätte keine Flanke, an der seine Stoppuhr starten könnte.
Vor langer Zeit wurde dieses Protokoll von Nocken, Hebeln und durchdrehenden Rädern entschlüsselt. Oft wurden zwei Stoppbits verwendet, um das Zurücksetzen des Mechanismus zu ermöglichen. Heutzutage wird alles in digitaler Logik ausgeführt und 1 Stoppbit wird so ziemlich universell verwendet. Sie sehen das Low-Level-Protokoll häufig als 8-N-1, dh 8 Datenbits, keine Paritätsbits (vergessen Sie diese, sie werden heutzutage selten verwendet) und 1 Stoppbit. Das Startbit ist impliziert, da es dort keine Option gibt.
Bei Verwendung von 8-N-1 benötigt ein 8-Bit-Datenbyte tatsächlich 10-Bit-Zeiten zum Senden. Dies ist ein Grund, warum zwischen "Bitrate" und "Baudrate" unterschieden wird. Die Baudrate bezieht sich auf die einzelnen Bit-Signalisierungszeiten einschließlich der Start- und Stoppbits. Bei 100 kBaud dauert jedes übertragene Bit 10 µs, einschließlich Start- und Stoppbit. Das gesamte Zeichen benötigt also 100 µs, es werden jedoch nur 8 Bit echte Daten übertragen. Die Baudrate beträgt 100 kBit, die Datenübertragungsbitrate aus Sicht höherer Ebenen jedoch nur 80 kBit / s.