[[dtlab_t8]]

This is an old revision of the document!


UART Transmitter mit FPGA und VHDL

Bauen Sie einen UART Transmitter und senden Sie über die UART Schnittstelle Buchstaben vom FPGA zu einem angeschlossenen Rechner.

Aktualisieren Sie das dtlab Projekt mit

cd ~/projects/dtlab
git pull

Die Datei top_uart.vhd beschreibt das Modul “top_uart”. “top_uart” stellt den toplevel auf dem FPGA dar.

Auf dem FPGA soll ein UART Transmitter aufgebaut werden, mit dem man Zeichen an einen Rechner schicken kann. Die Übertragung hat die folgenden Parameter

  • 57600 Baud
  • Acht Datenbits, kein Paritybit
  • Zwei Stopbits

Die Architektur ist in Abbildung 1 dargestellt.

Abbildung 1: UART Transmitter Architektur auf dem FPGA

Wenn man auf den KEY1 drückt, dann sollen die Daten an den Schaltern SW[7..0] über die UART seriell übertragen werden. Die Übertragungsgeschwindigkeit wird mit dem “baudcnt” Modul gesteuert.

Abbildung 2: UART Transmitter Timing

In Abbildung 2 ist das Timing der Schaltung für ein Bitdauer von drei Systemtakten dargestellt. Das wäre eine Baudrate von 16,6 MBit/s bei einer Systemtaktfrequenz von 50 MHz. Das wäre also viel zu schnell. So kann aber das Zusammenspiel der Komponenten “baudcnt” und “uart_tx_shift” einfacher dargestellt werden.

  • Die Komponenten “edge”, “baudcnt” und “uart_tx_shift” sind als leere Architectures schon im Projekt vorhanden
  • Die “edge” Komponente enthält den Flankendetektor aus den vorherigen Projekten
  • Instantiieren Sie die Komponenten “baudcnt” und “uart_tx_shift” in “top_uart” und verbinden Sie die Komponenten gemäß Abbildung 1
  • Überprüfen Sie die Struktur mit dem RTL Viewer aus der Synthese

Die Testbench “t_top_uart” dient zur Simulation von “top_uart”.

  • Stellen Sie im Simulator sicher, dass das Signal “start” bei einem simulierten Tastendruck an KEY1 korrekt erzeugt wird

Das Modul “baudcnt” steuert die Übertragungsrate wie in Abbildung 2 dargestellt. Das Enablesignal sorgt im “uart_tx_shift” Modul dafür, dass das nächste Bit ausgegeben wird.

  • Entwerfen Sie eine Architektur für “baudcnt”, die das Enablesignal wie in Abbildung 2 dargestellt erzeugt.
  • Die Architektur soll auch für eine Baudrate von 57600 Baud geeignet sein.
  • Zeichnen Sie die Architektur auf Papier auf
  • Was muss man für eine Baudrate von 57600 Baud in baudcnt einstellen?
  • Zeigen Sie die Funktion im Simulator wie in Abbildung 2

Das Modul “uart_tx_shift” dient zur Serialisierung des 8 Bit Datenwortes, das von den Schaltern SW[7..0] kommt.

  • Entwerfen Sie eine Architektur für das Modul “uart_tx_shift”, mit der die Daten serialisiert werden
  • Das Modul soll auch das Startbit für die UART Übertragung erzeugen
  • Zeichnen Sie die Architektur auf Papier auf
  • Zeigen Sie die Funktion der Gesamtuart im Simulator

Im Labor gibt es ein FTDI-RS232 Kabel zum Anschluss eines Rechners an eine RS-232 Schnittstelle. Auf dem FPGA Board ist ein MAX232 Chip mit dem die 3,3V Logiksignal auf RS-232 (+7/-7V) Niveau gewandelt werden. Das Kabel enthält einen USB-UART Konverterchip von FTDI. Das Kabel kann also per USB an einen Rechner angeschlossen werden.

 FTDI RS-232 Kabel Abbildung 3: FTDI RS-232 Kabel

Auf dem Rechner wird ein Terminalprogramm benötigt, mit dem die Daten von der seriellen Schnittstelle angezeigt werden können. Auf Linux oder MacOS ist das “screen” und auf Windows putty.

  • Unter Linux oder MacOS kann man “screen” als terminal verwenden
  • Nach dem Einstecken des Modems erscheint unter /dev/ttyXXXXXXX ein neues Device. Unter Linux ist dies /dev/ttyUSB0, unter MacOS ist dies /dev/tty.usbserial-DM000IKG
  • Unter Linux muss man das terminal als root starten und die Baudrate von 57600 Baud angeben.
sudo screen /dev/ttyUSB0 57600
  • Unter MacOS ist kein sudo notwendig

Stellen Sie auf dem FPGA Board über die Schalter verschiedende Zeichen ein und übertragen Sie das Zeichen an den Rechner.

  • dtlab_t8.1715693442.txt.gz
  • Last modified: 2024/05/14 15:30
  • by beckmanf