Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03637.jsonl.gz/113

SEm/labore/06 uart

UART-Peripheriebaustein für AMBA-Bus
Einleitung
In diesem Labor werden wir einen Peripheriebaustein entwickeln, der in den Prozessorsystemen weit verbreitet ist: eine serielle Schnittstelle (Universal Asynchronous Receiver/Transmitter, UART).
In dieses Labor wird die Entwicklung einer digitalen Schaltung geübt und verlangt dadurch auch eine Reflexion über die Architektur des Systems.
Entwicklung
Der Peripheriebaustein stellt dem Prozessor zwei serielle Leitung zur Verfügung: eine für den Empfang und eine für die Übertragung.
Die empfangenen Datenbits sollten möglichst in deren Mitte gelesen werden. Der Zähler, welcher diesen Moment des Lesens bestimmt, sollte also wenigstens mit dem Auftreten des
start bit synchronisiert werden.
Unabhängig dazu behält der Zähler, welcher die Übertragung steuert, immer die gleiche Periode.
Register
Auf folgende Register schreibt der Prozessor:
- Adresse 00: Datenregister, die 8 LSBs dieses Registers werden auf der RS232-Linie übertragen
- Adresse 01: Kontrollregister, im Moment noch unbenuzt
- Adresse 02: Bitperiode, gibt die Übertragungsgeschwindigkeit für das Senden sowie das Empfangen
Die Bitperiode gibt die Anzahl Clock-Perioden an, welche der Übertragung eines Bits entsprechen.
Die folgenden Register werden vom Prozessor gelesen:
- Adresse 00: Datenregister, enthält in den 8 LSBs den zuletzt auf der RS232-Linie empfangenen Wert
- Adresse 01: Statusregister
- Bit 0: zeigt an, dass ein neues Wort empfangen wurde und vom Prozessor gelesen werden kann
- Bit 1: zeigt an, dass ein Wort gesendet wird und dass der Prozessor keinen neuen Wert ins Datenregister schreiben soll
- Bit 2: zeigt an, dass ein neues Wort empfangen wird
VHDL-Code
Verifikation