Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Arithmetisch-Logische-Einheit (ALU)

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.

Abb. 1 - Die hier vorgestellte ALU umfasst die Funktionsblöcke: Ein-/ Ausgabeeinheit, Additions-/Subtraktionswerk, Logischer Einheitenblock und einen Selektor für die auszuführende Funktion: ADD/SUB, AND, OR, XOR.

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

  • A = 0010 1001 und
  • B = 1010 1110

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:

  • A AND B = 0010 1000

und genau das wird in der Anzeigeeinheit dargestellt.

Abb. 3 - Die logische AND-Verknüpfung von 0b0010 1001 und 0b1010 1110 ergibt 0b0010 1000. Im Steuergerät muss dazu DS1 auf 0 und DS2 auf 1 gesetzt sein.

Die hier gezeigte ALU-Schaltung steht als ausführbare .exe Datei für unterrichtliche oder private Zwecke zur Verfügung und kann per E-Mail gegen einen Unkostenbeitrag bei mir angefordert werden.

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.

Abb. 4 - ALU Einheit mit ROM. Im ROM sind 14 Befehle abgelegt, die über vier Steuereingänge abgerufen werden können. Als ALU wird der im Abschnitt 1 entwickelte Makrobaustein benutzt. Die Codierung einiger Befehle kann im ROM-Auszugsbild oben abgelesen 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. Jedem Programm ist eine Hilfedatei beigefügt, in der das Programm kurz erklärt wird.

 

Das Programm ALUmitROM.exe kann von mir gegen einen Unkostenbeitrag per E-Mail bezogen werden.

Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf