In einem weiteren Schritt wird das 8-Bit Additions-/ Subtraktionswerk mit Steuergerät aus dem Kapitel "Digitaltechnik - Teil 0", Abschnitt 6, als Makro abgespeichert und zu einer arithmetisch-logischen Einheit oder ALU erweitert.
1 - Arithmetisch-Logische-Einheit - ALU (arithmetic-logic-unit)
Rechenwerke, die neben der Addition und Subtraktion auch logische Entscheidungen ausführen können, wie zum Beispiel AND-, OR- und XOR-Funktionen, heißen arithmetisch-logische-Einheiten oder auch ALU (arithmetic-logic-unit).
Um dies praktisch umsetzen zu können, müssen dem Additions-/ Subtraktionswerk aus dem vorherigen Kapitel die o.g. Gatter zugefügt und durch weitere Steuerungsoptionen so angepasst werden, dass jede logische Funktion sich selektieren lässt. Eine mögliche Umsetzungsvariante zeigt die folgende Abbildung.
Die in Abb. 1 dargestellte Schaltung wird mit Hilfe des Programms ProfiLab erstellt, abgespeichert und kompiliert. Sie lässt sich anschließend als voll funktionsfähiges Programm starten und zeigt folgende Oberfläche.
Das Steuergerät
Über das Steuergerät mit seinen sieben Schaltern lassen sich verschiedene Funktionen abrufen. Zur Ausführung von Additionen/ Subtraktionen müssen die Schalter DS1 und DS2 auf HIGH gestellt werden.
Abb. 2 zeigt die Addition der beiden Zahlen 33 und 18. Das Ergebnis ist bekanntlich 51; es wird binär codiert in der Anzeigeeinheit dargestellt.
Abb. 2
Im Steuergerät sind die Schalter B, A, DS1 und DS2 auf HIGH gesetzt. Die Schalter B und A übertragen die eingestellten Binärzahlen der Eingabeeinheit an die Anzeigeeinheit. Die Schalter DS1 und DS2 sind auf HIGH gesetzt; damit wird die Funktion ADD/SUB (Addition, Subtraktion) aufgerufen. In der vorliegenden Einstellung ist die Addition eingestellt, da die Komplementärbildung des Subtrahenden und das Increment (/B, +1) auf LOW stehen.
Dazu müssen nur die unter der LED angezeigten Stellenwerte bei allen aufleuchtenden LEDs addiert werden.
Zur Subtraktion wurde im vorherigen Kapitel "Digitaltechnik - Teil 0" bereits alles gesagt.
Logische Verknüpfungen
Die logischen Funktionen werden am Beispiel einer AND-Verknüpfung exemplarisch besprochen.
Die logische AND-Verknüpfung der beiden Binärzahlen
ergibt für alle Bitpositionen, bei denen sowohl A als auch B eine 1 ausweisen (in der Darstellung rot markiert) im Ergebnis eine 1 (siehe Wahrheitstabelle AND-Gatter); alle anderen Stellen werden auf 0 gesetzt. Das Ergebnis muss also lauten:
und genau das wird in der Anzeigeeinheit dargestellt.
Für einen einfachen Additions- oder Subtraktionsbefehl müssen bei dieser Schaltung bereits sieben Bit per Schalter eingestellt werden. Je umfangreicher die Zahl der verfügbaren Befehle, desto mehr Bitpositionen benötigt der entsprechende Code und desto länger werden die Befehlssequenzen.
Im folgenden Schritt werden die verfügbaren Befehle der ALU mit Steuereinheit in einem ROM (read-only-memory) abgelegt und über einen Codewandler aufgerufen. Dafür sind bei nicht mehr als 16 Befehlen maximal vier Bit notwendig.
2 - ALU mit ROM
In diesem Kapitel werden 14 Befehle in einem ROM abgelegt; sie lassen sich anschließend über die vier Taster S0, S1, S2 und S3 abrufen. Dazu muss die Schaltung aus Abschnitt 1 (1 - Arithmetisch-Logische-Einheit - ALU (arithmetic-logic-unit) etwas angepasst werden.
Die 14 Befehle, die in diesem Beispiel im ROM abgelegt sind:
Löschen der Anzeige - Steuercode 0: 0 0 0 0
Mit diesem Steuercode soll die Ausgabeeinheit (LEDs) auf Null gesetzt werden. Die Bits 5 und 6 des nullten Byte im ROM (D5, D6) werden auf 1 gesetzt, die restlichen Bits auf Null.
Increment (+1) - Steuercode 1: 0 0 0 1
In der Anzeige leuchtet die LED mit dem Stellenwert 1 auf.
Dekrement (-1) - Steuercode 2: 0 0 1 0
In der Anzeige leuchten alle acht LEDs auf; dies entspricht der Zahl -1. Das MSB (Bit 8) ist HIGH, deshalb wird das angezeigte Ergebnis als negative Zahl interpretiert.
Eingang A freischalten - Steuercode 3: 0 0 1 1
Die mit den Schaltern gesetzten Bits des Operanden A werden an der Ausgabeeinheit (LED-Leiste) angezeigt.
Einerkomplement von A - Steuercode 4: 0 1 0 0
Es wird das Einerkomplement des Operanden A in der LED-Leiste dargestellt.
Eingang B freischalten - Steuercode 5: 0 1 0 1
Die mit den Schaltern gesetzten Bits des Operanden B werden an der Ausgabeeinheit (LED-Leiste) angezeigt.
Einerkomplement von B - Steuercode 6: 0 1 1 0
Es wird das Einerkomplement des Operanden A in der LED-Leiste dargestellt.
A + 1 - Steuercode 7: 0 1 1 1
In der LED-Leiste wird das Ergebnis A + 1 angezeigt.
B - 1 - Steuercode 8: 1 0 0 0
In der LED-Leiste wird das Ergebnis B - 1 angezeigt.
A + B - Steuercode 9: 1 0 0 1
In der LED-Leiste wird das Ergebnis der Summe aus A und B angezeigt.
A - B - Steuercode 10: 1 0 1 0
In der LED-Leiste wird das Ergebnis der Differenz aus A und B angezeigt.
A AND B - Steuercode 11: 1 0 1 1
In der LED-Leiste wird das Ergebnis der boolschen Funktion A and B angezeigt.
A OR B - Steuercode 12: 1 1 0 0
In der LED-Leiste wird das Ergebnis der boolschen Funktion A OR B angezeigt.
A XOR B - Steuercode 13: 1 1 1 0
In der LED-Leiste wird das Ergebnis der boolschen Funktion A XOR B angezeigt.
3 - Die Arbeitsoberfläche des Simulationsprogramms
Abb. 5 - Das Simulationsprogramm ALU-Einheit.exe. Über die gelben Schalter des Steuereingangs lassen sich die Befehle einstellen. Operand A wird über die blauen, Operand B über die grünen Schalter eingestellt. Das Ergebnis kann über die LEDs ausgelesen werden. In diesem Bild sind Operand A und B im 4. Bit auf HIGH gesetzt; zusätzlich ist beim Operand B auch Bit 1 gesetzt. Bit 1 und Bit 4 gesetzt entspricht der Zahl 9 beim Operanden B. Im Steuereingang sind Bit 1 und 2 auf HIGH eingestellt; der dritte Steuerbefehl legt den Operanden A (Stellenwert 8) an den Ausgang (LED Leiste).
Das ROM im Simulationsprogramm ALUmitROM.exe ist anfänglich nur mit zwei Befehlen belegt. Während der Laufzeit des Programms kann es vom Anwender beliebig gefüllt und die Wirkung der Befehle überprüft werden.