Serielle Kommunikation: einen einfachen UART bauen
← Alle Artikel

Serielle Kommunikation: einen einfachen UART bauen

6 Min

Warum überhaupt seriell

Ein 4-Bit- (oder breiteres) Wort über mehrere separate Leitungen zu senden, funktioniert gut auf einer Platine, wird aber über jede echte Distanz teuer und unzuverlässig. Serielle Kommunikation sendet stattdessen dasselbe Wort bitweise über eine einzige Leitung und tauscht Leitungen gegen Zeit — genau wofür ein Schieberegister gebaut ist.

Ein Wort mit Start- und Stopp-Bit umrahmen

Der Empfänger hat keine eigenständige Möglichkeit zu wissen, wann ein neues Wort beginnt, daher umschließt ein UART-Rahmen die Daten mit Markierungen: Eine Ruheleitung liegt auf 1, ein Startbit (eine einzelne 0) kündigt an, dass Daten folgen, die Datenbits werden eins pro Takt hinausgeschoben, und ein Stoppbit (eine 1) markiert das Ende und bringt die Leitung zurück in den Ruhezustand. Ein Flankendetektor, der auf den Übergang von 1 nach 0 auf einer Ruheleitung achtet, ist genau das, was einem Empfänger meldet, dass ein Startbit eingetroffen ist.

RuheStartd0d1d2d3StoppRuhe

Sender und Empfänger

Ein Sender ist ein ladbares Register, das das zu sendende Wort parallel lädt und dann darauf umschaltet, es über ein Schieberegister bitweise pro Takt hinauszuschieben, mit Start- und Stoppbit an beiden Enden angenäht. Ein Empfänger macht das Umgekehrte: Ein Flankendetektor fängt das Startbit ab, ein kleiner Zähler zählt die richtige Anzahl von Takten ab, um jedes Datenbit in sein eigenes Schieberegister zu schieben, und sobald der Zähler fertig ist, wird das zusammengesetzte Wort parallel ausgelesen.

Probieren Sie es selbst

Bauen Sie im Schaltungseditor einen Sender aus einem REG4, das ein SHIFT4 speist, getaktet von einem CNT4, der das Schieben stoppt, sobald alle vier Bits (plus Start und Stopp) hinausgegangen sind, und bestätigen Sie mit dem Wahrheitstabellen-Werkzeug, dass die Bitfolge auf der einzelnen Ausgangsleitung dem ursprünglichen, korrekt umrahmten 4-Bit-Wort entspricht.

Einen UART-artigen Sender im Schaltungseditor bauen →