Bauen Sie einen Automaten, der die empfangenen Daten interpretiert und damit die Leuchtintensität der LEDs steuert.
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. 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.
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.
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.
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.
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.
screen
vorinstalliert und kann so verwendet werden:sudo screen /dev/ttyUSB0 57600
gtkterm
installiert und kann direkt so gestartet werden: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.