前回の記録で紹介した論理素子はただの部品に過ぎない. 論理素子を意味のある順番に組み合わせることで実用性が生まれる. ここでは半加算器と全加算器,2つの加算器(足し算装置)を紹介する. 論理素子を組み合わせることで出来る加算器なので,足し合わせる数値は2進数となる. ここでは2つの数値の足し算だけを考える. 3つの数値の足し算やそれ以上多くの数値の足し算は考えないこととする. 以下に足し算の例を挙げる. "Base 2"は2進数の意.
1 + 1 = 10 (Base 2) 100 + 11 = 111 (Base 2) 101 + 11 = 1000 (Base 2) 111 + 111 = 1110 (Base 2)
111 110 100 000
+111 +110 +100 +000
---- → ---- → ---- → ----
0000 0010 0110 1110 (Base 2)
2つ目(2桁目)の計算1+1+1は10+1に等しいので結果11となる. よって2桁目の答えは1で3桁目への繰り上がりも1である. 3桁目の計算も同様. よって111+111=1110と求まる. 10進数へ変換すると7+7=14であり,確かに正しい. 上の足し算を文字(代数)を使って一般化してみよう.
+111 +110 +100 +000
---- → ---- → ---- → ----
0000 0010 0110 1110 (Base 2)
A3 A2 A1 A3 A2 0 A3 0 0 0 0 0
+ B3 B2 B1 + B3 B2 0 + B3 0 0 + 0 0 0
---------- → ---------- → ---------- → ----------
0 0 0 0 0 0 C2 S1 0 C3 S2 S1 C4 S3 S2 S1
足し合わせる数値は2つの3桁からなる2進数AとBとした. 各桁には番号が振ってあり,例えばA2は数値Aの2桁目の値(1か0)だと分かるように成っている. 計算結果はSと書いた. また,桁上りはCとして計算結果Sとは区別した. 以上の例から次のことが言える.+ B3 B2 B1 + B3 B2 0 + B3 0 0 + 0 0 0
---------- → ---------- → ---------- → ----------
0 0 0 0 0 0 C2 S1 0 C3 S2 S1 C4 S3 S2 S1
- 各桁の足し算では"その桁の結果S"と"桁上りC"2つの2進数が得られる.
- 最下位桁では"A0"と"B0"2つの2進数を足し合わせれば良い.
- 最下位桁以外では"A"と"B"に加え"下の桁からの桁上りC"も加算する.
上のリストを言い換えると,最下位桁では"2入力2出力の足し算"が行われ,それ以外の桁では"3入力2出力の足し算"が行われていると言える. この"2入力2出力の足し算"を行う装置を半加算器と呼び,"3入力2出力の足し算"を行う装置を全加算器と呼ぶ.
半加算器
- 数値AとBの最下位桁同士を足し合わせる.
- 最下位桁の結果S0と桁上りC1を出力する.
全加算器
- 数値AとBと桁上りCを足し合わせる.
- その桁の結果Sと桁上りCを出力する.
半加算器 Half-Adder
入力 | 出力 | ||
---|---|---|---|
A | B | C | S |
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
全加算器 Full-Adder
入力 | 出力 | |||
---|---|---|---|---|
A | B | C-1 | C | S |
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 |
図中の"Half Adder"が半加算器である. 左側に入力端子を,右側に出力端子を描いた. 上の回路が全加算器の中身である. 全加算器の入力であるAとBを1つ目の半加算器に入力し,その出力SとC-1を2つ目の半加算器に入力する. これで2つ目の半加算器の出力Sは全加算器の出力Sと成り,2つの半加算器の桁上り出力が全加算器の出力Cとなる. 桁上りの部分にORを入れることで,2つの半加算器の桁上りをひとつの出力へまとめている. このように全加算器は半加算器2つによって実現出来る.
nビット加算器 n-bit Adder
2進数最下位桁の足し算を行う半加算器と,その他の桁の足し算を行う全加算器を組み合わせることで,任意の桁数の足し算器を構成することが出来る. ここでは,n桁(n-bit)の加算器を紹介する.
入力のA1からAnは,ひとつ目の数値Aの1からn桁目を表す. ふたつ目の数値Bについても同様である. 加算結果Sも1からnまであり,最上位桁には繰り上げのCもある. 例えば111+101を行うとする. 最高桁数は3桁なので3ビット加算器があれば良い(n=3). そして各入力は次のようになる.
入力のA1からAnは,ひとつ目の数値Aの1からn桁目を表す. ふたつ目の数値Bについても同様である. 加算結果Sも1からnまであり,最上位桁には繰り上げのCもある. 例えば111+101を行うとする. 最高桁数は3桁なので3ビット加算器があれば良い(n=3). そして各入力は次のようになる.
- (1 1 1) = (A3 , A2 , A1)
- (1 0 1) = (B3 , B2 , B1)
- (1 1 0 0) = (C, S3 , S2 , S1)
以上,加算器を紹介した. 実は半加算器の代わりにすべて全加算器で構成した加算器も存在する. その場合,最下位桁の桁上げ入力を"補数"として用いることで引き算も行える回路を組むことが出来るようになる. この引き算の方法は,以前作成したZuseの加算回路を参照されたい.
5034363784819393457
https://www.storange.jp/2014/09/03.html
https://www.storange.jp/2014/09/03.html
回路 | ディジタルロジック03
2014-09-04T14:38:00+09:00
https://www.storange.jp/2014/09/03.html
Hideyuki Tabata
Hideyuki Tabata
200
200
72
72