EDDA 3 - ein früher transistorisierter Prozessrechner

Hauptkategorie: Für die Öffentlichkeit Kategorie: Fachartikel Erstellt: Dienstag, 20. April 2010 Zuletzt aktualisiert: Freitag, 14. August 2015 Veröffentlicht: Montag, 19. April 2010 Geschrieben von Jörg Hoppe

(Dieser Artikel ist hier auf Englisch verfügbar, Danke an Mark Gerber für die Übersetzung)

EDDA 3 - An Early Transistorized Process Computer

Bei der Carl Schenck-AG, Darmstadt wurde Mitte der 1960er Jahre der Prozessrechner "EDDA 3" entwickelt, der in der industriellen Wäge- und Dosierungtechnik eingesetzt wurde. Konstrukteur war Herr Dipl. Ing. Rudolf Meyer. Der Autor 7dieses Artikels ist mit dem Sohn von Herrn Meyer befreundet und hat mit diesem schon im Alter von 15 Jahren aus alten EDDA-Platinen kostbare Transistoren auslöten dürfen. Im Februar 2010 ergab sich wieder ein Kontakt, und Herr Meyer hat freundlicherweise wertvolle Originalunterlagen und persönliche Erinnerungen bereitgestellt.


Alles folgende ist dem 160seitigen "EDDA 3"-Anwenderhandbuch entnommen:

manual_klein

Systembeschreibung zum digitalen Prozeßrechner EDDA 3

Dipl. Ing. Rudolf Meyer


Carl Schenck Maschinenfabrik GmbH - 61 Darmstadt
Darmstadt, im Nov. 1969

 

 

Inhaltsverzeichnis:
===================

1. Einleitung
2. Der Prozeßrechner EDDA 3
3. Elemente der programmgesteuerten digitalen
   Datenverarbeitung
4. Aufbau und Arbeitsweise der EDDA 3
5. Die Programmierung der EDDA 3
6. Anschluß äußerer Schaltungen an die Eingabe-
   und Ausgabekanäle
7. Erweiterung der Kapazität der EDDA 3
8. Prüfung der EDDA 3
9. Technische Angaben

 


EDDA3-Label EDDA3-Schenck_logo

 

Die "EDDA 3"

Der Name "EDDA" bedeutet: "Elektronische Digitale Datenverarbeitungs-Anlage".

Die EDDA ist ein Prozessrechner aus dem Jahre 1969, der zum Steuern und Regeln von Produktionsanlagen eingesetzt wurde. In Funktion und Architektur finden sich Ähnlichkeiten zu frühen Mikrocontrollern (z.B. PIC1640 von 1976), die Bauform ist aber nicht "single-chip", sondern - zeittypisch - die "Schrankwand".

Ungewöhnlich ist die dezimale Darstellung von Adressen und Daten, sowie die interne Ziffern-serielle Datenverarbeitung ... das kennen wir heute vor allem aus dem ENIAC. Trickreich ist auch ein Kernspeicher-Schieberegister, das mit minimalem Aufwand durch Doppel-Fädelung von Kernen gebaut wurde.

 

schrank_geschlossen_offen

 

system_schema

Technik

Der Entwurf stammt von 1965, Vorgängermodelle waren EDDA und EDDA2. Schaltungselemente sind diskrete Transistoren und Kernspeicher. Das Design ist modular und erweiterbar, Module bestehen aus Schaltschränken, Einschüben und Leiterplatten. Arbeitstakt ist 50 kHz.

leisterplatten_ausgezogen

einschuebe

 

Einschuebe_schema

Architektur

Die EDDA arbeitet in Havard-Architektur mit memory-mapped I/O. Programmspeicher ("Programm-Matrix") und Daten-Adressraum sind logisch vollkommen voneinander getrennt. Über den Datenaddressraum sind zugreifbar: Konstanten, Kernspeicher, Register mit Spezialfunktionen (die eigentlich Teil der CPU sind) und Register zum Ansteuern von Peripherie.

architektur_schema

