Morse De- und Encoder mittels FPGA 4.0

VGA-Schnittstelle zur visuellen Ausgabe

Die Codebasis stammt hauptsächlich aus dem Projekt „vga-kbd-terminal“ von Johnnyjax, welches bei Github unter folgenden Link verfügbar ist (https://github.com/Johnnyjax/vga-kbd-terminal). Einige nicht benötigte Entitys wurden unsererseits entfernt und der übrige Code entsprechend angepasst. Zur Ausgabe von Zeichen erhält die VGA-Entity ihre Eingabe von der LCD-Entity, dabei werden die ASCII-Daten des LCD übernommen und entsprechend weitergeleitet.

Quellcode - vga_txt_main

Funktionserweiterung und Modi

Neben der Darstellung von Buchstaben auf dem Bildschirm, besteht die möglich die dargestellten Zeichen als Morsecode anzuzeigen. Dazu wurde die Entity „font_rom“ dupliziert, umbenannt und bearbeitet. Die erstellte Entity „morsecode_rom“ enthält die Darstellung der Großbuchstaben A bis Z als untereinander geschriebene Morsezeichen (Einen Pixelpunkt für kurz / mehrere Pixelpunkte ergeben einen Strich für lang). Zum Wechseln zwischen den Modi wird der Schiebeschalter [1] verwendet, deklariert und an die Entitys übergeben wird dieser als „output_mode“. Der Code der Entity „vga_text“ wurde entsprechend ergänzt.

Quellcode - vga_text

Zeilen einfügen und Bildschirm leeren

Zum Einfügen einer neuen Zeile auf dem Bildschirm wird der Schiebeschalter [14] verwendet. Dieser ist deklariert und an die Entitys übergeben als „vga_next“. Bei einem Signalwechsel von 0 (low) auf 1 (high) wird ein Zeilensprung auf dem Bildschirm ausgeführt, sowie die Zeichenfolge „MORSECODE ->“ eingefügt. Der Cursor befindet sich dann immer an der Position hinter dem Pfeil, in der jeweils eingefügten Zeile. Die dekodierten Zeichen vom LCD werden fortlaufend an diese Stelle geschrieben. Um den Bildschirm unabhängig von anderen Prozessen zu leeren, wird der Push-Button [1] „vga_clear“ benutzt. Dies funktioniert ähnlich wie die Backspace Taste auf einer Tastatur, nur das entsprechend alle Zeichen gelöscht und der Cursor zurück an den Anfang springt.

Quellcode - display

Zeichen löschen auf dem Bildschirm und LCD

Um falsche oder versehentliche Eingaben zur korrigieren wurde eine Löschfunktion implementiert. Zum Aktivieren wird ebenfalls ein Schiebeschalter [12] verwendet, dieser ist als „del_switch“ deklariert. Ist der Modus aktiv, also der Schalter (1), kann durch Drücken des Morsetasters oder eines externen Tasters das letzte Zeichen einer Zeichenfolge gelöscht werden. Die betrifft sowohl den LCD als auch die VGA-Ausgabe auf dem Bildschirm. Der Cursor springt dabei nach links und ersetzt das Zeichen an der Cursorposition durch ein Leerzeichen, anschließend bleibt er an seiner Position. Es können weitere Zeichen gelöscht werden oder nach dem Deaktivieren kann dann erneut eine Eingabe erfolgen (siehe auch „Quellcode – display“).

Downloads

CAD STL-Files für 3D-Druck der Teile der Sende-/Empfängereinheit

Datenblatt LM311

Datenblatt LM555

VHDL – Quellcode

Seiten: 1 2 3 4 5 6