k460-Kontrolllogik_von_ReTI

k460-Kontrolllogik_von_ReTI

Page 1

page-01.png

Kapitel 4 – Sequentielle Logik

  1. Speichernde Elemente
  2. Sequentielle Schaltkreise
  3. Entwurf sequentieller Schaltkreise
  4. SRAM
  5. Anwendung: Datenpfade von ReTI
  6. Anwendung: Kontrolllogik von ReTI

Albert-Ludwigs-Universität Freiburg
Prof. Dr. Armin Biere
Institut für Informatik

Page 2

page-02.png

Zu generierende Kontrollsignale

  • Clock-Enable-Signale für alle Register , Bez.: rcken.
  • Output-Enable-Signale (active low) für alle Treiber XYd, Bez.: /XYdoe.
  • Funktions-Select-Signale zum Selektieren der Funktion, die von der ALU ausgeführt wird.
  • Signale /PCclear, /PCload für PC.
  • sext zur Berechnung der Füllbits bei 24-Bit-Immediate-Konstanten.
  • Für den Speicher benötigen wir die Kontrollsignale /SMDdoe (active low), SMw.

Page 3

page-03.png

Idealisierte Timing-Diagramme

Grobe Ablaufplanung mit idealisierten Timing-Diagrammen.

Vereinfachende Annahme: Verzögerungszeit aller Bausteine = 0.

Befehlsabarbeitung ist unterteilt in Takte (= Folge von Taktsignalen high, low).

Fragen:

  • Wie sollen Kontrollsignale zusammenspielen?
  • In welchem Takt sollen welche Treiber aktiviert?
  • Welche Registerclock enabled werden?

Page 4

page-04.png

Befehlsabarbeitung in Takten

Fetch- als auch Execute-Phase bestehen aus 4 Takten gleicher Länge.

Kontrollsignal:

  • : Fetch-Phase,
  • : Execute-Phase.

Signale = Binärkodierung der Nummer des Taktes (innerhalb Fetch, Execute), in dem ReTI sich befindet.

  • Steigende Flanken (Anfang des Taktes) werden mit bezeichnet ()
  • Fallende Flanken (Mitte des Taktes) werden mit bezeichnet ()

Clock ck, Signale und werden Phasensignale genannt.

Weitere (Kontroll-)Signale werden aus den Phasensignalen erzeugt.

Page 5

page-05.png

Erzeugung der Phasensignale

  • 2-Bit-Zähler zählt bei jeder positiven Flanke von ck um 1 hoch.
  • Sreset aktiv → PC := 0
  • Sprungbefehl / Befehlskodierung steuert die Kontrolllogik.
  • Erzeugt Sequenz der Phasensignale .

Page 6

page-06.png

Idealisiertes Timing-Diagramm

Siehe Folie. Zeigt den Verlauf über Fetch- und Execute-Phase mit den Takten , sowie der Signale:

/SMDdoe, , , , , , , , , Icken, rcken*, /PCload, /PCclear, ck, SMw

( = PC, IN1, IN2, ACC)

Page 7

page-07.png

Idealisiertes Timing-Diagramm

Siehe Folie (gleiche Darstellung wie Page 6).

Page 8

page-08.png

Kontrollsignale

Welche der folgenden Funktionen realisiert das Signal /SMDdoe, wie es bei der Ausführung eines entsprechenden Befehls gebraucht wird?

a.
b.
c.
d. Keine der obigen

Page 9

page-09.png

Zur Erinnerung: Datenpfade

Siehe Schaltbild auf der Folie (vollständige ReTI-CPU mit allen Treibern).

Page 10

page-10.png

Entwurfsziele

  • Nutze Busse möglichst lange (unter Vermeidung von Bus Contention).
  • Clock-Enable-Signale der Register möglichst spät
    ⇒ viel Zeit für Berechnung neuer Daten.
  • Nach dem Entwurfsende muss das Timing der CPU mit den konkreten Werten der eingesetzten Fertigungstechnologie überprüft werden.
    „Wie schnell kann man maximal takten, um korrektes Funktionieren zu garantieren?"

Page 11

page-11.png

Aufbau der Kontrolllogik (1/2)

Kontrolllogik realisiert durch einen Endlichen Automaten.
Kontrollsignale sind Ausgangssignale des Endlichen Automaten.

  • Ist ein Kontrollsignal active low, dann bezeichnen wir es z.B. mit /x.
    Ausgangssignal /x ergibt sich dann durch Negation des Ausgangssignals eines entsprechenden FFs mit Eingangssignal xpre.
  • Ist ein Kontrollsignal active high, dann bezeichnen wir es z.B. mit .
    Ausgangssignal entspricht dem Ausgangssignal eines FFs mit Eingangssignal xpre.

Page 12

page-12.png

Aufbau der Kontrolllogik (2/2)

