加算器

目次


加算器の構成

半加算器 (Half Adder)

2進数の足し算:
      0+0=0,  0+1=1,  1+0=1,  1+1=102
A,Bを入力,C,Sを出力とする2入力2出力,1ビットの加算回路を設計する:


半加算器

      A + B = 2×C + S,        (A, B, C, S =  0 or 1)

半加算器の真理値表
AB C S
00 00
01 01
10 01
11 10

S: Sum(合計),   C: Carry(桁上がり,繰り上がり)

      C = A·B
      S = A·B + A·B = A⊕B


<
先頭へ>


全加算器 (Full Adder)

複数桁の加算を行う場合,下の桁からの桁上がりを考慮する必要がある.


全加算器

全加算器の真理値表
AB Ci Co S
000 00
001 01
010 01
011 10
100 01
101 10
110 10
111 11

C0 = A·B + B·C1 + C1·A

S = A·B·C + A·B·C + A·B·C + A·B·C
   = A·(B·C + B·C) + A·(B·C + B·C)
   = A·(B⊕C) + A·(B⊕C)
   = A⊕(B⊕C)
   = A⊕B⊕C


<先頭へ>


加算回路

1ビットの加算

A + B = (CS)2

2ビットの加算

(A1 A0)2  +  (B1 B0)2

Full Adder と Half Adder で構成した 2ビット加算回路

2ビット加算回路のタイムチャート

3ビットの加算:

(A2 A1 A0)2  +  (B2 B1 B0)2

3ビット加算器

<先頭へ>


加算器を利用した減算

補数を用いた負数の表現

  1. 符号を取り除いた値を2進数で表す
  2. 先頭に0を追加する
  3. 各桁の0と1を入れ替える
  4. 1を加える

補数を使用した減算の計算

補数を用いると
      X - Y = X + (Yに対する補数)
により,加算器を用いて減算を行うことができる.

[例1] X=101=(5)10, Y=11=(3)10のとき,X-Yを求める.

(1) 符号ビットを含めて全体を4桁に揃える X=0101, Y =0011
(2) -YをYに対する2の補数により表現(=Y')する Y'=1100+1=1101
(3) X+Y'を求める.このとき,桁溢れは無視する X+Y'=0101+1101=(1)0010
(4) 得られた 0010 は,先頭ビットが0であるから正の数である. X+Y'= 00102 = (2)10

[例2] X=011=(3)10, Y=101=(5)10のとき,X-Yを求める.

(1) 符号ビットを含めて全体を4桁に揃える X=0011, Y =0101
(2) -YをYに対する2の補数により表現(=Y') Y'=1010+1=1011
(3) X+Y'を求める. X+Y'=0011+1011=1110
(4) 得られた 1110 は先頭が1であるから,負数を合わす.
そこで,補数を求める (X+Y')' = 0001+1 = 210
したがって, X-Y = -0102 =-210

3ビットの減算:

(A2 A1 A0)  -  (B2 B1 B0)

(B2 B1 B0) に対する2の補数との加算を行う.

Bに対する2の補数:
(B2 B1 B0)'  =  (B2 B1 B0) + 1

ここで,Bkは,Bkの反転(0と1を入れ替えたもの)を表す.(k=0, 1, 2)

3ビット減算器

<先頭へ>

加減算回路

排他的論理和(ex-or)回路をスイッチとして使用することで, 加減算回路が構成できる.
SUB=0のときは加算動作,SUB=1のときは減算動作をする
加算回路 減算回路

3ビット加減算器

加減算回路における ex-or 回路の働き
Bk SUB Bk⊕SUB
00 0
10 1
01 1
11 0
Bk SUB Bk⊕SUB
Bk0 Bk
Bk1 Bk
 


2進8ビット加算回路の構成例

    01101101(2) + 01011101(2)

全加算器(Full Adder)により構成した加算回路
<先頭へ>


演習問題

[1]

[2]


シミュレーション

シミュレーションにより次の回路の動作を確認する:


達成目標