【半加算回路】
この回路は1桁の2進数の足し算だけを扱える。
A
+ B
───
XY
と表すと、ABXYの組合せは次のようになる。
A B X Y
0 0 0 0 2進数の計算 0+0 = 0 を表す
0 1 0 1 2進数の計算 0+1 = 1 を表す
1 0 0 1 2進数の計算 1+0 = 1 を表す
1 1 1 0 2進数の計算 1+1 =10 を表す
これを実現する回路は次のような構造になる。
┌────────┐
A──┬─────┤ 排他的論理和 │
│ │ ├────Y
│ ┌──┤ (EOR) │
│ │ └────────┘
│ │
│ │ ┌────────┐
└─────┤ 論理積 │
│ │ ├────X
B─────┴──┤ (AND) │
└────────┘
【全加算回路】
全加算回路の足し算では「繰り上がり」を考える必要がある。
例えば2進数で101+11を計算することを考える。
ABCD
↓↓↓↓
101
+ 11
─────
1000
となるが、各桁でどういう計算をしているかを考える。
Dの桁は単純に半加算回路で示したような計算をするだけである。
つまり、1+1=10だから、繰り上がりが1でこの桁に0が残る。
Cの桁が全加算回路そのものの動きをする。つまりここでは、2つの数を
加えているのではなく、繰り上がりを含めた3つの数を加えているのである。
0+1+(繰り上がりの1)= 10だから
繰り上がりが1でこの桁に0が残る。
Bの桁も同様である。
1+0+(繰り上がりの1)= 10だから
繰り上がりが1でこの桁に0が残る。
Aの桁も同様である。
0+0+(繰り上がりの1)= 1だから
繰り上がりが0でこの桁に1が残る。
要するに繰り上がりを含めた3つの0または1を加える処理をしている。
これを回路図にすると、次のようになる。
繰り上がり ┌───┐
K──────────┤ ├──────────Y
│半加算│
┌───┐ │回路2│ ┌───┐
A──┤ ├───┤ ├───┤ │
│半加算│ └───┘ │論理和│
│回路1│ │ OR├──X
B──┤ ├───────────┤ │
└───┘ └───┘
計算そのものは、下位の桁からの繰り上がりをKとすると
K
A
+ B
───
XY
となる。
このままではわかりにくいであろうから、それぞれの回路の出力も順番に
チェックしていく。便宜的にabcと記号を付す。
繰り上がり ┌───┐
K──────────┤ ├──────────Y
│半加算│
┌───┐ │回路2│ ┌───┐
A──┤ ├─b─┤ ├─c─┤ │
│半加算│ └───┘ │論理和│
│回路1│ │ OR├──X
B──┤ ├─a─────────┤ │
└───┘ └───┘
まず、半加算回路1については、
A
+ B
───
ab
であるから
A B a b
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
次に、半加算回路2については、
K
+ b
───
cY
であるから
K b c Y
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
最後にOR回路については、
a c X
0 0 0
0 1 1
1 0 1
1 1 1
となる。以上から、下表が成り立つ。
K A B X Y
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
【フリップフロップ (flip-flop)】
フリップフロップ(flip-flop) とは、1ビット( 0 or 1 ) の情報を保持できる
構成の回路を言います。
SRAMの記憶セルに使用され、二つの安定状態を持つ回路であり、順序回路の
基本構成要素となる。