Iambic Squeeze-Keyer

- Mode A + Punkt/Strich-Speicher -
1. Motivation

Die Arduino Platform stellt mit Boards und Entwicklungsumgebung ein in vielerlei Hinsicht interessantes Werkzeug zur Entwicklung sog. embedded Systeme zur Verfügung.
Dabei lässt sich ein enger Bezug zu Schaltwerken in der Digitaltechnik herstellen, insbesonders die häufig angewandten Automatentypen Mealy und Moore. Dieser Ansatz kann unter Beachtung gewisser Randbedingungen bei der Programmierung z.B. mit C ebenso wirksam eingebunden werden.
So ist ein wesentliches Merkmal taktsynchroner Schaltwerke, dass sich Inhalte der elementaren Speicher (sog. Flip-Flops) gemeinsam nur bei einer (positiven) Taktflanke verändern. Dadurch ist erst ein deterministisches Verhalten des Gesamtsystems gemäß einer vorgegebenen Spezifikation möglich.
Wird vergleichsweise in C z.B. eine Variable zyklisch und (idealerweise) in äquidistantem zeitl. Abstand verändert, lässt sich ein Bezug zu den Schaltwerken herstellen. Somit entsteht die Möglichkeit einen Prototyp zuerst in Software zu testen, noch vor einer Implementierung in Hardware, z.B. in einem FPGA. Für die Programmierung in einer Arduino-Umgebung, stellt die Platform zwei C-Funktionen zur Verfügung: setup() und loop(). Die erste Funktion setup() wird beim Start (Power Up) einmalig ausgeführt und kann für Initialisierungen genutzt werden. Die zweite Funktion loop() wird in einer Endlosschleife nach ihrer Bearbeitung wieder neu aufgerufen, wobei die Wiederholfrequenz oder Zykluszeit von der Komplexität abhängig ist.

Das vorliegende Projekt einer elektronischen Morsetaste greift o.g. Ansatz auf und setzt die "Kommandos" zweier Paddles einer Mechanik in eine den jeweiligen Buchstaben zugeordnete Folge von Punkte ("dit") und Striche ("dah") um. Das Betätigen eines Paddles schließt einen Kontakt, wodurch eine Folge von Punkte bzw. Striche generiert wird. Bei gleichzeitiger Betätigung beider Paddles entsteht eine automatisch abwechselnde Folge von Punkt und Strich. Die Kunst besteht darin, die Paddles so zu bedienen, dass ein korrektes Symbol aus dem Alphabet gebildet wird. Zur Unterstützung einer möglichst flüssigen Umsetzung dient ein Punkt- bzw. Strichspeicher. Beim Betätigigen eines Paddles während das andere noch aktiv ist, wird diese Aktion gespeichert und ausgeführt, wenn das vorige (gegensätzliche) Zeichen Punkt oder Strich in der zeitlichen Abfolge vollständig gebildet wurde.
Telegrafie wird heute fast nur noch im Bereich des Amateurfunks und kaum mehr kommerziell benutzt. Dort gibt es viele Implementierungen einer elektr. Morsetaste, jedoch häufig mit einem (sehr gewöhnungsbedürftigem) Verhalten des sog. Mode B, Mischformen oder nicht ganz korrekter Umsetzung, was dann zu Irritationen bei der Bedienung führt.
Ziel des Projekts ist daher eine Implementierung mit eindeutigem und nachvollziehbarem Verhalten. Die Umsetzung erfolgt zuerst auf einerm Arduino Uno R4, anschließend in einem FPGA auf einem Entwicklungsboard.

2. Funktionen/Spezifikation

Nachfolgend eine Aufzählung wesentlicher Funktionen der elektronischen Keyers.
Die Bedienung der wichtigsten Grundfunktionen kommt mit nur 3 Taster/Schalter aus (s. Bild 1).
Erweiterte Konfiguration über serielle Schnittstelle möglich.

Bild 1: Bedienung


Alternativ: Konfiguration über Serielle Schnittstelle - tty 9600 Baud
3. Finite State Machine für die Core-Logik
Bild 2: Zustandsautomat des Keyers - Grundlage für die Implementierung

4. Implementierung in Software
- als Vorstufe und Simulation für die Implementierung in einem FPGA -
5. Grafische Benutzer Schnittstelle GUI (t.b.d.)
6. Messungen
7. Implementierung des Keyers mit VHDL
Bild 3: Keyer im Gehäuse mit Squeeze-Paddle

Bild 4: Verbindung mit Controller: