Das ALU-Board

  1. Einleitung

    Das ALU-Board verschaltet folgende Bestandteile der Recheneinheit der CPU miteinander:

    1. Die ALU
    2. Die Arbeitsregister
    3. Das Flagregister
    4. Zwei Ausgaberegister

    Weiterhin enthält es die Carry-Logik mit der Richtungssteuerung der ALU-Übertragsketten, eine Flageinheit sowie den Datenbusport. Mit diesem Board ist der Aufbau der Recheneinheit komplett abgeschlossen. Die gesamte Schaltung wurde auf einer einseitigen Platine 200mmx150mm aufgebaut. Die Verbindung zu den Platinen der Die ALU erfolgt über Pfostensteckverbinder.

  2. Die Schaltung des ALU-Boards

    Auf dem folgenden Bild ist die Schaltung des ALU-Boards dargestellt.

  3. Anschlussbelegungen

    Stecker P1
    19,20 GNDMasse0V
    17,18 GNDMasse0V
    15,16 IDB7interner Datenbus Bit70V,12V,H
    13,14 IDB6interner Datenbus Bit60V,12V,H
    11,12 IDB5interner Datenbus Bit50V,12V,H
    9,10 IDB4interner Datenbus Bit40V,12V,H
    7, 8 IDB3interner Datenbus Bit30V,12V,H
    5, 6 IDB2interner Datenbus Bit20V,12V,H
    3, 4 IDB1interner Datenbus Bit10V,12V,H
    1, 2 IDB0interner Datenbus Bit00V,12V,H
    Stecker P2
    PinNameFunktionPegel
    1+12VVersorgungsspannung +12V12V
    2GNDMasse 0V0V
    3GNDMasse 0V0V
    4+24VVersorgungsspannung +24V+24V
    Stecker P3
    19,20 GNDMasse0V
    17,18 GNDMasse0V
    15,16 EDB7externer Datenbus Bit70V,12V,H
    13,14 EDB6externer Datenbus Bit60V,12V,H
    11,12 EDB5externer Datenbus Bit50V,12V,H
    9,10 EDB4externer Datenbus Bit40V,12V,H
    7, 8 EDB3externer Datenbus Bit30V,12V,H
    5, 6 EDB2externer Datenbus Bit20V,12V,H
    3, 4 EDB1externer Datenbus Bit10V,12V,H
    1, 2 EDB0externer Datenbus Bit00V,12V,H
    Stecker P4
    PinNameFunktionPegel
    39 freikeine BelegungH
    37 freikeine BelegungH
    35 freikeine BelegungH
    33 freikeine BelegungH
    31EOFFS7externer Adressoffset Bit70V,12V,H
    29EOFFS6externer Adressoffset Bit60V,12V,H
    27EOFFS5externer Adressoffset Bit50V,12V,H
    25EOFFS4externer Adressoffset Bit40V,12V,H
    23EOFFS3externer Adressoffset Bit30V,12V,H
    21EOFFS2externer Adressoffset Bit20V,12V,H
    19EOFFS1externer Adressoffset Bit10V,12V,H
    17EOFFS0externer Adressoffset Bit00V,12V,H
    15EADDR7externe Adresse Bit70V,12V,H
    13EADDR6externe Adresse Bit60V,12V,H
    11EADDR5externe Adresse Bit50V,12V,H
    9EADDR4externe Adresse Bit40V,12V,H
    7EADDR3externe Adresse Bit30V,12V,H
    5EADDR2externe Adresse Bit20V,12V,H
    3EADDR1externe Adresse Bit10V,12V,H
    1EADDR0externe Adresse Bit00V,12V,H
    2..40GNDMasse0V
    Stecker P5
    PinNameFunktionPegel
    39,40CLEARBLösche TEMPB0V,12V,H
    37,38WRITEBSchreibe TEMPB0V,12V,H
    35,36CLEARALösche TEMPA0V,12V,H
    33,34WRITEASchreibe TEMPA0V,12V,H
    31,32 SET1ALU-OUTPUT=0xFF0V,12V,H
    29,30 SET0ALU-OUTPUT=0x000V,12V,H
    27,28 S1ALU-Operationssteuerung0V,12V,H
    25,26 S2
    23,24 S0
    21,22 EC
    19,20 EOUTenable ALU-OUTPUT0V,12V,H
    17,18 UIGEingang ALU-General-Carry0V,12V,H
    15,16 EUOUTenable ALU-Übertragskette0V,12V,H
    13,14 UDIRKettenrichtung rechts/links0V,12V,H
    11,12 ECI1CARRY-Operation10V,12V,H
    9,10 ECI0CARRY-Operation00V,12V,H
    7, 8 freikeine BelegungH
    5, 6 freikeine BelegungH
    3, 4 freikeine BelegungH
    1, 2 freikeine BelegungH
    Stecker P6
    PinNameFunktionPegel
    39,40 freikeine BelegungH
    37,38 JPMEenable JUMP-Mode0V,12V,H
    35,36 JPMJUMP-Mode OUTPUT0V,12V,H
    33,34 JPM2JUMP-Mode Code0V,12V,H
    31,32 JPM1
    29,30 JPM0
    27,28 WR2WR2 Flagregister0V,12V,H
    25,26 WR1WR1 Flagregister0V,12V,H
    23,24 COUT1CLEAR Offsetregister0V,12V,H
    21,22 WOUT1WRITE Offsetregister0V,12V,H
    19,20 COUT0CLEAR Ausgangsregister0V,12V,H
    17,18 WOUT0WRITE Ausgangsregister0V,12V,H
    15,16 ADDR0Adressleitungen Arbeitsregister0V,12V,H
    13,14 ADDR1
    11,12 ADDR2
    9,10 READRREAD Arbeitsregister0V,12V,H
    7, 8WRITERWRITE Arbeitsregister0V,12V,H
    5, 6CLEARRCLEAR Arbeitsregister0V,12V,H
    3, 4SELECTenable Arbeitsregister0V,12V,H
    1, 2 EEDBenable externer Datenbus0V,12V,H
  4. Funktionsweise der Schaltung

    Das ALU-Board verbindet alle Baugruppen der Recheneinheit der CPU miteinander. Oben im Schaltbild verläuft der interne Datenbus der CPU, der mit den Datenbusleitungen der ALU, der Arbeitsregister und den beiden Ausgaberegistern verbunden ist. Der Steckverbinder P1 führt den internen Datenbus vom ALU-Board zu den anderen Komponenten der CPU.
    Die Relais REL15 und REL16 bilden den Datenbusport für den externen Datenbus der CPU, der am Pfostenstecker P3 herausgeführt wird. Über die Steuerleitung REL15[16], REL16[16] kann der interne Datenbus mit dem externen Datenbus verbunden werden, sodass Lese- und Schreiboperationen mit externen Speichern etc. ausgeführt werden können. Die Steuerleitung wird durch die Befehlsdecodierung über der Pfostenstecker P6 angesteuert.
    Die Steuerleitungen der Arbeitsregister werden ebenfalls über Stecker P6 zur Befehlsdecodierung geführt.
    Die beiden 8-bit-Ausgaberegister bilden den externen Adressbus der CPU. Sie können je ein Datenbyte vom internen Datenbus lesen, beliebig lange zwischenspeichern und am Pfostenstecker P4 ausgeben. Die Steuerleitungen der Ausgaberegister werden ebenfalls über Stecker P6 zur Befehlsdecodierung geführt.
    Außer beim Datenbusport handelt es sich bis hier also im Wesentlichen nur um eine Verdrahtung der einzelnen Baugruppen der Recheneinheit.
    Die ALU wird auf dem Board nun noch mit dem Flagregister verschaltet. Diese hat die Aufgabe, den Zustand der ALU-Flags (C,Z,N) nach einer Rechenoperation zwischenzuspeichern und die ALU zu Begin von Schiebe- oder Arithmetikoperationen mit dem CARRY-Signal vorhergehender Operationen zu versorgen. Dadurch ist es möglich, Verschiebungen, Rotationen, Additionen und Subtraktionen auf Datenworte mit mehr als einem Byte auszudehnen. Eine wesentliche Aufgabe erfüllt dabei die CARRY-Einheit. Die Flageinheit dient der Auswahl eines Flagzustandes für bedingte Sprungbefehle.

    Die CARRY-Einheit

    Die CARRY-Einheit besteht aus den Relais REL1, REL2 und REL3. Die Relais REL1 und REL2 bilden einen 1-aus-4-Decoder, mit dem festgelegt werden kann, welche CARRY-Information die ALU erhalten soll. Je nach der Binärkombination an den Relaiseingängen REL1[2] und REL2[1] wird der Eingang der Übertragsketten der ALU mit unterschiedlichen CARRY-Signalen versorgt. Das Relais REL3 legt nun fest, welche Übertragskette in der ALU benutzt wird. Es verbindet die CARRY-Einheit mit dem Eingang UIL oder UIR der ALU, steuert über EUOL oder EUOR die Aktivierung der entsprechenden ALU-Übertragskette und verbindet den CIN Eingang des Flagregister mit dem entsprechenden Ausgang UOL oder UOR der ALU. Bei abgefallenem Relais REL3 ist damit eie Übertragskette nach rechts aktiv, wie sie z.B. für Additionen benutzt wird und bei angezogenem Relais REL3 ist es die Kette nach links.
    RelaiseingängeEingangsleitungen der ALU-Übertragsketten
    REL1[2]REL2[1]REL3[1]UILUIRBemerkungen
    000 X 0Die Übertragskette rechts ist aktiv, der Carryeingang ist 0
    001 0 XDie Übertragskette links ist aktiv, der Carryeingang ist 0
    010 X/C'Die Übertragskette rechts ist aktiv, der Carryeingang ist mit dem invertierten CARRY der letzten ALU-Operation belegt
    011/C' XDie Übertragskette links ist aktiv, der Carryeingang ist mit dem invertierten CARRY der letzten ALU-Operation belegt
    100 X C'Die Übertragskette rechts ist aktiv, der Carryeingang ist mit dem CARRY der letzten ALU-Operation belegt
    101 C' XDie Übertragskette links ist aktiv, der Carryeingang ist mit dem CARRY der letzten ALU-Operation belegt
    110 X 1Die Übertragskette rechts ist aktiv, der Carryeingang ist 1
    111 1 XDie Übertragskette links ist aktiv, der Carryeingang ist 1

    Die Flag-Einheit

    Das Flagregister ist mit seinen Eingängen SIN und ZIN mit den entsprechenden Leitungen der ALU verbunden, das CIN-Signal erhält sie von der CARRY-Einheit. An den Ausgängen des Flagregisters übernehmen die Relais REL4, REL6 und REL10 die Invertierung der gespeicherten Flagzustände CARRY, SIGNUM und ZERO. Im Flagregister wird außerdem noch das OVERFLOW-Signal generiert, das nicht invertiert wird. Diese Signale werden nun zur Erzeugung eines Steuersignals für Sprungoperationen benutzt. Die Signale C', /C', S', /S', Z', /Z', O', 1 werden dazu an einen 1-aus-8-Decoder geführt, der aus den Relais REL7, REL8 und REL9 gebildet wird. Durch entsprechende Ansteuerund der Relais wird nun erreicht, dass eines der acht Signale an die Sprungeinheit der Ablaufsteuerung geführt wird und damit unterschiedliche Sprünge ausgelöst werden können. Das Relais REL5 dient nur der Aktivierung des Decoders, da er nur bei Sprungbefehlen benutzt wird. Die Leitung REL9[3] führt zur Ablaufsteuerung, die bei 1 einen Sprung auslöst und bei 0 nicht. Folgende Sprünge können dadurch ausgelöst werden:
    REL5[2]REL9[2]REL8[1]REL7[16]REL9[3]Bemerkungen
    1000 1JMP unbedingter Sprung
    1001 O'JPO bedingter Sprung bei Overflow
    1010/Z'JPNZ bedingter Sprung bei nicht Zero
    1011 Z'JPZ bedingter Sprung bei Zero
    1100/S'JPP bedingter Sprung bei nicht Signum
    1101 S'JPN bedingter Sprung bei Signum
    1110/C'JPNC bedingter Sprung bei nicht Carry
    1111 C'JPC bedingter Sprung bei Carry
    0XXX 1unbenutzt
    Die Steuereingänge der Relais, sowie der Decoderausgang werden über den Steckverbinder P6 mit der Befehlsdecodierung verbunden.
    Die restlichen Steuereingänge des ALU-Blocks und die Steuerleitungen der CARRY-Einheit weden über den Stecker P5 zur Befehlsdecodierung geführt.

  5. Wahrheitstabelle

    0=logisch 0-Pegel, entspricht 0V
    1=logisch 1-Pegel, entspricht 12V
    H=hochohmiger Zustand
    X=beliebiger Zustand
    Funktionstabelle der CARRY-Einheit
    EingängeBemerkungen
    ECI0ECI1UDIREUOUT
    0 0 0 1Die Übertragskette rechts ist aktiv, der Carryeingang ist 0.
    0 0 1 1Die Übertragskette links ist aktiv, der Carryeingang ist 0.
    0 1 0 1Die Übertragskette rechts ist aktiv, der Carryeingang ist mit dem invertierten CARRY der letzten ALU-Operation belegt.
    0 1 1 1Die Übertragskette links ist aktiv, der Carryeingang ist mit dem invertierten CARRY der letzten ALU-Operation belegt.
    1 0 0 1Die Übertragskette rechts ist aktiv, der Carryeingang ist mit dem CARRY der letzten ALU-Operation belegt.
    1 0 1 1Die Übertragskette links ist aktiv, der Carryeingang ist mit dem CARRY der letzten ALU-Operation belegt.
    1 1 0 1Die Übertragskette rechts ist aktiv, der Carryeingang ist 1.
    1 1 1 1Die Übertragskette links ist aktiv, der Carryeingang ist 1.
    X X X 0Die Übertragsketten sind inaktiv.

    Funktionstabelle der Flag-Einheit:
    EingängeAusgangBemerkungen
    JPMEJPM0JPM1JPM2JPM
    1000 1JMP unbedingter Sprung, JPM=1
    1001 O'JPO bedingter Sprung bei Overflow, JPM führt den Pegel des Overflow-Flags der letzten ALU-Operation.
    1010/Z'JPNZ bedingter Sprung bei nicht Zero, JPM führt den invertierten Pegel des ZERO-Flags der letzten ALU-Operation.
    1011 Z'JPZ bedingter Sprung bei Zero, JPM führt den Pegel des ZERO-Flags der letzten ALU-Operation.
    1100/S'JPP bedingter Sprung bei nicht Signum, JPM führt den invertierten Pegel des SIGNUM-Flags der letzten ALU-Operation.
    1101 S'JPN bedingter Sprung bei Signum, JPM führt den Pegel des SIGNUM-Flags der letzten ALU-Operation.
    1110/C'JPNC bedingter Sprung bei nicht Carry, JPM führt den invertierten Pegel des CARRY-Flags der letzten ALU-Operation.
    1111 C'JPC bedingter Sprung bei Carry, JPM führt den Pegel des CARRY-Flags der letzten ALU-Operation.
    0XXX 1unbenutzt, JPM=1

  6. Schluss

    Die komplette Schaltung wurde auf einer einseitigen Platine von 200mmx150mm untergebracht.




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