Hades logoHades applet banner
MiniCPU

applet icon

The image above shows a thumbnail of the interactive Java applet embedded into this page. Unfortunately, your browser is not Java-aware or Java is disabled in the browser preferences. To start the applet, please enable Java and reload this page. (You might have to restart the browser.)

Circuit Description

Das Applet zeigt die vollständige MiniCPU. Für eine detaillierte Erläuterung vgl. Abschnitt 6.6.6 in Technische Informatik 1.

Einzige Änderung gegenüber dem vorherigen Beispiel ist der neu hinzugefügte 4-bit Zähler (unten mitte). Dieser sogenannte Programmzähler (PC, program counter) übernimmt jetzt die Adressierung des Hauptspeichers (Programmspeichers) und wird nach jedem Befehlszyklus (hier 8 Takte) inkrementiert. dazu im jeweils zweiten Takt eines Befehlszyklus (Zählerstand 010) über Ausgang D5 des oberen ROMs ein Taktimpuls für den Zähler generiert.

Da der Ausgang der Zählers direkt mit dem Adresseingang des Programmspeichers (RAM 74189, unten rechts) verbunden ist, wird nach jeweils 8 Takten die nächste Adresse des Programmspeichers adressiert und im ersten Takt eines Befehlszyklus in das Befehlsregister IR übertragen. Damit sind automatische Abläufe von mehreren Befehlen möglich. Die Befehlsfolgen müssen allerdings zusammen mit allen Daten in der korrekten Reihenfolge im Speicher stehen, Sprünge oder Schleifen sind mit diesem Prozessor noch nicht möglich.

Das jeweilige Programm muss vor dem Starten der MiniCPU in den Hauptspeicher geschrieben werden, und wird nach einem Reset des Prozessors dann Schritt für Schritt automatisch abgearbeitet. Im Beispiel sind natürlich nur maximal 16 Befehle möglich, da der Hauptspeicher insgesamt nur 16 Worte enthält. Durch Öffnen des Dialogfensters für den Speicher (popup-menu, edit) kann der Speicherinhalt während der Simulation beobachtet und auch direkt verändert werden.

Hier noch einmal die Befehlskodierung der MiniCPU:

  op3 op2 op1 op0  |  Mnemo  |  Operation
-------------------+---------+--------------------------
    0   0   0   0  |  NOP    |  no operation
    0   0   0   1  |  LDA    |  load:  accu=(bus)
    0   0   1   0  |  STA    |  store: bus=(accu)
    0   0   1   1  |  ADD    |  add: accu=(accu+datain)
    0   1   0   0  |  SUB    |  sub: accu=(accu-datain)
    0   1   0   1  |  INC    |  increment  accu=(accu+1)
    0   1   1   0  |  DEC    |  decrement  accu=(accu-1)
    0   1   1   1  |  AND    |  and: accu=(accu&datain)
    1   0   0   0  |  OR     |  or:  accu=(accu|datain)
    1   0   0   1  |  XOR    |  xor: accu=(accu^datain)
    1   0   1   0  |  IN     |  in:  accu=(datain)
    1   0   1   1  |  OUT    |  out: dataout=(accu)
    1   1   *   *  |  ---    |  undefined

Welcher Operationsfolge entspricht daher der folgende im Beispiel vordefinierte Inhalt des Hauptspeichers?

  Adresse  |   Datum  |   Operation?
-----------+----------+---------------
  0        |   1      |
  1        |   7      |
  2        |   4      |
  3        |   5      |
  4        |   b      |
  5        |   0      |
  6-f      |   0      |
Zum Steuern der Simulation entweder die verschiedenen Schalter direkt anklicken, oder die folgenden Bindkeys tippen:
TasteEingangKommentar
'c'CTakt Zähler
'r'RReset Zähler
Bitte zunächst einmal einen Reset-Impuls auslösen, um die Schaltung in einen definierten Zustand zu bringen. Anschließend einfach Taktimpulse auslösen, bis das jeweilige Programm aus dem RAM abgearbeitet wurde.

Print version | Run this demo in the Hades editor (via Java WebStart)
Usage | FAQ | About | License | Feedback | Tutorial (PDF) | Referenzkarte (PDF, in German)
Impressum http://tams.informatik.uni-hamburg.de/applets/hades/webdemos/90-tionline/06-minicpu/minicpu.html