Die EDDA3 arbeitet nicht binär, sondern dezimal! Sie arbeitet in Ganzzahl-Arithmetik.

Wortbreite des Datenspeichers: 4 Dezimalstellen, also sind Werte von 0 bis 9999 darstellbar.

Wortbreite des Programmspeichers ("Programm-Matrix"): 30 Dioden-Lötplätze.

Adressbreite für Programcode und Daten: 2 Dezimalstellen. Also können Programme aus 100 Befehle direkt ablaufen, und die Speicherzellen 0-99 können direkt addressiert werden. Daher ist auch der Programcounter ("Befehls-Nr") nur zwei Dezimalstellen breit.

Grösse des Programspeichers ("Programm-Matrix") im Grundaufbau: 100 Befehle. Es gibt zusätzlich eine Adressraum-Umschaltung über ein Segmentregister, so dass maximal 10 Bänke mit je 100 Befehlen abgearbeitet werden können.

Grösse des Datenspeicherns im Grundausbau: 100 Adressen. Davon 30 Kernspeicherzellen, 6 Spezialregister (Schieberegister, Befehls-Nr, Indexaddresse), der Rest ist für Peripherie reserviert.

Weitere Kernspeichermodule können hinzugefügt werden, diese können dann nur indirekt über das Indexregister 99 adressiert werden.

Wie bei so vielen anderen Rechnerarchitekturen fällt auf, dass der Grundaddressraum (hier: Adressen 00 bis 99) nicht ausreicht, um die möglichen Erweiterungen in Speicher und Peripherie zu adressieren. Auch in der EDDA 3 werden Zusatzmodule daher entweder indirekt (Register 64/99) oder über Segmentregister (51/59) adressiert.

EDDA3-TD1

EDDA3-TD2

CPU und Befehlssatz

Der Prozessor besteht aus Programmzähler ("Befehls-Nr"), Befehlsentschlüsselung, Puffern, Takterzeugung, und Rechenwerk, verteilt auf 20 Einsteckkarten. Intern arbeitet er ziffern-seriell, d.h. es werden die vier Dezimalstellen der Datenworte nacheinander addiert bzw. subtrahiert. Das Addierwerk für zwei einstellige Dezimalzahlen ist als Diodenmatrix ausgeführt, die die Ergebnisse der möglichen Additionen tabelliert.

Alle Befehle arbeiten direkt auf dem Speicher ("Memory-Memory-Architektur"), es gibt - mit Ausnahme des zwischengespeicherten Programmzählers - keine CPU-Register.

Die EDDA 3 CPU verarbeitet nur drei (!) verschiedene Befehlstypen, die nur leichte Varianten voneinander sind. Diese sind:

  1. Speicheradresse X + Speicheradresse Y => Speicheradresse Z
  2. Speicheradresse X - Speicheradresse Y => Speicheradresse Z
  3. Konstante X - Speicheradresse Y => Speicheradresse Z
    (Das Minuszeichen wird hier "(-)" statt "-" geschrieben)

Jeder Befehl ist also eine Addition oder Subtraktion. Daten können unverändert kopiert werden, wenn ein Operand die Konstante "0" an Adresse 0 ist (siehe unten "Daten-Adressraum"). Da der Programmcounter auch im Adressraum lag, konnten Sprünge durch direktes Schreiben in den PC an Adresse 50 realisiert werden. Wird das Rechenergebnis nicht benötigt (z.B.: bei reinen Tests), kann es in das Dummy-Register Nr 69 geschrieben werden. Die Konstante in Befehlsform 3 kann 00 bis 99 sein. Über die Adressen 0 bis 2 kann auf die 4stelligen Konstanten 0, 1 und 1000 zugegriffen werden.

In jedem Befehl kann das spezielle Sprungflag "PS" gesetzt sein. Dann wird nach der Befehlsausführung der nächste Befehl übersprungen, wenn das Ergebnis grösser oder gleich 0 ist  ("Skip on Non-Negative"). Der übersprungene Befehl ist sinnvollerweise ein Sprung an eine andere Programmadresse, geschrieben in der Befehlsform 3 als "Konstante Zieladresse(-) 0 => Speicheradresse 50".

