Das Flagregister

  1. Einleitung

    Das Flagregister der CPU ist ein spezielles Speicherregister, das 4 Bits gepuffert speichert. Die Flags geben Auskunft über den Zustand der letzten ALU-Operation. Die vier Flags haben dabei folgende Bedeutung:
    ZERODas Ergebnis der letzten Operation war Null
    CARRYDie letzte Operation ergab einen Überlauf des Zahlenbereichs
    SIGNUMDas Vorzeichen des letzten Ergebnisses
    OVERFLOWDas Ergebnis der letzten Operation ergab einen Vorzeichenfehler
    Die Flagzustände von ZERO, CARRY und SIGNUM werden in der ALU erzeugt. Das CARRY-Bit wird durch den 8-bit-ALU-Block selbst generiert. ZERO und SIGNUM erzeugt das ALU-Outputregister. Das OVERFLOW-Flag entsteht durch exclusiv-ODER-Verknüpfung von CARRY und SIGNUM im Flagregister. Nach dem Abschluss der ALU-Operation gibt die Ablaufsteuerung dem Flagregister das Signal zum Abspeichern der ALU-Flags. Der Flagzustand kann nun zu einem späteren Zeitpunkt für die Steuerung der ALU z.B. bei Arithmetik und Schiebebefehlen oder für bedingte Sprünge ausgewertet werden.

  2. Die Schaltung des Flagregisters

    Auf dem folgenden Bild ist die Schaltung des Flagregisters dargestellt.
  3. Funktionsweise der Schaltung

    Die Schaltung besteht aus einem Eingangsschalter REL4, sechs Selbsthalteschaltungen REL1;2;3;5;6;7, einem EX-OR-Gatter REL9, und einem Strobe-Relais REL8. Über den 20-poligen Pfostenstecker P2 ist das Flagregister mit der ALU verbunden. Die ALU-Flags werden über das Relais REL4 an den Speicherblock REL1;3;6 geführt. Sobald das Relais REL4 anzieht, werden die Eingänge der Selbsthalteschaltungen mit der ALU verbunden und nehmen damit den entsprechenden Zustand der Flagbits an. Danach muss REL4 wieder abfallen, damit der Zustand dauerhaft gespeichert wird.
    Sobald nun REL8 anzieht, werden die Ausgänge der Speicherschaltungen REL1;3 und 6 aktiv und übergeben den gespeicherten Inhalt an die Speicherschaltungen REL2;5;7 weiter. Nun erscheint der zuvor abgespeicherte ALU-Flagzustand am Ausgang des Flagregisters am 10-poligen Pfostensteckverbinder P1. Dieser ist mit der Befehlsdecodierung der CPU verbunden. Relais REL8 kann nun wieder abfallen, der Ausgangszustand des Flagregisters bleibt unverändert. Das Relais REL9 ist ein EXCLUSIV-ODER-Gatter, das durch die Verknüpfung von CARRY und SIGNUM das OVERFLOW Flag generiert.
    Durch die Pufferung des Flagregisters wird erreicht, das das Flagregister am Ausgang einen zuvor gespeicherten Fagzustand an die Befehlsdecodierung ausgeben kann und gleichzeitig einen aktuellen ALU-Zustand unabhängig speichert. Das ist z.B. für Befehle wie ADC notwendig, da diese einen vorhergehenden Zustand des CARRY-Flags benötigen und gleichzeitig einen neuen CARRY-Zustand erzeugen, der ggf für nachfolgende Operationen gespeichert werden muss.

  4. Wahrheitstabelle

    In der Wahrheitstabelle sind nun die einzelnen Pegel zur Zählersteuerung aufgelistet.
    0=logisch 0-Pegel, entspricht 0V
    1=logisch 1-Pegel, entspricht 12V
    H=hochohmiger Zustand
    X=beliebiger Zustand
    Grundzustand
    EingangssignaleAusgangssignale 
    ZEROCARRYSIGNUMWR1WR2ZEROCARRYSIGNUMOVERFLOWErläuterungen
    X X X 0 0Zn-1Cn-1Sn-1Vn-1Das Flagregister ist von der ALU getrennt, am Ausgang erscheint der zuvor abgespeicherte Flagzustand n-1.
    Speicherung der ALU-Flags
    EingangssignaleAusgangssignale 
    ZEROCARRYSIGNUMWR1WR2ZEROCARRYSIGNUMOVERFLOWErläuterungen
    ZnCnSn 1 0Zn-1Cn-1Sn-1Vn-1Das Flagregister übernimmt am Eingang die Flaginformation n von der ALU und speichert sie ab. Die Ausgangszustände des Registers bleiben unbeeinflusst.
    Übernahme der Flags
    EingangssignaleAusgangssignale 
    ZEROCARRYSIGNUMWR1WR2ZEROCARRYSIGNUMOVERFLOWErläuterungen
    X X X 0 1ZnCnSnVnDas Flagregister gibt die zuvor abgespeicherten Flagzustände am Ausgang aus.

  5. Anschlussbelegung

    Das Flagregister ist über den 10-poligen und den 20-poligen Pfostenstecker mit dem ALU-Board verbunden.
    Die Belegung des Steckverbinders P1:
    Pin NameFunktionPegel
    1 GNDStromversorgung0V
    2 GNDStromversorgung0V
    3 CARRYAusgangsleitung CARRY0V,12V
    4 CARRYAusgangsleitung CARRY0V,12V
    5 ZEROAusgangsleitung ZERO0V,12V
    6 ZEROAusgangsleitung ZERO0V,12V
    7 SIGNUMAusgangsleitung SIGNUM0V,12V
    8 SIGNUMAusgangsleitung SIGNUM0V,12V
    9OVERFLOWAusgangsleitung OVERFLOW0V,12V
    10OVERFLOWAusgangsleitung OVERFLOW0V,12V
    Die Belegung des Steckverbinders P2:
    PinNameFunktionPegel
    1 +12VStromversorgung12V
    2 +12VStromversorgung12V
    3 +12VStromversorgung12V
    4 +12VStromversorgung12V
    5 GNDStromversorgung0V
    6 GNDStromversorgung0V
    7 GNDStromversorgung0V
    8 GNDStromversorgung0V
    9 GNDStromversorgung0V
    10 GNDStromversorgung0V
    11 WR2Steuereingang WRITE20V,12V,H
    12 WR2Steuereingang WRITE20V,12V,H
    13 WR1Steuereingang WRITE10V,12V,H
    14 WR1Steuereingang WRITE10V,12V,H
    15 CARRYEingangsleitung CARRY0V,12V,H
    16 CARRYEingangsleitung CARRY0V,12V,H
    17 SIGNUMEingangsleitung SIGNUM0V,12V,H
    18 SIGNUMEingangsleitung SIGNUM0V,12V,H
    19 ZEROEingangsleitung ZERO0V,12V,H
    20 ZEROEingangsleitung ZERO0V,12V,H

  6. Schluss

    Das Flagregister wurde auf einer Platine mit den Abmessungen 160mmx100mm aufgebaut. Die Platinenfläche ist damit zwar nicht ausgeschöpft, aber das Flagregister stellt eine wichtige logische Einheit der CPU dar, sodass es nicht sinnvoll war, weitere Schaltungsteile unterzubringen.


    Das Flagregister von oben



Sollte jemand seine Rechte durch eine Veröffentlichung auf dieser oder einer anderen meiner Seiten verletzt sehen, bitte ich um sofortige Kontaktaufnahme. Ich werde die entsprechenden Inhalte umgehend entfernen. Somit sind sowohl ein anwaltlicher Rat als auch eine kostenpflichtige Abmahnung nicht erforderlich! Weiterhin weise ich darauf hin, dass der Inhalt verlinkter Seiten nicht in meiner redaktionellen Verantwortung liegt.
Vielen Dank

www.schlaefendorf.de 2012

www.linux-web.de