PREVIEW
Control Unit

Control Unit

Advanced signal_cellular_alt Advanced schedule 40 min

Interactive Circuit

Steuerwerk

Übersicht

  • Zweck: Das Steuerwerk ist die koordinierende Komponente der 8-Bit-Computerarchitektur von DigiSim. Es erzeugt die notwendigen Steuersignale, um den Befehlszähler, den Speicher (RAM), das Befehlsregister, die ALU, das Flagregister und weitere Komponenten so zu koordinieren, dass ein vollständiger Befehlssatz ausgeführt werden kann.
  • Symbol: Das Steuerwerk wird durch einen rechteckigen Block mit mehreren Eingangs- und Ausgangspins dargestellt, über die es mit den verschiedenen CPU-Komponenten verbunden ist.
  • DigiSim.io-Rolle: Das Steuerwerk ermöglicht die Realisierung eines vollständigen, funktionsfähigen 8-Bit-Computers, indem es alle Systemkomponenten über einen Hol-Decodier-Ausführungs-Speicher-Zyklus korrekt sequenziert und steuert.

Steuerwerk-Komponente

Funktionsbeschreibung

Zustandsautomatenbetrieb

Das Steuerwerk arbeitet als endlicher Automat mit vier Zuständen, die zyklisch durchlaufen werden:

  1. FETCH (Holphase): Der nächste Befehl wird aus dem Speicher gelesen
  2. DECODE (Decodierphase): Der Befehl wird decodiert und der Befehlszähler inkrementiert
  3. EXECUTE (Ausführungsphase): Die durch den Befehl spezifizierte Operation wird ausgeführt
  4. STORE (Speicherphase): Ergebnisse werden gespeichert und Flags bei Bedarf aktualisiert

Eingänge und Ausgänge

Eingänge (7 Pins):

Pin Pin-Name Typ Beschreibung
0 CLK Eingang Systemtakt für synchronen Betrieb
1 RST Eingang Reset-Signal zur Initialisierung des Steuerwerks
2 OP0 Eingang Opcode-Bit 0 vom Befehlsregister
3 OP1 Eingang Opcode-Bit 1 vom Befehlsregister
4 OP2 Eingang Opcode-Bit 2 vom Befehlsregister
5 OP3 Eingang Opcode-Bit 3 vom Befehlsregister
6 Z_FLAG Eingang Null-Flag vom Flagregister für bedingte Sprünge

Ausgänge (18 Pins):

Pin Pin-Name Typ Beschreibung
0 PC_INC Ausgang Befehlszähler inkrementieren
1 PC_LD Ausgang Befehlszähler laden (für Sprünge)
2 PC_OE Ausgang Ausgangsfreigabe Befehlszähler (auf Adressbus)
3 MEM_RD Ausgang Lesefreigabe Speicher
4 MEM_WR Ausgang Schreibfreigabe Speicher
5 RAM_OE Ausgang Ausgangsfreigabe RAM (auf Datenbus)
6 IR_LD Ausgang Befehlsregister laden
7 IR_ADDR_OE Ausgang Ausgangsfreigabe IR-Adresse (auf Adressbus)
8 ALU_OP0 Ausgang ALU-Operationscode-Bit 0
9 ALU_OP1 Ausgang ALU-Operationscode-Bit 1
10 ALU_OP2 Ausgang ALU-Operationscode-Bit 2
11 ALU_OE Ausgang Ausgangsfreigabe ALU (auf Datenbus)
12 ACC_LD Ausgang Akkumulator laden
13 ACC_OE Ausgang Ausgangsfreigabe Akkumulator (auf Datenbus)
14 FLG_LD Ausgang Flagregister laden
15 HALT Ausgang Anzeige für Systemhalt
16 STATE0 Ausgang Zustandsbit 0 (LSB der 2-Bit-Zustandskodierung)
17 STATE1 Ausgang Zustandsbit 1 (MSB der 2-Bit-Zustandskodierung)

