第 3 回 組み合わせ回路
1. 実験目的
組み合わせ回路(Combinational logic)は現在の入力のみで出力が決まる回路である.論理ゲートを 組み合わせればどんな論理回路も構成することができる.CPU の演算論理装置(ALU, Arithmetic
and Logic Unit )も組み合わせ回路で構成されている.本実験の目的は,真理値表から論理回路を書
き起こし,ブレッドボードでその動作を確認することである.はじめに 3 の正の倍数を検出する論 理回路を設計する.次に 1 ビットの加算器である半加算器,全加算器を設計し,計算機の計算原理 を理解する.
2 使用器具
・ ブレッドボード(サンハヤト社製ICトレーナー CT-311R,単三型Eneloop電池×4取付済)
・ ロジックIC,74LS00(2入力NAND), 74LS04(NOT), 74LS08(2入力AND), 74LS32(2入力OR),
74LS02(2入力NOR) (各ブレッドボードに取付済)
・ ジャンプワイヤー(黒,赤,黄,青,白,各6本計30本,ICトレーナーケース内に同梱)
3 【実験1】3の正の倍数検出回路
3の正の倍数検出回路とは文字通り,3の正の倍数が入力された時に出力が真になる論理回路であ る.今回は3入力1出力の論理回路を設計する.設計の流れは,(1)真理値表を作り,(2)論理式を書 き起こし,(3)ゲート図を描く.実験はゲート図に基づいてブレッドボードのゲートICに配線して動 作確認を行う.
3.1 真理値表
真理値表(Truth table)とは論理式および論理回路において,すべての入出力の結果を表にし たものである.3の正の倍数回路の真理値表を表1に示す.網掛けが3の正の倍数である.入 力C,B,Aの並びは最下位ビット(LSB, least significant bit)がAとなるように並べている.
表1: 3の正の倍数検出回路の真理値表
入力 出力
(参考)10進数 C B A Z
0 0 0 0 0
1 0 0 1 0
2 0 1 0 0
3 0 1 1 1
4 1 0 0 0
5 1 0 1 0
6 1 1 0 1
7 1 1 1 0
3.2 論理式
論理式は,真理値表の出力が真(Z=1)となる場合を抽出して記述する.表1の場合,Z=1(3 の正の倍数)となるのは,
(C=0 かつ B=1 かつ A=1) または (C=1 かつ B=1 かつ A=0) ・・・(式1) であるから,
Z=C∙B∙A+C∙B∙A ・・・・・・・・・・・・・・・・・・・・・・・(式2) と書ける.
3.3 ゲート図
ゲート図は論理式をゲート記号に置き換えて配線した図である.式2をゲート図で描くと図
1になる.
図1: 3の正の倍数検出回路のゲート図
3.4 実験
図1をブレッドボード上のゲートICを使って配線しなさい(参考:図2).なお,ブレッド ボード上には3入力ANDは無いので,2入力ANDを2つ組み合わせて3入力ANDを構成 しなさい.配線が終わったら真理値表通りに動作するか確認しなさい.動作が確認できたら実
図2: (参考) 3の正の倍数検出回路の実体配線
4 【実験2】半加算器,全加算器
半加算器(Half adder)は加算器の一つで,2 進数の一桁の加算を行なう論理回路である.デジタ ル回路では,加減算などの演算は常に2進数で行なわれている.その回路において,半加算器が用 いられる.半加算器だけでは 2進数の一桁しか計算できず下の桁からの繰り上がり(Carry in)が処 理できないが,半加算器を二つ組み合わせると全加算器(Full adder)となり,下の桁からの繰り上 がりを含めた2進数の一桁の加算が実現できる.
4.1 半加算器
半加算器は 1ビット1桁の足し算を行う2入力2出力の論理回路である.算術式ではA+B=S 繰り上がりCoと書け,A,Bは入力,Sは合計,Coは次の桁への繰り上がり(Carry out)である.
半加算器の真理値表を表2に示す.
表2: 半加算器の真理値表
入力 出力
A B Co S 参考
0 0 0 0 0+0=00
0 1 0 1 0+1=01
1 1 1 0 1+1=10
1 0 0 1 0+1=01
A・B A○+B
さて,表2を見るとSはA○+B(XOR,排他的論理和),CoはA・B(AND,論理積)になって いることに気付くだろう.このことから,ゲート図は,図3のように描くことができる.
図3: 半加算器のゲート図
4.2 半加算器の実験
ブレッドボード上にはXORのゲートICが無いため,図3をそのまま配線することはできな い.そこでNANDゲートでXORを実現する(詳しくは第1回「デジタル回路の基礎」を参照).
図4にNANDゲートとNOTゲートによる半加算器のゲート図を示す.Coは初段のNAND
を否定(NOT)してA・Bを得ている.もちろん直接ANDゲートを使ってもよいが,こちらの
ほうが配線数が少ない.
図4をブレッドボード上のゲートICを使って配線しなさい.配線が終わったら真理値表通 りに動作するか確認しなさい.動作が確認できたら実験値をノートに記録し,回路を撮影する こと.
図4: NANDゲートとNOTゲートによる半加算器
4.3 全加算器
全加算器は二つの半加算器を組み合わせた繰り上がりを考慮した3入力2出力の論理回路で ある.半加算器は前の桁からの繰り上がり(Ci: Carry in)を足すことができない.そこで入力 A,Bを足すのに半加算器を1個,その答えと前の桁からの繰り上がり(Ci)を足すのに1個,合 わせて2個あれば1ビット一桁の計算が完全に行える.これを全加算器という.なお,参考ま でに32ビット (32桁)の加算機を実現するには,全加算器を32個(半加算器を64個)用意すれ ば良い.表3に全加算器の真理値表を,図5に半加算器2個によるゲート図を示す.半加算器 IはA,Bの加算を行いその合計SIと繰り上がりCIを出力する.半加算器IIはSIとCiを加算 しその合計Soutと繰り上がりCIIを出力する.CoはCIとCIIの論理和(OR)で出力される.な
S A,B,Ci 3 XOR Co A,B,Ci 3
Co
表3: 全加算器の真理値表
入力 出力
Ci A B Co S 参考
0 0 0 0 0 0+0+0=00
0 0 1 0 1 0+0+1=01
0 1 1 1 0 0+1+1=10
0 1 0 0 1 0+1+0=01
1 1 0 1 0 1+1+0=10
1 1 1 1 1 1+1+1=11
1 0 1 1 0 1+0+1=10
1 0 0 0 1 1+0+0=01
A ,B,Ciの 多数決回路
A○+ B○+ Ci 3入力XOR
図5: 2個の半加算器による全加算器
4.4 全加算器の実験
ブレッドボード上にはNANDのゲートICが1つしか無いためNANDゲートによる半加算 器を2つ作ることが出来ない.そこでNOR(否定論理和)のゲートIC他を用いて2個目の半加 算器を作成する.参考までに,どんな論理回路もNANDゲートで作ることができるが,NOR ゲートでも同様に作ることができる.図6にNORゲートによるXOR回路を示す.
図6: NORゲートによるXOR回路
これで解決したように思えるが,残念ながらブレッドボード上のNORのICは4ゲートし かない.図6は5ゲートある.代替案として1個のNORゲートをORゲートとNOTゲート で実現すれば良いが,それで全加算器を配線するとジャンプワイヤーが30本以上必要になり 現在の使用器具では実験できないことが分かった(次年度以降で買い足すかも知れない).そ こでジャンプワイヤー30本以内で足りる論理回路を以下に説明する.
i
o
図7: 図6の一部をANDゲートに置き換える説明図
図7の破線で囲んだ部分はド・モルガンの法則よりA+B=A∙Bと書き換えることができる ので3ゲートを1ゲートに簡略化できる.これにより,半加算器のゲート図は図8のように描 ける.CoはA・Bなのでそのまま引き出せる.これでブレッドボード上に2個目の半加算器 が配線できる.
図8: NORゲートとANDゲートによる半加算器
図4(半加算器Iとして)と図8(半加算器IIとして)を組み合わせ,図5をブレッドボード上に 配線しなさい(参考:図9).配線が終わったら真理値表通りに動作するか確認しなさい.動作 が確認できたら実験値をノートに記録し,回路を撮影すること.
9: ( )
A B
A B
S Co
5. レポート報告事項
【実験1】【実験2】について実験目的,実験方法,結果,考察,結論のように章立てし報告する こと.実体配線写真または実体配線図を図示すること.
6. 発展課題
実験1,実験2が終了した者は,以下の発展課題を任意で行ってもよい.
【実験3】複数名(n人)でnビットの2進数に対する全加算器を構成し,動作を確認する.
例えばn=4とする.2つの4ビットの2進数𝐴!𝐴!𝐴!𝐴!と𝐵!𝐵!𝐵!𝐵!の加算は,筆算による加算と同じく,
以下のようにして行うことができる.
𝐴!+𝐵! ⇒ 合計𝑆!,繰り上がり𝐶! 𝐴!+𝐵!+𝐶! ⇒ 合計𝑆!,繰り上がり𝐶! 𝐴!+𝐵!+𝐶! ⇒ 合計𝑆!,繰り上がり𝐶! 𝐴!+𝐵!+𝐶! ⇒ 合計𝑆!,繰り上がり𝐶!
加算結果は𝐶!𝑆!𝑆!𝑆!𝑆!となる.(𝐶! =1となるのは,加算結果が4ビットを超える数になった場合である)
上記より,以下の図10のように配線するとnビット2進数の全加算器を得ることができる.
図10: nビット全加算器の構成法
このとき,図11のようにプレッドボードのグランド(GND,0V)同士を接続することが必要になる.
A B Ci
Co S 全加算器n
A B Ci
Co S 全加算器2
A B Ci
Co S 全加算器1
…
A B Ci
Co S 全加算器3
A2 A1 A3
An Bn B3 B2 B1
S2 S1 S3
Cn+1 Sn
図11: グランドの相互接続
【実験4】実験3で作成したnビット加算器において,負の数を2の補数で表現することによって,
引き算ができることを確認する.
例えば4ビットの場合MSBが1である1000(2)から1111(2)で-8(10)から-1(10)までの負の数を表現する.
6-2を実行する場合は6+(-2)を行えばよいので0110(2)+1110(2)を行うと0100(2)が得られる.いくつかの数 値例に対して引き算が正しく実行されることを確認すること.
プレッドボードn
GND
プレッドボード3
GND
プレッドボード1
GND
プレッドボード2