Die ALU
Die arithmetisch-logische Einheit (kurz: ALU) ist das Herzstück eines jeden Mikrocontrollers.
Sie führt alle Berechnungen, logischen Verknüpfungen, Vergleiche etc. durch.
Schematischer Aufbau
Die Alu bekommt zwei Operanden, welche verknüpft werden. Die Verknüpfung selbst (Addition, Vergleich, ...) wird über ein Steuersignal
ausgewählt, welches anhand des aktuellen Befehls ermittelt wird.

Abb. 1: Input/Output der Alu
Ist ein Parameter der Operation der Accumulator, so wird das Ergebnis wieder im Accumulator gespeichert.
Dies hat den Vorteil, dass sofort mit dem Ergebnis weitergerechnet werden kann, ohne dass es vorher von einer Speicherzelle in eine andere
kopiert werden muss.

Abb. 2: Input/Output der Alu mit Accumulator
Interner Aufbau
In einer Alu befinden sich die Schaltnetze für die unterschiedlichen Verknüpfungen (wie plus, minus, oder ...).
Eine Möglichkeit eine Alu zu realisieren, ist für jede Verknüpfung ein Schaltnetz zu entwickeln und diese parallel zu schalten.
Somit berechnet die Alu die Ergebnisse aller Verknüpfungen parallel.
Am Ausgang der ALU wird ausgewählt, welches dieser Ergebnisse die ALU verläßt. Hierzu kann man für jedes Bit einen Multiplexer einsetzen.
Der erste Multiplexer bekommt das erste Bit jeder Verknüpfung und wählt über die Steuerleitung das gewünschte aus,
der zweite Multiplexer bekommt das zweite Bit jeder Verknüpfung und wählt über die Steuerleitung das gewünschte aus ...
In der Abbildung 3 sieht man diesen Aufbau für eine Alu mit drei Verknüpfungen (plus, minus, oder). Die Parameter
und das Ergebnis sind jeweils vier Bit lang (aus Gründen der Übersichtlichkeit).

Abb. 3: Interner Aufbau einer Alu
Alternativ könnte das Schaltnetz der Alu erstellt und somit als (riesige) Wahrheitstabelle aufstellt werden. Diese Tabelle hat als
Eingänge die zwei Operanden und das Steuersignal und als Ausgang das Ergebnis. Aus der Wahrheitstabelle wird nun die DNF abgelesen und
minimiert. Das Ergebnis dieses Vorgehens währe eine sehr schnelle Alu. Allerdings hätte die Tabelle bei zwei 8 Bit Operanden und 16 Operationen
bereits 4.294.967.296 Zeilen. Somit ist dieses Vorgehen unpraktikabel.