Zustandskodierung (STATE1:STATE0):

  • 00 → FETCH (Holphase)
  • 01 → DECODE (Decodierphase)
  • 10 → EXECUTE (Ausführungsphase)
  • 11 → STORE (Speicherphase)

Befehlssatzarchitektur

Das Steuerwerk unterstützt einen Befehlssatz mit 16 Befehlen und 4-Bit-Opcodes:

Opcode Hex Mnemonik Beschreibung Operation
0000 0x0 NOP Keine Operation PC ← PC + 1
0001 0x1 LDA addr Akkumulator laden ACC ← M[addr]
0010 0x2 STA addr Akkumulator speichern M[addr] ← ACC
0011 0x3 ADD addr Zum Akkumulator addieren ACC ← ACC + M[addr]
0100 0x4 SUB addr Vom Akkumulator subtrahieren ACC ← ACC - M[addr]
0101 0x5 AND addr Logisches UND ACC ← ACC & M[addr]
0110 0x6 OR addr Logisches ODER ACC ← ACC | M[addr]
0111 0x7 XOR addr Logisches Exklusiv-ODER ACC ← ACC ^ M[addr]
1000 0x8 NOT Logisches NICHT ACC ← ~ACC
1001 0x9 SHL Linksschieben ACC ← ACC << 1
1010 0xA SHR Rechtsschieben ACC ← ACC >> 1
1011 0xB JMP addr Unbedingter Sprung PC ← addr
1100 0xC JZ addr Sprung bei Null if (Z=1) PC ← addr
1101 0xD JNZ addr Sprung bei Nicht-Null if (Z=0) PC ← addr
1110 0xE LDI Unmittelbar laden Reserviert für zukünftige Nutzung
1111 0xF HLT Halt Ausführung anhalten

Befehlsformat

Bit-Position 7 6 5 4 3 2 1 0
Feld OPCODE (4 Bit) OPERAND (4 Bit)
Beschreibung Auszuführende Operation Speicheradresse/Wert

Mikrocode-Architektur

Erzeugung der Steuersignale

Das Steuerwerk verwendet einen Mikrocode-ROM-Ansatz, bei dem jeder Befehl in Mikrooperationen über die vier Zustände hinweg zerlegt wird. Jede Kombination aus Opcode und Zustand erzeugt einen spezifischen Satz von Steuersignalen.

Beispiel: Befehl LDA (Akkumulator laden)

FETCH-Zustand:

  • PC_OE = 1 (PC steuert den Adressbus an)
  • MEM_RD = 1 (Befehl aus dem Speicher lesen)
  • IR_LD = 1 (Befehl in das IR laden)

DECODE-Zustand:

  • PC_INC = 1 (PC auf den nächsten Befehl inkrementieren)

EXECUTE-Zustand:

  • IR_ADDR_OE = 1 (IR-Adresse steuert den Adressbus an)
  • MEM_RD = 1 (Daten von der Speicheradresse lesen)

STORE-Zustand:

  • RAM_OE = 1 (RAM steuert den Datenbus an)
  • ACC_LD = 1 (Daten in den Akkumulator laden)
  • FLG_LD = 1 (Flags aktualisieren)

Bussteuerung und Tri-State-Verwaltung

Das Steuerwerk verwaltet Buskonflikte sorgfältig, indem es sicherstellt, dass zu jedem Zeitpunkt nur eine Komponente jeden Bus ansteuert:

  • Adressbus: Gesteuert durch PC_OE oder IR_ADDR_OE
  • Datenbus: Gesteuert durch RAM_OE, ALU_OE oder ACC_OE

Integration mit anderen Komponenten

Komponentenkompatibilität

