[[dtlab_t10]]

PWM Steuerung mit UART

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.

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

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.

  • Unter MacOS ist screen vorinstalliert und kann so verwendet werden:
sudo screen /dev/ttyUSB0 57600
  • Unter MS Windows kann putty installiert und genutzt werden.
  • Unter Linux ist bei unseren virtuellen Maschinen 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.

  • dtlab_t10.txt
  • Last modified: 2024/06/17 09:03
  • by beckmanf