Skip to content

VHDL Gruppenprojekt für das Modul BTE5023 – Elektronische Systeme: Implementation eines RPN-Rechner (reverse Polish notation).

License

Notifications You must be signed in to change notification settings

NikLeberg/vhdl_rpn

Repository files navigation

RPN-Rechner in VHDL

Ein (ungewöhnlicher) Taschenrechner. Erstellt als Projekt für das Modul BTE5023 – Elektronische Systeme. Ziel des Projektes ist auf einem GECKO4-Education einen einfachen reverse Polish notation Rechner zu implementieren. Weiteres kann aus der Aufgabenstellung entnommen werden.

Projektablauf

  1. Aufgabenstellung analysieren
  2. Projekt aufsetzen
    • GitLab
    • ModelSim
    • Quartus
  3. Module implementieren
    • Keypad - (leuen4)
    • 7-Seg Ansteuerung (reusa1)
    • BIN -> BCD, BCD -> BIN Wandler (reusa1)
    • Zahleneingabe (reusa1)
    • LIFO Stack (leuen4)
    • [~] Stack Anzeige LED (reusa1)
    • Addierer (leuen4)
    • Subtrahierer (leuen4)
    • Multiplizierer (leuen4)
    • Dividierer (leuen4)
    • [~] Ablaufsteuerung rpn FSM (reusa1, leuen4)

Projektstruktur

.
├───.vscode     # Optionale Supportdateien um VScode als IDE einzurichten.
├───modelsim    # ModelSim Arbeitsordner, Projektdateien werden mit modelsim_* - Skripts aus dem scripts-Ordner generiert.
├───quartus     # Quartus Arbeitsordner, Projektdateien werden mit quartus_* - Skripts aus dem scripts-Ordner generiert.
├───scripts     # Tcl Skripts um Projektdateien zu generieren.
└───vhdl        # VHDL Quelldateien, beschreiben die benötigten rpn entities.

Erweiterte Erläuterungen sind in den jeweiligen README.md Dateien der Unterordner gegeben.

Simulation

Die Simulation der verschiedenen Entitäten / Modulen und ihren Testbenches lässt sich mit folgenden Befehlen / Skripten ausführen. Die Befehle sind im ./modelsim Unterordner auszuführen.

  1. Kompilieren mit ModelSim:
vsim -c -do ../scripts/modelsim_compile.tcl
  1. Ausführen der Testbenches:
vsim -c -do ../scripts/modelsim_test.tcl
  • (optional) Ansicht der Signalverläufe (öffnet ModelSim GUI):
vsim -c -do ../scripts/modelsim_open.tcl <testbench_name>

Synthese

Um das Projekt mit Quartus zu synthetisieren sind folgende Befehle einzugeben. Die Befehle sind im ./quartus Unterordner auszuführen.

  1. Generierung der Projektdateien:
quartus_sh -t ../scripts/quartus_project.tcl
  1. Synthese:
quartus_sh -t ../scripts/quartus_compile.tcl
  1. Volatiles Laden auf das GECKO-Board:
quartus_pgm -c USB-Blaster --mode jtag --operation='p;rpn.sof'
  • (optional) Permanentes Laden auf das GECKO-Board:
quartus_cpf -c ../../scripts/quartus_flash.cof; quartus_pgm ../../scripts/quartus_flash.cdf
  • (optional) Öffnen der Quartus GUI:
quartus rpn.qpf

Bedienung

Wurde das GECKO-Board mit dem Bitfile programmiert und das PmodKYPD ist angeschlossen, so kann er als funktionstüchtiger RPN-Rechner verwendet werden. Die Bedienung erfolgt über die Tasten 0 - F:

  • Ziffern 0 - 9: Zahleneingabe
  • Taste A: Addieren
  • Taste B: Subtrahieren
  • Taste C: Multiplizieren
  • Taste D: Dividieren
  • Taste E: "Enter" oder verschieben einer Zahl in den Stack
  • Taste F: Vorzeichenwechsel

Bis zu zehn Zahlen sind im Stack (die LED-Matrix) in binärer Repräsentation sichtbar. Jede Zeile an LEDs steht für eine Zahl:

LED11 LED10 LED9:LED0
an wenn belegt an wenn negativ Zahl in binärer Repräsentation

Zum Zurücksetzen des Rechners (Power on Reset) kann die Taste SW6 des GECKOS gedrückt werden.

Stand des Projekts

  • Die Haupt FSM die die einzelnen Teile des rpn Rechner zusammensetzen sollte funtioniert (noch) nicht korrekt. Dies konnte leider nicht in eine vernünftigen Zeit behoben werden.

Lizenz

MIT © N. Leuenberger, A. Reusser.

About

VHDL Gruppenprojekt für das Modul BTE5023 – Elektronische Systeme: Implementation eines RPN-Rechner (reverse Polish notation).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published