Table of Contents

PWM Steuerung mit UART

Zurück zur Themenübersicht

Aufgabenstellung

Bauen Sie einen Automaten, der die empfangenen Daten interpretiert und damit die Leuchtintensität der LEDs steuert.

Vorbereitung

Projekt aktualisieren

Aktualisieren Sie das dtlab Projekt mit

cd ~/projects/dtlab
git pull

VHDL toplevel top_uart

Die Datei top_uart.vhd beschreibt das Modul “top_uart”. “top_uart” stellt den toplevel auf dem FPGA dar. Das ist der gleiche toplevel wie bei der letzten Aufgabe. In das Modul wird zusätzlich das pwm Modul und ein Automat eingebaut. Mit dem Automaten werden die von der UART empfangenen Zeichen interpretiert und das pwm Modul angesteuert.

Empfangsautomat

In VHDL Code für Zustandsautomaten wird das VHDL Designpattern für Automaten dargestellt. In der Schaltung hier soll ein Automat die von der UART empfangenen Zeichen interpretieren und damit das pwm Modul ansteuern. So lässt sich vom Terminal am PC aus die Leuchtstärke der LEDs steuern. Die Schaltung soll die folgenden Befehle erkennen:

led <nr 0-3> [0|h|1]

Damit kann man die grünen Leuchtdioden 0 bis 3 in der Helligkeit steuern. Der erste Parameter ist die Nummer der Leuchtdiode. Der zweite Parameter steht für die Helligkeit.

Parameterwert Bedeutung
0 LED ist aus
h LED hat die halbe Leuchtkraft
1 LED hat die volle Leuchtkraft

Beispielsweise bedeutet

led 2 1

dass die grüne LED 2 voll eingeschaltet wird. Wenn ein gültiger Befehl erkannt und umgesetzt wurde, dann sendet die Schaltung “ok” zurück. Es gibt dazu schon eine Datei rxautomat.vhd.

Sendeautomat

Wenn der Empfangsautomat einen gültigen Befehl erkannt hat, dann wird für einen Takt das Signal “send_ok_o” aktiviert. Bauen Sie auf Basis eines Zähler einen Sendeautomaten, der die Zeichenfolge “ok” mit Hilfe des UART Transmitters sendet. Die Datei txautomat.vhd ist schon vorbereitet. Integrieren Sie den Sende- und Empfangsautomaten im Toplevel mit den anderen notwendigen Komponenten.

Labor

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

Software auf dem Rechner

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

Auf dem Rechner wird ein Terminalprogramm benötigt, mit dem die Daten von der seriellen Schnittstelle angezeigt werden können.

sudo screen /dev/ttyUSB0 57600
gtkterm --port /dev/ttyUSB0 --speed 57600 --echo

Tippen Sie im Terminalprogramm Zeichen ein und beobachten Sie, ob die Zeichen korrekt auf den roten LEDs angezeigt werden. Die ASCII Tabelle zeigt die Codes für die verschiedenen Buchstaben.