Wegen ihres minimalistischen Befehlssatzes ist die EDDA3 auch für die theoretische Informatik interessant. Sie implementiert den beinahe kleinstmöglichen Befehlssatz, der noch Turing-vollständig ist. Eine EDDA3 kann im Prinzip jeden möglichen anderen Computer emulieren! Sie beherrscht nämlich den "Subtract and branch if negative" Befehl, siehe den Wikipedia Artikel über extreme RISC Architekturen: "One instruction set computer (OISC)". Dort wird der OISC auch als URISC (Ultimate Reduced Instruction Set Computer) bezeichnet, aber als rein theoretisches Konzept behandelt. Die EDDA 3 ist ein real existierender OISC.

Programmspeicher

Der Programmspeicher ("Programm-Matrix") besteht im Grundausbau aus bis zu 10 Einsteckkarten ("Programmleiterplatten"). Die Programmleiterplatten werden in Steckplätze gesteckt, die der Programmadresse entsprechen. Auf einer Steckkarte sind per Diodenmatrix jeweils 10 aufeinanderfolgende Befehle definiert. Der "ROM"-Speicher wurde also zellenweise zusammengesteckt, das Vorgehen ähnelt ein wenig der Verwendung von Lochkarten.

 Der Programmierer kodierte (hier ist dieses Wort wirklich am Platz) die Befehle durch Einlöten von Dioden in die Matrix. Ein Befehl besteht aus 32 Dioden-Bits, diese hohe Wortlänge ergibt sich aus dem Zwang, die drei numerischen Konstanten X,Y,Z pro Befehl zu definieren. Assembler oder gar Compiler gab es nicht, lediglich Hilfsaufdrucke auf den Diodenplatinen.

programmleiterplatte

Grundspeichergrösse ist 100 Befehle, adressiert über den Programmzähler ("Befehls-Nr") in Datenadresse 50. Zusatzeinschübe erlauben bis zu 1000 Befehlen, diese werden über Schreiben des Segmentregisters in Datenadresse 51 umgeschaltet.

Einige Programmadressen haben Sonderfunktionen:

 

Adresse Funktion
00 Startadresse
01 Fehlerexception, enthält Sprung auf Fehlerbehandlung
02 .. 98 normale Programmbefehle
99 letzter Befehl in eine Speicherbank, nächster Befehl ist 00 derselben Speicherbank.

 

Daten-Adressraum ("Adressenplan")

Im Grundausbau 100 Adressen, mit verschiedenen Funktionen. Datenwerte sind immer 4 Dezimalstellen breit.

Adressen Funktion
0 bis 2 Konstanten: 0, 1 und 1000
3, 4 Verschiebespeicher ("shift-register"), ausgeführt durch speziellen, doppelt gefädelten Kernspeicher. Ein Wert, der nach Adresse 3 geschrieben wird, erscheint in Adresse 4 um eine Dezimalstelle nach links verschoben, und umgekehrt.
Wichtig für Multiplikation oder Division.
5 bis 34 Allgemeiner Kernspeicher: 29 vierstellige Zahlen
40 Eingabe: Externer Ein/Ausschalter: dargestellt als 0000 oder 0001.
41 bis 49 vierstellige Eingabekanäle, abhängig von der Bestückung.
50 Befehlsnummer = "program counter". Nur die niedrigsten zwei Ziffern 00 bis 99 sind gültig. (entspricht dem Register "PCL" der PIC1640-Microcontroller)
51

Die beiden höheren Ziffern des "program counter". Nötig, falls der Programmspeicher auf über 100 Zellen erweitert wird. Macht dann im Prinzip eine Adressraum-Umschaltung ("bank-switching"), wie das CS "segment-register" der 80x86 CPU's, und entspricht dem Register "PCLATH" der PIC1640-Microcontroller.

