Taktdiagramme Z80 CPU history menue

Das Zeitverhalten der CPU U880 wird im wesentlichen durch den Systemtakt bestimmt. Die CPU tauscht in Abarbeitung der Befehle ihre Daten über den bidirektionalen Datenbus aus. Ebenso holt die CPU ihre Befehle durch Adressierung des Speichers über den Datenbus ein. Folgende Grundfunktionen werden ausgeführt:

  • Befehlskodelesen
  • Speicherlesen
  • Speicherschreiben
  • I/O-Lesen
  • I/O-Schreiben
  • Interruptbestätigung
  • CPU-interne Operation

  1. Maschinen-Zyklus-Diagramm
  2. Befehlscode-Lesen (M1-Zyklus)
  3. Speicher Lesen oder Schreiben
  4. Datenein- und Ausgabe
  5. Busanforderung und -bestätigung
  6. Interruptanforderung und -bestätigung
  7. Rücksprung aus HALT
  8. Dynamische Kennwerte der Z80-CPU im Zeitdiagramm

Alle Instruktionen werden auf der Basis der o. g. Grundfunktionen ausgeführt und sind teilweise Zusammensetzungen mehrerer Grundfunktionen. Die Gesamtzahl der Takte einer Grundfunktion bilden einen Maschinenzyklus; ein oder mehrere Maschinenzyklen bilden einen Befehls- oder Instruktionszyklus. Grundsätzlich beginnt jeder Instruktionszyklus mit dem Lesen eines Befehlskodes (Op-Kode). Dieser Maschinenzyklus wird als M1-Zyklus bezeichnet, und von der CPU wird ein Steuersignal Ml ausgesendet. Das M1-Signal wird im System als Synchronisationssignal für Instruktionszyklen verwendet. 
Da in jedem Instruktionszyklus mindestens ein M1-Zyklus enthalten ist, wird ein kontinuierlicher Refresh gesichert. Die Taktperioden werden auch als T-Zustände bezeichnet. 
rede Grundfunktion besteht aus drei bis sechs T-Zuständen die M1-Zyklen aus vier bis sechs.

1. Maschinen-Zyklus-Diagramm history menue scroll up

Maschinen-Zyklus-Diagramm für einen vollständigen Befehl ohne WAIT-States


2. M1-Zyklus history menue scroll up

Die Bilder unten zeigen als Beispiel einen Instruktionszyklus, der aus drei Maschinenzyklen besteht. Bisher wurde vorausgesetzt, dass keine WAIT-Zustände zur Synchronisation der externen Signale eingeschoben wurden, die dann natürlich die Maschinenzyklen entsprechend verlängern.

M1-Zyklus-Diagramm ohne eingefügte WAIT-States

M1-Zyklus-Diagramm mit eingefügte WAIT-States

 

  • CP Systemtakt (T1, T2, T3, T4 Taktzustände der CPU; TW eingefügte Waitzustände)

  • A0 ... A15_ Belegung des CPU-Adressbusses (PC aktueller Programmzählerstand; R Inhalt des Refreshregisters auf A0 ... A6) 

  • MREQ, RD

  • MI, RFSH Systemsteuersignalausgänge der CPU 
    WAIT CPU-Steuersignaleingang

  • D0 ... D7 Belegung des Systemdatenbusses an der CPU (IN gültige Op-Kode-Daten)