Kombinatorischer Schaltkreis bereitet aus Eingängen (/reset, ACC[31:0], I[31:24], ) die Pre-Signale (z.B. Ickenpre, PCLdoepre, ...) vor, die in D-FFs gespeichert werden.

Ein Teil der D-FFs wird mit ck geclockt, ein anderer mit /ck.

Page 13

page-13.png

Berechnung von Icken als erstes Beispiel (1/2)

Siehe Timing-Diagramm auf der Folie.

Page 14

page-14.png

Berechnung von Icken als erstes Beispiel (2/2)

Ickenpre hat steigende Flanke bei , fallende bei von Fetch.

Realisierung:

Page 15

page-15.png

Berechnung von ACCcken, IN1cken, IN2cken, PCcken

Analog, unter Berücksichtigung der Tatsache, dass Register nur bei bestimmten Befehlen neu beschrieben werden dürfen.

Page 16

page-16.png

Berechnung von ACCcken als Beispiel (1/3)

Siehe Timing-Diagramm auf der Folie.

Page 17

page-17.png

Berechnung von ACCcken als Beispiel (2/3)

ACCckenpre hat steigende Flanke bei , fallende bei von Execute.
Aber nur bei folgenden Befehlen:

  • Compute mit D = ACC
  • Load mit D = ACC
  • Move mit D = ACC

Kodierung:

  • Compute:
  • Load:
  • Move:
  • D = ACC:

Kodierung S, D:

S / D Register
0 0 PC
0 1 IN1
1 0 IN2
1 1 ACC

Page 18

page-18.png

Berechnung von ACCcken als Beispiel (3/3)

Page 19

page-19.png

Datenpfade und Treiber auf L und R

Siehe Schaltbild auf der Folie.

Page 20

page-20.png

Idealisiertes Timingdiagramm

Siehe Folie.

Page 21

page-21.png

Treiber auf Bussen L und R

0Ld, PCLd, IN1Ld, IN2Ld, ACCLd, 0Rd, IRd, DRd.

Enabled in der ganzen Execute-Phase.

Beispiel für Realisierung: /PCLdoe.

Enabled für:

  • JUMP ()
  • Compute-Befehle () mit D = PC ()
  • MOVE () mit S = PC ()

Page 22

page-22.png

Berechnung von /PCLdoe (1/2)

Siehe Timing-Diagramm auf der Folie.

PCLdoepre hat steigende Flanke bei von Fetch.

Page 23

page-23.png

Berechnung von /PCLdoe (2/2)

Output-Enable-Signale für andere Treiber auf und analog.

Page 24

page-24.png

Datenpfade und Treiber auf Adressbus

Siehe Schaltbild auf der Folie.

Page 25

page-25.png

Treiber auf Adressbus

  • PCAd: enabled (unabhängig vom Befehl) bei der Fetch-Phase, disabled bei der Fetch-Phase.
  • IAd, ALUAd: enabled bei , disabled bei von Execute (aber nicht bei allen Befehlen).

Die D-FFs zu Output-Enable-Signalen auf dem Adressbus werden mit der invertierten Clock getaktet (Verschiebung um einen halben Takt!)

Page 26

page-26.png

Idealisiertes Timingdiagramm

Siehe Folie.

Page 27

page-27.png

Weitere Kontrollsignale

  • Treiber auf ,
  • Signale /PCload, /PCclear
  • Speicheransteuerung: s. nächste Folie.
  • Kontrolle der ALU und Sign-Extension:
    • Funktions-Select-Signale der ALU
    • Eingangsübertrag cin
    • sext und fill

All diese Signale werden durch den kombinatorischen Schaltkreis (ohne zusätzliche FFs) berechnet.

Page 28

page-28.png

Idealisiertes Timing-Diagramm

Siehe Folie.

Page 29

page-29.png

Speicheransteuerung

Output-Enable /SMDdoe für SMDd (Treiber am Speicherausgang) aktiviert von bis bei Leseoperationen, d.h. bei:

  • Fetch
  • Compute Memory
  • LOAD, LOADINj

Schreibsignal für Speicher SMw (memory write) aktiviert von bis von Execute bei Schreiboperationen, d.h. bei:

  • STORE, STOREINj

Page 30

page-30.png

Zusammenfassung Sequentielle Logik

  • Sequentielle Schaltkreise bestehen aus speichernden Elementen (Latches, Flipflops) und einem kombinatorischen Kern.
  • Sie implementieren endliche Zustandsautomaten.
  • Der Entwurf eines sequentiellen Schaltkreises besteht aus der Aufstellung des Zustandsdiagramms, der Zustandsminimierung, der Zustandskodierung und der Synthese der kombinatorischen Logik.
  • Nun war es uns möglich, den Entwurf von ReTI zu vervollständigen (noch ohne exakte Timing-Analyse).