Sčítačka – odečítač - Adder–subtractor

V digitálních obvodech je sčítač-odečítač obvod, který je schopen sčítat nebo odečítat čísla (zejména binární ). Níže je obvod, který přidává nebo odečítá v závislosti na řídicím signálu. Je také možné zkonstruovat obvod, který provádí sčítání i odčítání současně.

Konstrukce

A 4-bitové zvlnění-carry sčítacího a odčítacího obvodu na bázi 4-bitové sčítačky, který provádí doplněk dvojkový na A , když D = 1 , čímž se získá S = B - A .

n bitový navýšení pro A a B , pak S = + B . Pak předpokládejme, že čísla jsou v komplementu dvou . Pak k provedení B - A říká teorie dvou komplementů, že každý bit A invertuje pomocí brány NOT a pak přidá jeden. Tím se získá S = B + A + 1 , což je snadné u mírně upraveného sčítače.

Předcházením každého vstupního bitu A na sčítači pomocí multiplexeru 2 na 1, kde:

  • Vstup 0 ( I 0 ) je A.
  • Vstup 1 ( I 1 ) je A.

který má řídicí vstup D, který je také připojen k počátečnímu přenosu, pak provede upravenou sčítačku

  • přidání, když D = 0 , nebo
  • odečtení, když D = 1 .

To funguje proto, že když D = 1 vstup sčítačky je skutečně a přenášení v je 1. Přidání B na A a 1 se získá požadovaná odečtení B - A .

Způsob, jak můžete označit číslo A jako kladné nebo záporné bez použití multiplexeru na každém bitu, je použít místo toho před každým bitem bránu XOR .

  • První vstup do brány XOR je skutečný vstupní bit
  • Druhým vstupem do brány XOR pro každý je řídicí vstup D

To vytváří stejnou pravdivostní tabulku pro bit přijíždějící na sčítač jako řešení multiplexeru, protože výstup brány XOR bude takový, jaký je vstupní bit, když D = 0 a obrácený vstupní bit, když D = 1 .

Role v aritmetické logické jednotce

Doplňky jsou součástí jádra aritmetické logické jednotky (ALU). Řídicí jednotka rozhodne, které úkony ALU je třeba provést (založený na operační kód být vykonán) a nastaví operaci ALU. Vstup D do sčítače a odečítače výše by byl jeden takový ovládací řádek z řídicí jednotky.

Výše uvedený sčítač a odečítač lze snadno rozšířit tak, aby zahrnoval více funkcí. Například, multiplexer 2-k-1 by mohly být zavedeny na každý B i , které by přepínání mezi nulou a B i ; to by mohl být použit (ve spojení s D = 1 ), čímž se získá doplněk dvojkového z A , protože - A = A + 1 .

Dalším krokem by byla změna multiplexu 2 na 1 na A na 4 na 1 s třetím vstupem nulovým, pak replikace na B i, čímž se získá následující výstupní funkce:

  • 0 (s oběma vstupy A i a B i nastavenými na nulu a D = 0 )
  • 1 (s oběma vstupy A i a B i nastavenými na nulu a D = 1 )
  • A (se vstupem B i nastaveným na nulu)
  • B (se vstupem A i nastaveným na nulu)
  • A + 1 (se vstupem B i nastaveným na nulu a D = 1 )
  • B + 1 (se vstupem A i nastaveným na nulu a D = 1 )
  • A + B
  • A - B
  • B - A
  • A (s A i nastaveným na inverzi; B i nastaveným na nulu; a D = 0 )
  • - A (s A i nastaveným na inverzi; B i na nulu; a D = 1 )
  • B (s B i nastaven na invert; A i nastaven na nulu; a D = 0 )
  • - B (s B i nastavenou na invert; A i nastavenou na nulu; a D = 1 )

Přidáním další logiky před sčítač lze jeden sčítač převést na mnohem víc než jen sčítač - ALU.

Viz také