Bild oben zeigt das Zeitverhalten beim Lesen eines Befehlskodes (M1-Zyklus). Dieser M1-Zyklus ist für den größten Teil der Instruktionen vier Taktzustände lang, unter der Voraussetzung, dass kein WAIT-Zustand eingefügt wurde. Der M1-Zyklus lässt sich in zwei Teile untergliedern. Im ersten Teil erfolgt das Lesen des OP-Kodes, im zweiten Teil der Refresh.
Zu Beginn des Ml-Zyklus wird der Inhalt des Programmzählers PC auf den Adressbus gegeben. Nach einer halben Taktperiode werden die Signale MREQ und RD aktiv (L). Mit diesen Signalen wird das Lesen des Speichers eingeleitet. Das Timing sichert, dass schon bei der fallenden Flanke von MREQ und RD der Adressbus stabil ist. Damit ist es möglich, die fallende Flanke von MREQ direkt einzusetzen- als Chipenable- (CE-) Takt für dynamische und für flankenaktivierte Speicher. Das RD-Signal zeigt der Speicherlogik und der Systemlogik, dass der Datenbus für einen Signalfluss in Richtung CPU zu schalten ist. Mit der fallenden Flanke von T2 wird die WAIT-Leitung abgefragt. Die Daten werden mit der steigenden Flanke von T3, also am Ende von T2, in die CPU übernommen. Es ist damit sichergestellt, dass die CPU den Datenbus abgefragt hat, bevor MREQ und RD inaktiv werden.
Die Taktzustände T3 und T4 des Befehlskodelesezyklus werden innerhalb der CPU für die Dekodierung und Ausführung des eingelesenen Befehls benötigt, so dass innerhalb dieser Zustände keine weitere Operation ausgeführt wird. (Daten- und Adressbus sind von der CPU nicht belegt für die Befehlsausführung.) Während T3 und T4 enthalten die niederwertigsten 7 bit des Adreßbusses den Inhalt des Registers R, d. h. die Refreshadresse.
MREQ und RFSH dienen dazu, alle dynamischen Schreib-Lese-Speicher gleichzeitig anzusprechen und damit aufzufrischen. Das Lesesignal RD wird während des Refresh nicht aktiv, um Konflikte am Datenbus durch gleichzeitiges Ansprechen zu vermeiden. Damit infolge der UND-Verknüpfung von MREQ und RFSH für das gleichzeitige Ansprechen aller Speicher keine Dekodierspitzen entstehen, wird das RFSH-Signal jeweils eine halbe Taktperiode breiter gemacht als Anfang und Ende des MREQ. Das RFSH-Signal kann daher nicht direkt für den Speicherrefresh benutzt werden, da nicht sicher ist, dass schon zu Beginn des RFSH-Signals der Adressbus mit der Refreshadresse eingeschwungen ist.
Bild rechts zeigt den Befehlskodelesezyklus, wenn während der Abfrage in T2 eine aktive WAIT-Leitung festgestellt wird. Der M1-Zyklus wird dann entsprechend verlängert. Stellt die CPU während T2 ein aktives WAIT fest, so wird ein zusätzlicher Zustand TW eingeführt. Auch während der fallenden Flanke des Taktes CP in TW wird das WAIT-Signal abgefragt und bei Aktivität der Maschinenzyklus weiter verlängert. Damit ist es möglich, den Lesezyklus so zu verlängern, dass dieser an die Zeitbedingung Zugriffszeit des Speichers (in den meisten Fällen ein ROM) angepasst werden kann.


3. Befehlslese-Zyklus history menue scroll up

Memory-Read/Write--Zyklus-Diagramm ohne eingefügte WAIT-States

Memory-Read/Write-Zyklus-Diagramm mit eingefügte WAIT-States

  • M2 Speicherlesezyklus der CPU

  • M3 Speicherschreibzyklus der CPU

  • CP Systemtakt (T1, T2, T3 Taktzustände der CPU; TW eingefügte Waitzustände)

  • A0 ... A15 Belegung des CPU-AdreBbusses (MADI, MAD2 beliebige Speicherplatzadressen)

  • MREQ, WR, RD Systemsteuersignalausgänge der CPU

  • D0 ... D7 Belegung des Systemdatenbusses an der CPU (IN gültige Speicherdaten; OUT gültige CPU-Daten) 
    WAIT CPU-Steuersignaleingang

Aus den Bildern oben werden die Unterschiede zwischen einem MI- oder Befehlskodelesezyklus und einem Speicherlese- oder -Schreibzyklus im Zeitverhalten deutlich. Die letzteren Zyklen sind drei Taktperioden lang. Es erfolgt kein Refresh. Im Gegensatz zum M1-Zyklus werden. die Daten erst nach 2,5 Taktperioden, vom Aussenden der Adresse ab gerechnet, durch die CPU abgefragt. Die Signale MREQ.und RD sowie die Adressaussendung das gleiche Zeitverhalten wie im M1-Zyklus zu Beginn des Zyklus. MREQ und RD sind um eine halbe Taktperiode, die Adresse ist für einen Takt verlängert.
Für die meisten Halbleiterspeicher ist es erforderlich, dass stabile Adressen und Daten den Schreibimpuls überlappen. Das WR-Signal erfüllt diese Bedingung und kann daher direkt als Schreibimpuls verwendet werden.
Das Bild rechts zeigt den gleichen Zyklus mit Verlängerung durch Benutzung des WAIT-Eingangs der CPU. Die Verhältnisse entsprechen in diesem Punkt denen der Verlängerung des M1-Zyklus durch WAIT.


4. Datenein- und Ausgabe history menue scroll up

I/O-Read/Write--Zyklus-Diagramm ohne eingefügte WAIT-States

I/O-Read/Write-Zyklus-Diagramm mit eingefügte WAIT-States

