                                                     11.Jan.2026
================================================================
Die Realisierung auf den FPGA-Boards
====================================

          Terasic Cyclone V GX Starterkit
          Terasic DE10-Lite Board

================================================================
Die Konfigurationen liefern ein 640x480/60Hz-VGA-Signal. Jedoch
beträgt die Pixelfrequenz genau 25MHz, das ist etwas unterhalb
des Standards. Das Verhältnis zur Zeilenfrequenz entspricht dem
Standard. Gute VGA-Monitore passen die Pixelfrequenz danach an
die Zeilenfrequenz an. Günstig ist ein 1280x1024 Monitor.  Nur
wenn diese Voraussetzungn vorliegen, erhält man ein gutes Bild.

================================================================
Taktfrequenz der CPU:    Ein Vollzyklus, bestehend aus den
                         Halbzyklen tA und tB, dauert 640 ns

           CPU-Operationen dauern 1 oder 2 oder 3 Vollzyklen

     [  tA   [  tB   [  tA   [  tB   [
---==------==------==------==------==---  cl1
--------========--------========--------  cl2

================================================================
>>> Terasic Cyclone V GX Starterkit

Zur Konfiguration gehören
pc5s.csv, pc5s.vhd, kall.vhd, cpu.vhd, ram32.vhd

Von mir gewählte Einstellungen:
Unused IO-Pins ==> Inputs with weak Pullups (default)
Logik-Pegel    ==> LVTTL 3.3 V

Taster KEY1 hebt CPU-Reset auf, dh.
startet die CPU. KEY0 setzt CPU-Reset.

Die VGA-Schnittstelle besteht aus einer D-Sub-Buchse
und 5 Widerständen.  Zum PS2-Anschluss siehe PS2.png
----------------------------------------------------------------
VGA-Buchse  //  Sxx ist der Stift Nr xx der Stiftleiste 2x20

1/R  --  340 Ohm  --  S02    |    13/HS  --  120 Ohm  --  S10
2/G  --  340 Ohm  --  S04    |    14/VS  --  120 Ohm  --  S08
3/B  --  340 Ohm  --  S06    |    5,6,7,8,10/GND  --  S12/S30
----------------------------------------------------------------
PS2-Buchse  //  1/DAT -- S36 | 5/CLK -- S34
----------------------------------------------------------------
Für VGA und PS2 eignet sich die Platine-1 im Verzeichnis pcb.

================================================================
>>> Terasic DE10-Lite Board

Zur Konfiguration gehören
pd10.csv, pd10.vhd, kall.vhd, cpu.vhd, ram32.vhd

Von mir gewählte Einstellungen:
Unused IO-Pins ==> Inputs with weak Pullups (default)
Logik-Pegel    ==> LVTTL 3.3 V

Configuration Mode ==> Single Compressed Image
                       with Memory Initialisation

Taster KEY1 hebt CPU-Reset auf, dh. startet die CPU.
KEY0 setzt CPU-Reset. KEY1 schaltet ausserdem die
Laufzeit-Anzeige auf die oberen 6 Stellen.
----------------------------------------------------------------
Die Anschlüsse für RS232 und SD-Card wurden mit Pmod-Modulen
von Digilent realisiert.     Zum PS2-Anschluss siehe PS2.png
----------------------------------------------------------------
PS2-Buchse    |  PmodRS232     |  PmodSD
              |                |
1/DAT -- S36  |  3/==> -- S38  |  1/DT3 -- S02  |  3/DT0 -- S06
5/CLK -- S34  |  4/<== -- S40  |  2/CMD -- S04  |  4/CLK -- S08

Sxx ist der Stift Nr xx der Stiftleiste 2x20

Für PS2/RS232/SD-Card gibt es die Platine-2 im Verzeichnis pcb.

================================================================
Testen der programmierten FPGA-Boards
=====================================

Nach Konfiguration des Boards und Aufheben des Resets gebe man
das Kommando =WARE ein. Die Testkarte in Slot4 wird angezeigt.

Das Kommando 4SERI empfängt 32 KByte über RS232 von einem PC.
Als Daten-Buffer dient die obere Hälfte von Slot4. Für Linux-PC
gibt es dazu das Programm sendcard. Format der zu sendenden
Datei cards : 1024 Zeilen a 64 Ziffern (a..f Kleinbuchstaben).

Am PC starte man sendcard. Am Testgerät starte man 4SERI.
Am PC gebe man das abgewartete Zeichen ein (zB. x).
Die Übertragung dauert etwa eine halbe Minute.

Das Kommando 4SERO sendet den Inhalt des Daten-Buffers über
RS232 zum PC. Für Linux-PC gibt es dazu das Programm rececard.

Am PC starte man rececard. Am Testgerät starte man 4SERO.
Am PC gebe man das abgewartete Zeichen ein (zB. x).
Die Übertragung dauert etwa eine halbe Minute.

Am PC vergleiche man gesendete und rückerhaltene Daten.

================================================================
SD-Karte
========

Es können SD-Karten mit 1 oder 2 GByte verwendet werden (keine
SDHC-Karten). Das vorinstallierte Dateisystem wird zerstört.

4SDS /nn   kopiert den Inhalt des Daten-Buffers von Slot4 auf
           die SD-Karte an eine durch /nn adressierte Stelle.

4SDR /nn   lädt die gespeicherten Daten zurück in den Buffer.

----------------------------------------------------------------
Weiteres zur Software der Testkarte auf der Seite SYSCARD.

================================================================
Beschriftung der am FPGA-Board angeschlossenen PC-Tastatur
==========================================================

neue          Original      |   neue          Original
Beschriftung   DE  US       |   Beschriftung   DE  US

  < <=         1            |     Y            Y   Z
  > >=         2            |     Z            Z   Y
                            |
  7|F          3            |     Ä            Ä   '"
  6|E          4            |     Ö            Ö   ;:
  5|D          5            |     Ü            Ü   [{
  4|C          6            |     Sigma        +   ]}
  3|B          7            |
  2|A          8            |     *  '         ß    -
  1|9          9            |     o  "         ´`   =
  0|8          0            |     $  eu        #'  \|
                            |     -  |         ,;  ,<
  BK MV        F1           |     +  %         .:  .>
   -C          F2           |     =  ||        -   /?
   -D          F3           |
   -E          F4           |     DL           Einfg
                            |     can          Entf
  ((m [[m      F5           |     ups          Pos1
  ))m ]]m      F6           |     dns          Ende
                            |     CR           Bild up
  ZB           F7           |     ins          Bild dn
  # &          F8           |
  / !          F9           |     DG           ESC
  \ ?          F10          |
  . ,          F11          |     RB           Win le
  : ;          F12          |     RB           Win ri
                            |     FB           Alt
  UL           ^   `~       |     FB           AltGr
  AM           TAB          |
  SM           Caps         |     BS           Backspace
  UM           Shift le     |     EN           Return
  hb           Shift ri     |     Sh           Strg

----------------------------------------------------------------
DG-Taster: Man drücke auf der Tastatur die Escape-Taste
und dann innerhalb von etwa 5 Sekunden die Enter-Taste.

Druck einer Taste innerhalb von 5 Sekunden nach Loslassen der
Escape-Taste setzt das DG-Signal bis zum nächsten Tastendruck.

----------------------------------------------------------------
Die Tasten der Sonderzeichen 20..2b sind zusätzlich mit
den Sonderzeichen 30..3b beschriftet (Alt-Ebene).

Symbole für Steuerzeichen ins (Einfügen eines Leerzeichens),
can (Herausnehmen eines Zeichens), ups (Text plus Cursor auf
dem Display eine Zeile nach oben), dns (Text plus Cursor auf
dem Display eine Zeile nach unten) und für Cursortasten:

ins   :  kleiner senkrechter Strich und
         rechts daneben Pfeil nach rechts
can   :  kleiner senkrechter Strich und
         rechts daneben Pfeil nach links
ups   :  Dreieck mit Spitze nach oben
dns   :  Dreieck mit Spitze nach unten

up/dn :  Dach mit Spitze nach oben/unten
le/ri :  Pfeil links / Pfeil rechts

----------------------------------------------------------------
Siehe auch auf der Seite SYS-doku den Abschnitt Zeichensatz und
im unteren Drittel den Abschnitt KD-Routinen aus Benutzersicht.

================================================================
Laufzeit-Anzeige am Bildrand des VGA-Monitors
=============================================

An der Tastatur-Schnittstelle ist ein Zähler angeschlossen.
Der Zähler startet bei Ende des Wartens auf einen Tastendruck
und stoppt bei Beginn des Wartens auf einen neuen Tastendruck.

Die Zeit vom Abschluss einer Kommando-Eingabe mit Enter bis
zum Beginn der Kommando-Ausführung und die Zeit vom Ende der
Kommando-Ausführung bis zum Beginn des Wartens auf ein neues
Kommando sind Konstanten. So lässt sich aus dem angezeigten
Zählerstand die Dauer des Kommandos ermitteln.








