Addierer-Subtrahierer
Englisch: adder-subtractor
Eine Schaltung, die binäre Zahlen addieren oder subtrahieren kann.
Addierer-Subtrahierer: eine Schaltung, zwei Rechenmodi
Ein Addierer-Subtrahierer ist eine einzelne digitale Logikschaltung, die Addition und Subtraktion von Binärzahlen unter Kontrolle eines Modusmodes ausführt. Die gleiche Hardware führt jede Operation ohne Neukonfiguration durch und wechselt zwischen ihnen über einen Steuereingang, der typischerweise bestimmt, ob die Schaltung in jedem Taktzyklus oder kombinatorischen Durchgang addiert oder subtrahiert.
Die Schaltung nutzt die Zweierkomplement-Darstellung negativer Zahlen. Um B von A zu subtrahieren, invertiert der Addierer-Subtrahierer alle Bits von B (Einerkomplement) und addiert 1, dann führt er die Standard-Binäraddition mit A durch. Eine Steuerleitung steuert diese Inversion und die Carry-in-Operation; wenn das Modusbit 0 ist, addiert die Schaltung direkt; wenn es auf 1 gesetzt ist, invertiert sie B und erzwingt einen initialen Carry, berechnet also effektiv A minus B. Dieser einheitliche Ansatz macht separate Addierer- und Subtrahierer-Bausteine überflüssig.
Die Implementierung nutzt typischerweise eine Kette von Volladdierer, bei denen XOR-Gatter auf jeder Bitstufe den B-Eingang basierend auf der Modussteuerung bedingt umkehren. Das erste XOR erhält auch das Steuersignal als Carry-in. Ein N-Bit-Addierer-Subtrahierer benötigt N Volladdierer, N XOR-Gatter und minimale zusätzliche Logik, was ihn wirtschaftlicher macht als doppelte Recheneinheiten. Die Ausbreitungsverzögerung wächst mit der Bitbreite, da Carries durch jede Stufe ripple.
Addierer-Subtrahierer erscheinen in Prozessor-Arithmetik-Logik-Einheiten (ALUs), Mikrocontrollern und Signalverarbeitungs-Pipelines, wo beide Operationen erforderlich sind. Sie sind grundlegend für jedes System, das Arithmetik mit Vorzeichen durchführt. Moderne Designs verketten oft schnellere Addierer-Varianten wie Carry-Lookahead oder Kogge-Stone-Strukturen, um Verzögerung und Stromverbrauch in breiteren Datenpfaden zu reduzieren.
Eine häufige Einschränkung ist die Carry-Ausbreitungszeit in Ripple-Carry-Designs, die über 16 oder 32 Bits kritisch wird. Überlauffehler-Erkennung ist auch erforderlich bei der Arbeit mit Ganzzahlen fester Breite; die Schaltung muss kennzeichnen, wenn Ergebnisse den darstellbaren Bereich überschreiten. Diese Anforderungen bestimmen die Wahl zwischen einfachen Ripple-Implementierungen und komplexeren, aber schnelleren Carry-Skip- oder Präfix-Addierer-Topologien in Produktionsdesigns.