Bild 3.1.7 zeigt die Datenein- und -ausgabe. In diesem Bild sind der Lese- und der Schreibzyklus gleichzeitig dargestellt, obwohl natürlich nur einer der beiden Zyklen auftreten kann. Das entsprechende zweite Steuersignal (WR oder RD) befindet sich im inaktiven Zustand, und der Datenbus enthält nur die für die Operation adäquaten Daten. Ansonsten gelten die hier aufgeführten Fakten für beide Datentransfers. Man erkennt, dass nach T2 ein WAIT-Zustand eingefügt ist. Dieser Zustand wird von der CPU automatisch eingefügt, damit an die 1/0-Baugruppen keine hohen Geschwindigkeitsforderungen gestellt werden müssen. Das betrifft insbesondere die Dekodierlogik, die festlegt, ob aufgrund des Timing zusätzliche WAIT-Anmeldungen zu erfolgen haben. Es müsste dann die WAIT-Leitung zum Zeitpunkt der fallenden Flanke von T2 aktiv sein auf der Basis von IORQ und der Portdekodierung, wofür nur etwa 40 ns zur Verfügung stünden. Der automatisch generierte WAIT-Zustand ermöglicht die Verwendung von Ein-/Ausgabe-Bausteinen in MOS-Technik. Während T2 wird aufgrund der o. g. Wirkungsweise die WAIT-Leitung im Gegensatz zu den Speicheroperationen nicht abgefragt, sondern nur in den WAIT-Zuständen. Bild 3.1.7b zeigt den um zwei extern verursachte WAIT-Zustände verlängerten Zyklus. Wie im Fall der Speicherschreiboperation ist das Timing von Daten und WR so gestaltet, dass die Zeit stabiler Daten die Zeit des aktiven Schreibimpulses WR überlappt.
Dadurch kann WR als Takt für ein Ausgabeport verwendet werden. Die Daten können sowohl flankengesteuert mit der steigenden oder fallenden Flanke von WR in das Port eingeschrieben als auch zustandsgesteuert mit WR übernommen werden.


5. Busanforderung und -Bestätigung history menue scroll up

Busanforderungs- und -bestätigungszyklus

Bild oben zeigt die Zeitverhältnisse für den Vorgang einer Busanforderung und der nachfolgenden Bestätigung. Zu Beginn des letzten Taktzustands eines jeden Maschinenzyklus wird die Leitung BUSRQ durch die CPU abgefragt. Wird ein aktives Signal erkannt, dann erfolgt mit der nächsten steigenden Taktflanke, d. h. also nach Abschluss des laufenden Maschinenzyklus, die Freigabe des Busses durch die CPU und die Aussendung des Signals BUSAK als Bestätigung. Die CPU setzt ihre Daten- und Adressleitungen sowie die Tristatesteuerleitungen in den hochohmigen Zustand. Dadurch kann eine andere Einheit den Bus steuern und einen Datenaustausch zum Speicher und den I/O-Ports durchführen. Dieser Vorgang wird als DMA (direkter Speicherzugriff) auf der Basis „cycle stealing" (Zyklusstehlen) bezeichnet. Im Zustand BUSAK aktiv wird mit jeder steigenden Taktflanke die Leitung BUSRQ abgefragt und bei Inaktivität nach dem nachfolgenden T-Zustand wieder zur normalen Arbeitsweise der CPU übergegangen. Prinzipiell lässt sich die Busanforderung über eine beliebige Zeit ausdehnen. Es muss dann jedoch beachtet werden, dass seitens der CPU kein Refresh dynamischer Speicher mehr erfolgt. Sind derartige Speicher im System vorhanden, muss entweder die Zeit der Busübernahme begrenzt werden, oder das externe busanfordernde Gerät muss die Speicherauffrischung sicherstellen.
Da BUSRQ eine höhere Priorität als der nichtmaskierbare und der maskierbare Interrupt hat, wird eine Interruptanforderung durch die CPU nicht akzeptiert.


6. Interruptanforderung und -bestätigung history menue scroll up