Das Steuerwerk ist so konzipiert, dass es nahtlos mit den vorhandenen Komponenten von DigiSim zusammenarbeitet:

  • 8-Bit-ALU: Empfängt Operationscodes (ALU_OP0-2) und liefert Ergebnisse mit Flags
  • Befehlszähler: Gesteuert über die Signale PC_INC, PC_LD und PC_OE
  • RAM (256×8): Verwaltet über die Signale MEM_RD, MEM_WR und RAM_OE
  • Befehlsregister: Wird über IR_LD geladen und liefert die Opcode-/Adressaufteilung
  • Flagregister: Wird über FLG_LD aktualisiert und für bedingte Sprünge gelesen (Z_FLAG)
  • Akkumulator: Gesteuert über die Signale ACC_LD und ACC_OE

Signaltiming

Das Steuerwerk gewährleistet die korrekten Setup- und Hold-Zeiten für alle Komponenten:

  1. Adress-Setup: Adresssignale sind vor Speicheroperationen stabil
  2. Datenvalidität: Daten sind gültig, wenn Ladesignale aktiv sind
  3. Taktsynchronisation: Alle Zustandsänderungen erfolgen an steigenden Taktflanken
  4. Reset-Verhalten: Sofortiger asynchroner Reset in einen bekannten Zustand

Anwendungsbeispiele

Einfaches Programm: Zwei Zahlen addieren

; Zwei im Speicher abgelegte Zahlen addieren
0x0: LDA 0x8    ; Erste Zahl von Adresse 0x8 laden
0x1: ADD 0x9    ; Zweite Zahl von Adresse 0x9 addieren
0x2: STA 0xA    ; Ergebnis an Adresse 0xA speichern
0x3: HLT        ; Ausführung anhalten
...
0x8: 0x05       ; Erste Zahl (5)
0x9: 0x03       ; Zweite Zahl (3)
0xA: 0x00       ; Speicherort für das Ergebnis

Schleifenbeispiel: Von 1 bis 10 zählen

; Von 0 bis 10 zählen
0x0: LDA 0x8    ; Zähler laden
0x1: ADD 0x9    ; 1 addieren
0x2: STA 0x8    ; Zähler speichern
0x3: SUB 0xA    ; 10 subtrahieren
0x4: JNZ 0x0    ; Bei Nicht-Null zurückspringen
0x5: HLT        ; Bei Fertigstellung anhalten
...
0x8: 0x00       ; Zähler
0x9: 0x01       ; Konstante 1
0xA: 0x0A       ; Konstante 10

Technische Hinweise

Taktanforderungen

  • Mindestfrequenz: 1 Hz für didaktische Beobachtung
  • Maximalfrequenz: Begrenzt durch die Signallaufzeiten der Komponenten
  • Tastverhältnis: 50 % empfohlen für optimale Timing-Reserven

Reset-Verhalten

  • Asynchroner Reset: Setzt den Zustand sofort auf FETCH
  • Signal-Löschung: Alle Steuersignale werden auf den inaktiven Zustand zurückgesetzt
  • Halt-Wiederherstellung: Erfordert einen Reset, um die Ausführung wieder aufzunehmen

Leistung

  • Alle Befehle: 4 Taktzyklen (Hol-Decodier-Ausführungs-Speicher)
  • Befehle pro Sekunde: Taktfrequenz ÷ 4
  • Speicherbandbreite: Ein Lese- oder Schreibvorgang pro Befehlszyklus

school Lernpfad

arrow_forward Nächste Schritte

help_outline Häufig gestellte Fragen

Was macht das Steuerwerk?

Das Steuerwerk dekodiert Befehle und generiert Steuersignale, die alle CPU-Komponenten koordinieren: Register aktivieren, ALU-Operationen auswählen, Speicherzugriff steuern.

Was ist Mikrocode?

Mikrocode ist Low-Level-Steuercode, der jeden Maschinenbefehl als eine Folge von Mikro-Operationen implementiert und die internen Signale der CPU steuert.

play_arrow Live-Schaltung ausführen

Weitere Komponenten ansehen