Adam/1


#1

Die Autonomous Digital Adding Machine 1, kurz ADAM/1, ist ein elektronischer, digitaler computer, basierend auf ICs der 74er Serie. Der Prozessor hat eine Wortbreite von 16 bit (Adressen und Daten), implementiert ein microprogrammierbares CISC instruction set und unterscheidet nicht zwischen Daten- und Befehlsspeicher (Von Neumann Architektur). Das Design wurde ursprünglich auf mehreren Servietten skizziert und mittlerweile zum Großteil in ASCII art Zeichnungen übertragen.

Ausführungseinheit
Die Ausführungseinheit des Prozessors besteht aus mehreren Tri-state Modulen. Jedes Modul hat zwei Operand Register (74HC574): A und B. Alle A register teilen sich eine gemeinsame Steuerleitung und alle B register teilen sich eine gemeinsame Steuerleitung, so kann das aktuelle Bus-wort in alle A bzw alle B register gleichzeitig geschrieben werden. Jedes Modul hältt sein Ergebnis über einen tri-state buffer zurück und kann einzeln selektiert werden.

Zum Selektieren der einzelnen Module dient ein 5 bit modul Addressbus (SRC auf dem Frontpanel), der entsprechend dekodiert wird (z.T. von den modulen selbst, z.T. von einem decoder Modul).

Aktuell sind folgende Module vorgesehen:
Register Modul (8 register, einzeln selektierbar, Schreibselekt über 3 bit DST auf dem Frontpanel, high-aktive Schreibleitung: REGW auf dem Frontpanel)
Konstanten Modul (Konstanten 0, +1, -1 und interrupt vektoren für die Steuereinheit)
Addierer modul mit invertierbarem B register (Einerkomplement addition)
Generisches logik modul (74HC00 oder pinkompatible logik ICs)
Speicher & I/O bus modul (A register für addresse, direktes durchreichen des Buses zu lesen/schreiben)
Shift modul (B register für rechtshift/rotation bzw temporäres register)
Steuereinheit
Die Steuereinheit basiert auf einer Diodenmatrix statemachine für Instruction fetch & decode. Das Ausführen der Instruktions wird von einer ROM basierten statemachine erledigt. Jede Instruction ist exakt 16 bit weit und besteht aus einem 6 bit Opcode, immediate flag (0=kein immediate, 1=immediate), einem 3 bit skip modus (instruction je nach flag bits überspringen), 3 bit Quellregister und 3 bit Zielregister. Das instruction Laden, eventuell Immediate laden und Auswertung des Skipmodus wird von der Diodenmatrix statemachine erledigt.

Die Steuerlogik verwendet das Register 7 als Program Counter. Zum Inkrementieren wird das Addierermodul verwendet.

Der Prozessor verfügt über ein Statusregister mit derzeit 5 flags: user mode, interrupt enabled, sign, zero und carry.

Ist das user mode flag nicht gesetzt, wird das Register 6 als stack pointer verwendet. Ist das user mode flag gesetzt, wird das Register 5 verwendet und instructions die auf das Register 6 zugreifen werden ignoriert.

Das user mode flag wird über den perepherie bus rausgeführt zur eventuellen späteren Verwendung durch eine bereits geplantpaging MMU.

  • Hardware Aufbau
    Um Konstruktion und Testen der Hardware einfach zu halten wurde die Ausführungseinheit in einem Bit-slice design entworfen. Die Module der Ausführungseinheit sind für 8 bit entworfen und so designed, dass sie einfach kaskadiert werden können.

  • Status
    Die Planung ist weitgehend vollständig (Details an der Steuereinheit fehlen noch)
    Das Frontpanel ist zum Großteil aufgebaut und verwendbar
    Registerfile und Backplane für 8 bit wurden gebaut und getestet
    Kategorie: Projekt

Front panel

Front panel von hinten

Backplane mit Register File