Inkrementierer, Dekrementierer und Befehlszähler
← Alle Artikel

Inkrementierer, Dekrementierer und Befehlszähler

6 Min

Plus 1 ist ein Sonderfall

Eine Kette von Volladdierern berechnet A+B für zwei beliebige N-Bit-Zahlen, aber Inkrementieren (genau 1 addieren) addiert immer nur eine Konstante — und wenn ein Operand fest auf 000...001 steht, vereinfacht sich der Großteil der Gatter in der Übertragslogik jedes Volladdierers weg, sodass eine billigere Kette allein aus XOR- und AND-Gattern übrig bleibt.

Der Inkrementierer mit durchlaufendem Übertrag

Bitweise betrachtet:

  • Bit 0 schaltet immer um (0⊕1 oder 1⊕1), und der Übertrag aus Bit 0 ist einfach der aktuelle Wert von Bit 0 selbst.
  • Jedes folgende Bit schaltet nur um, wenn alle niederwertigeren Bits bereits 1 waren — der Übertrag also von Bit 0 aus bis dorthin durchgelaufen ist —, genau das Verhalten „Übertrag in jede Spalte" beim Addieren einer einzelnen 1, und dabei pro Stufe ein Gatter billiger als ein Volladdierer.
A3A2A1A0vorherkippt?nachher1011–kipptkipptkippt11001011 + 1 = 1100: Ein Bit kippt nur, wenn alle niedrigeren 1 waren

Dekrementierer funktionieren spiegelbildlich

Ein Dekrementierer subtrahiert 1 mit derselben Abkürzung, angewandt auf die Subtraktion im Zweierkomplement: Jedes Bit schaltet nur um, wenn alle niederwertigeren Bits bereits 0 waren. Boolflow bietet beide als fertige Blöcke INC4 und DEC4 an.

Der Befehlszähler

Der Befehlszähler einer CPU ist ein gewöhnliches ladbares Register mit einem INC4, dessen Ausgang zurück in seinen eigenen Eingang verdrahtet ist: Bei jedem Takt lädt er entweder ein Sprungziel oder erhöht seinen eigenen aktuellen Wert um eins — genau so schreitet die Befehlsabholung Adresse für Adresse durch den Speicher fort. Führen Sie im Schaltungseditor die Ausgänge eines REG4 über einen INC4 zurück auf seine eigenen Eingänge, und er zählt von selbst; mit einem MUX pro Bit vor den REG4-Eingängen wählen Sie zwischen dem erhöhten Wert und einem Sprungziel.

Einen Inkrementierer im Schaltungseditor bauen →