60 Schreiben löscht gleichzeitig Adresse 61 bis 64
61 bis 64 Ausgabekanäle mit je einer Dezimalziffer
64 Doppelfunktion: Wert für das Indexregister an Adresse 99.
(entspricht dem Register "FSR" des PIC1640).
65 bis 68 Für Zusatzeinschub "EDA1":  4x4 Nixieröhren.
69 Dummy-Register. Dient als Ziel für Rechenergebnisse, die nicht benötigt werden (für Tests).
70 bis 89 Reserviert für Zusatzeinschübe (siehe "Peripherie")
70 Zum Ansprechen der Kernspeichererweiterungen EDK1 (mit 168 Zahlenspeichern) oder EDK2 (mit 200 Zahlenspeichern).
Kernspeicher-Adresseregister: Auswahl einer Kernspeicherzelle.
71 Kernspeicher-Informationsregister: Datenfenster auf eine Kernspeicherzelle.
99 Indexregister. Wird in einem Befehl die Adresse "99" verwendet, so wird nicht die feste Speicherzelle 99 gelesen oder geschrieben, sondern die jeweilige Adresse wird aus Speicherzelle "64" geholt (entspricht dem Register "INDF" des PIC1640).

 

Peripherie

An die EDDA 3 konnten grosse Mengen verschiedener Peripheriegeräte flexibel angeschlossen werden.

Eingabegeräte waren zum Beispiel Tastatur, Waagen und Schalter.

Ausgabegeräte waren Leistungschalter über Thyristoren zu Ansteuerung von Ventilen, oder Motoren, oder 4 stellige Nixie-Anzeigen.

Insgesamt kann die "EDDA 3" auf 1400 Ein/Ausgabe-Kanäle erweitert werden! Diese sind hierarchisch angeordnet:

  • An den EDDA3 Rechner wird der Hauptverteiler EDEA1 angeschlossen.
  • Der Hauptverteiler EDEA1 hat maximal 7 Schrankverteiler EDEA2
  • ein Schrankverteiler EDEA2 hat maximal 10 Kanaleinschübe EDEA3.
  • ein Kanaleinschub EDEA3 hat innerhalb eines EDDA-Systems eine eindeutige Adresse (00 bis 99) und enthält Kanäle in Form von Leiterplatten an den Datenadressen 70 bis 89.

Jeder Kanaleinschub EDEA3 belegt dieselben Adressen 70 bis 89 im Datenadressraum. Aber nur jeweils ein Kanaleinschub ist an die EDDA3 durchgeschaltet, die Nummer dieses Kanaleinschubs wird in Datenregister 65 geschrieben.

EA-System_schema

Es gab folgende zusätzliche Ein/Ausgabekanäle:

ESEA11: Kontakteingabe (Schalterabfrage).

ESEA12: Zahleingabe 1-aus-10.

ESEA13: Zahleneingabe BCD 4stellig.

ESEA14: Kontaktausgabe Flipflop für 4 REED-Kontakte.

ESEA15: Zahlen-parallel-Ausgabe, 2-aus-5 Code.

ESEA32: Kontaktausgabe Monoflop für 4 REED Kontakte (Impulsausgabe).

EDEA5: Extraschrank zur Eingabe grosser digitaler Datenmengen: 400 mechanische Kontakte mit "nur" 47 Leiterplatten.

Eine Beispielanwendung

Das EDDA 3-Handbuch zeigt als Einführung in die Programmierung folgende kleine Beispielanwendung:

Steuerungsaufgabe: Dosierung

Ein Behälter soll mit einer bestimmten Menge einer Flüssigkeit gefüllt werden. Die Menge wird über Tastatur eingegeben.

einsatz_aufbau

Flussdiagramm:

einsatz_flussdiagramm

Programm:

einsatz_programm

Betriebssicherheit

Da die EDDA 3 industriell eingesetzt wurde und teure, komplexe Produktionsanlagen steuerte, musste sie sehr zuverlässig sein. Dazu dienten folgende Maßnahmen:

