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.

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. Verbinden Sie im Schaltungseditor den Ausgang eines INC4 mit dem Eingang eines REG4, um einen zu bauen.

Einen Inkrementierer im Schaltungseditor bauen →