TAMS / Java / Hades / applets: contents | previous | next | |||||||||||||
Hades Applets contents visual index introduction std_logic_1164 gatelevel circuits delay models flipflops adders and arithm... counters LFSR and selftest memories programmable logic state-machine editor misc. demos I/O and displays DCF-77 clock relays (switch-le... CMOS circuits (sw... RTLIB logic RTLIB registers Prima processor D*CORE MicroJava Pic16 cosimulation Mips R3000 cosimu... Intel MCS4 (i4004) image processing ... [Sch04] Codeumsetzer [Sch04] Addierer [Sch04] Flipflops [Sch04] Schaltwerke [Sch04] RALU, Min... D-Register Zähler ALU RALU Tristate-Tre... RaluBus RaluLeit RaluRAM MiniCPU CpuAdr [Fer05] State-Mac... [Fer05] PIC16F84/... [Fer05] Miscellan... [Fer05] Femtojava FreeTTS | MiniCPU
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:
| ||||||||||||
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 |