FPGA

Ziele:

  • Einbinden der Sensoren und Aktoren des Flippers (Schalter, Flipperarme, Bumper,..)

  • Auswerten der Sensoren und weiterleiten an die Software

  • Schalten von zeitkritischen Aktoren (Flipperarme, Bumper, Kicker)

  • Parametrisierbarkeit der Spulen (Änderung der Stärke)

 

Aufbau:

Es wurde eine Hardwarebeschreibung in VHDL entwickelt, welche die Aktoren und Sensoren des Flippers einbindet und mit dem Microcontroller via serielle Schnittstelle kommuniziert. Wenn ein Sensor des Flippers ausgelöst wird, sendet der FPGA eine Nachricht an den Raspberry Pi, dass dieser Sensor ausgelöst wurde. Weiters wird bei zeitkritischen Sensoren auch gleichzeitig die dazugehörige Spule geschalten. Einige Spulen (New Ball, DropTargetReload,..) und die Lampen werden vom PC aus geschalten. Dazu wird eine Nachricht an den FPGA gesendet. 

 

Übersicht über das FPGA-Gesamtsystem:

 

Serielle Kommunikation:

Die Kommunikation zwischen PC und FPGA funktioniert unter Verwendung eines einfachen Protokolls. Dieses besteht aus einem Kommandobyte, welches die auszuführende Aktion bestimmt (z.B. LEDON 0x0B, LEDOFF 0x0C) und einem Datenbyte welches die Nummer des jeweiligen Aktors bzw. Lampe angibt. Somit sind für jedes Kommando 255 Elemente möglich und eine Erweiterung ist leicht möglich. Vom FPGA an den PC wird geschickt welche Elemente ausgelöst wurden (Taster, Rollover, usw.), damit die Software dann die entsprechenden Verarbeitungen durchführen kann(Punkte zusammenzählen, ...).

Auszug aus dem Protokoll

Name Kommando Datenbyte
LED On Bonus 1 0x0B 0x00
LED OFF Bonus 2 0x0C 0x01
StartEnd  0xFF 0x00
FAL Reload PWM 0x0D Val

 

Matrixauswertung der Schalter:

Die Strobes werden der Reihe nach aktiviert, das heißt auf Ground gezogen. Wenn nun ein Return auf Ground gezogen wird, heißt das, dass ein Schalter gedrückt wurde. Es können natürlich auch mehere Schalter gleichzeitig gedrückt werden und es werden alle ausgelösten erkannt. Die folgende Grafik veranschaulich das Matrixprinzip. Die leeren Felder sind ungenutzt.