Im Gegensatz zur Busanforderung wird der Interrupt nur mit der letzten steigenden Taktflanke des letzten Maschinenzyklus' einer Instruktion abgefragt. Dadurch ist sichergestellt, dass jede Instruktion erst vollständig abgearbeitet wird. Bild 3.1.9 zeigt den Zeitablauf, wenn ein INT-Signal aktiv ist und ein Interrupt bestätigt wird. Voraussetzung dafür ist, dass softwaremäßig durch die Maskierung ein Interrupt freigegeben wurde und kein BUSRQ aktiv ist. Die Bestätigung des INT = L erfolgt durch Erzeugung eines speziellen M1-Zyklus. Dieser Ml-Zyklus ist dadurch gekennzeichnet, dass anstelle des MREQ das IORQ aktiv wird. Die unterbrechende Einheit kann diese Kombination von M1 und IORQ dekodieren. M1 und IORQ werden von der CPU nur bei Interrupt gleichzeitig verwendet, da ansonsten M l das Lesen eines, Befehls kennzeichnet. In dem speziellen M1-Zyklus werden von der CPU automatisch nach T2 zwei WAIT-Zustände eingeführt, um der Prioritätskettenschaltung für den Interrupt ein Einschwingen zu ermöglichen. Diese zwei WAIT-Zustände erlauben den Ein-/Ausgabe-Einheiten festzustellen, welche Einheit die höchste Anmeldepriorität besitzt.
Bild unten zeigt, wie das Zeitdiagramm durch Einfügung eines extern erzeugten WAIT-Zustands gedehnt wird.
Bild 3.1.10 zeigt die Antwort auf einen nichtmaskierbaren Interrupt (NMI). Ein NMI-Signal wird in der CPU zwischengespeichert; es wird ein entsprechendes Flipflop gesetzt, das durch die CPU wie die INT-Leitung am Ende einer Instruktion abgefragt 
wird. Das NMI-Signal hat eine höhere Priorität als INT und eine geringere als BUSRQ; es kann softwaremäßig nicht gesperrt werden. Das ist sinnvoll, um auf besonders wichtige Ereignisse sofort reagieren zu können, z. B. auf eine Havarie, einen Netzausfall.
Die NMI-Bestätigung erfolgt dadurch, daß die CPU den aktuellen Programmzählerstand im externen Stack ablegt und die weitere Programmabarbeitung an der Stelle 0066H fortsetzt. Dort beginnt das Programm der NMI-Routine, z. B. ein Rettungsprogramm. 
Im Bestätigungszyklus werden durch die CPU natürlich keine WAIT eingefügt, da keine zeitaufwendigen oder zeitkritischen externen Vorgänge aufgrund der festen Startadresse der Interruptroutine ausgeführt werden müssen.

Interruptquittierungs--Zyklus-Diagramm ohne eingefügte WAIT-States

  • LM letzter Maschinenzyklus des vorangegangenen Befehls

  • M1 Quittierungszyklus der CPU

  • CP Systemtakt (LT letzter Taktzustand von LM; T1, T2, T3 Taktzustände der CPU; TW' automatisch von der CPU eingefügte Waitzustände; TW auf Anforderung eingefügte Waitzustände)

  • A0 ... A15 Belegung des CPU-Adreßbusses (PC aktueller, stationärer Programmzählerstand; R Refreshregisterinhalt) 
    MI, IORQ, MREQ, RD Systemsteuersignalausgänge der CPU 

  • INT, WATT CPU-Steuersignaleingänge

  • D0 ... D7 Belegung des Systemdatenbusses an der CPU (IN von dem interruptfordernden Gerät in den Interruptmoden IMO 
    und IM2 auf den Datenbus plazierte Information)

Interruptquittierungs-Zyklus-Diagramm mit eingefügte WAIT-States

NMI-Quittierungszyklus-Diagramm

  • LM letzter Maschinenzyklus des vorangegangenen Befehls

  • Ml Quittierungszyklus der CPU

  • CP Systemtakt (LT letzter Taktzustand von LM; TI, T2, T3, T4, T5 Taktzustände der CPU)

  • NMl CPU-Steuersignaleingang 

  • MI, MREQ, RD, RFSH Systemsteuersignalausgänge der CPU


7. Rücksprung aus HALT history menue scroll up

Die HALT-Instruktion wird im Programm ausgeführt, wenn der normale Programmablauf beendet ist bzw. wenn die CPU weitere Daten benötigt, um das Programm fortsetzen zu können. Den Haltzustand kann die CPU nur dann verlassen, wenn ein NMI-oder INT-Signal bestätigt wird. Während HALT werden von der CPU NOP-Befehle ausgeführt. Der Zweck dieser NOP-Befehle ist der Refresh dynamischer Speicher. Die NOP bestehen aus M1-Zyklen, mit dem Unterschied, dass die Daten vom Speicher durch den Kode für NOP ersetzt werden (0011). Während dieser NOP-Befehle wird von der CPU zur Bestätigung das Signal HALT ausgegeben. Bild 3.1.11 zeigt das zugehörige Zeitverhalten.



HALT-Rücksprung-Diagramm


8. Dynamische Kennwerte der Z80-CPU history menue scroll up


Dynamsiche Kennwerte der Z80-CPU



zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost im Oktober 1998