1) Nach jedem Programmbefehl wird geprüft, ob das Ergebnis wirklich in den Kernspeicher oder in ein Peripherieregister geschrieben wurde ("Kontrolltakt"). Im Fehlerfall wird der aktuelle Befehl mehrfach wiederholt. Dadurch wird die Integrität des Kernspeichers gewährleistet, und mit der Peripherie kann ein einfaches Handshake durchgeführt werden. Dauert die Befehlswiederholung zu lange, wird ein Sprung nach Programmadresse 01 ausgeführt, das entspricht einer "bus timeout exception" in modernen CPU's. Die maximale Wiederholungsdauer im Fehlerfall kann extern zwischen 5 Millisekunden und 2 Sekunden eingestellt werden.

 

2) Das Handbuch enthält detaillierte Verfahren zur Fehlersuche, vom Ablaufplan zur Fehlerlokalisierung bis zu Mess- und Löt-Anweisungen:

stoerungssuche

loeten

 

3) Lampenleisten konnten auf verschiedene Steckkarten aufgesetzt werden, um interne Spannungspegel zu visualisieren.

 

 4) Zwei EDDA's konnten zu einem ausfallsicheren Verbund zusammengeschaltet: wenn eine EDDA ausfiel, wurde automatisch auf ein Stand-By Gerät umgeschaltet.

 

Die EDDA wurde von der PTB geprüft und für eichamtlichen Verkehr zugelassen wurde, das bedeutet, "es ist amtlich bescheinigt, daß sie entweder richtig rechnet oder ein Störsignal abgibt".

Einsatzgebiete

Es wurde vermutlich 12 bis 25 EDDA 3 eingesetzt. Der Einsatz begann 1969 (Datum des User-Manuals), im Jahr 2004 war anscheinend immer noch eine EDDA 3 in Betrieb. Der Konstrukteur, Herr Dipl.-Ing Meyer, berichtet 2010 in einer eMail:

"Sie fragten nach der Anzahl der gebauten Eddas. So genau weiß ich das nicht, denn nach den ersten Anlagen wurden die weiteren nicht mehr von uns, der Entwicklungsabteilung, sondern von der für Waagen zuständigen Produktabteilung bearbeitet. Ich schätze, es waren ein bis zwei Dutzend. Vor einigen Jahren, (vielleicht 6 oder 8) traf ich einen meiner ehemaligen Mitarbeiter, längst im Ruhestand, der privatim die noch laufenden EDDAs betreute und gegebenfalls reparierte. Er berichtete, daß damals immer noch eine lief und brav arbeitete.

Das Vormodell, EDDA 2, stand in der Koikerei Anna bei Aachen  auf einem zugigen Bahnsteig und belud Züge mit einem genauen Gewicht Koks. Das war noch ein ganzer Schaltschrank anstelle eines Doppeleinschubs. EDDA 1 war ein Entwurf.

Ich erinnere mich an eine Futtermittelfabrik in Koblenz, wo Viehfutter nach unterschiedlichen Rezepten (in Lochkarten) automatisch zusammengemixt wurden, dann, im Prinzip das gleiche, Harrybrot in Hannover mit Backrezepten, eine Chemiefabrik im Harz, wo man Latex zusammenmixte, eine Futtermittelfabrik in Mannheim, drei gleiche EDDAs für Farbwerke Höchst, womit die Farbdosen, wie wir im Baumarkt kaufen, befüllt wurden. Damit das schnell ging, war ein Lernverhalten einprogrammiert, womit der ideale Abschaltzeit ermittelt wurde, damit die Farbe, die noch in Luft war, gerade die noch fehlende Menge war.

Und so weiter, bis zum Einsatz in der Fördertechnik, ein Paketsortiersystem bei Lufthansa ...

NUR 25 Geräte - das klingt, als wären die über den Ladentisch verkauft worden. Die waren jeweils Bestandteile einer Anlage, die eine ganze Abteilung in der Regel monatelang beschäftigt hat, mit wochenlangen oder sogar monatelangen Inbetriebnahmen."

 

Zugriffe: 8579