デジタル回路において、加減算器は数値(特に2進数)の加算や減算を行うことができる回路である。以下は制御信号に応じて加算や減算を行う回路である。加算と減算を同時に行う回路を構成することも可能である。[1]
工事

AとBにnビットの加算器がある場合、S = A + Bとなります。次に、数値が2 の補数であると仮定します。次に、 B − Aを実行するには、2 の補数理論によれば、NOT ゲートを使用してAの各ビットを反転してから 1 を加算します。これにより、S = B + A + 1となり、これは加算器を少し変更するだけで簡単に実行できます。
加算器の各A入力ビットの前に 2 対 1マルチプレクサを配置すると、次のようになります。
- 入力0(I 0)はA
- 入力1(I 1)はA
制御入力Dが初期キャリーにも接続されている場合、修正加算器は
- D = 0の場合の加算、または
- D = 1の場合の減算。
これが機能するのは、D = 1の場合、加算器へのA入力が実際にはAであり、キャリーインが 1 であるためです。BをAと 1に加算すると、目的の減算B − Aが得られます。
各ビットにマルチプレクサを使用せずに数値A を正または負としてマークする方法は、代わりに各ビットの前にXOR ゲートを使用することです。
- XORゲートへの最初の入力は実際の入力ビットである
- 各XORゲートの2番目の入力は制御入力Dである。
これにより、 XOR ゲートの出力はD = 0の場合は入力ビットになり、 D = 1の場合は反転入力ビットになるため、マルチプレクサ ソリューションの場合と同じ、加算器に到着するビットの真理値表が生成されます。
算術論理ユニットにおける役割
加算器は、算術論理ユニット(ALU)のコアの一部です。制御ユニットは、実行されるオペコードに基づいて ALU が実行する演算を決定し、ALU 演算を設定します。上記の加算器-減算器へのD入力は、制御ユニットからのそのような制御ラインの 1 つです。
上記の加減算器は、簡単に拡張してより多くの機能を含めることができます。たとえば、各B iに 2 対 1 のマルチプレクサを導入して、ゼロとB iを切り替えることができます。これを ( D = 1と組み合わせて)使用すると、 − A = A + 1であるため、Aの2 の補数が得られます。
次のステップでは、 Aの 2 対 1 のマルチプレックスを4 対 1 に変更し、3 番目の入力をゼロにして、これをB iに複製すると、次の出力関数が生成されます。
- 0 ( A iとB i入力が両方ともゼロに設定され、D = 0 の場合)
- 1 ( A iとB i入力が両方ともゼロに設定され、D = 1 の場合)
- A ( B i入力をゼロに設定)
- B ( A i入力をゼロに設定)
- A + 1( B i入力をゼロに設定し、 D = 1)
- B + 1( A i入力をゼロに設定し、 D = 1)
- A + B
- A − B
- B − A
- A ( A i を反転に設定し、 B i をゼロに設定し、 D = 0に設定)
- − A(A i を反転に設定し、B i をゼロに設定し、D = 1に設定)
- B ( B i を反転に設定し、 A i をゼロに設定し、 D = 0に設定)
- − B(B i を反転に設定し、A i をゼロに設定し、D = 1に設定)
加算器の前にさらにロジックを追加することで、単一の加算器を単なる加算器以上のもの、つまりALUに変換できます。
参照
参考文献
- ^ Teja, Ravi (2021-04-21). 「バイナリ加算器と減算器」. Electronics Hub . 2022-06-01閲覧。
