論理回路講座 - 計算技術研究会

論理回路講座
簡単な回路の設計法
|
○
_|___
/
\
/ ─
─ \
/ (●) (●) \
|
(__人__)
|
|
` ⌒´
|
\________/
|
|
NANDゲート
計算技術研究会 3年アプリ班
原橋 典生
今回の目標
•
簡単な回路の設計を通して、論理回路の基礎となるテク
ニックを習得する。
1.
2.
3.
問題文から真理値表の作成
真理値表から積和標準形の式の立式
カルノー図による論理式の簡単化
4.
MaxPlus IIによる回路作成方法
基本事項のおさらい(1)
積和標準形
• 最小項
論理関数F(X0, X1, …, Xn)の引数X0, X1, …, Xnについて、
それらの値の組み合わせをANDで繋げたものを最小項と言う。
例:F(A, B)の最小項は A・B, notA・B, A・notB, notA・notB
• 積和標準形
論理式の各項を最小項にしてORでつなげたもの。
例:F(X, Y, Z) = X・Y + Y・Z
XYの項はZの項が無いのでX・Y・(Z + notZ)と書ける。
YZの項はXの項が無いのでY・Z・(X + notX)と書ける。
よってF(X, Y, Z) = X・Y・(Z + notZ) + Y・Z・(X + notX)
= X・Y・Z + X・Y・notZ + Y・Z・X + Y・Z・notX
基本事項のおさらい(2)
基本ゲートとその真理値表
• NOT回路(否定)
入力に対して反対の値が出力される。
Aが1ならOutは0、Aが0ならOutは1が出力される。
引用元:http://itpro.nikkeibp.co.jp/article/Watcher/20080311/295950/
基本事項のおさらい(2)
基本ゲートとその真理値表
• AND回路(論理積)
入力A, Bが共に1ならば1が、それ以外は0が出力される。
基本事項のおさらい(2)
基本ゲートとその真理値表
• OR回路(論理和)
入力A,Bのどちらかが1ならば1が、両方0ならば0が出力される。
おさらいは以上!
• NOR, NAND, XOR(EOR)は…?
いらない!
なぜならば、基本回路素子であるNOT, AND,
OR があればこいつらは全部表すことができる。
(ただ、試験には出るかも)
例:A XOR B = notA・B + A・notB
問題文から真理値表へ落とし込む(1)
出力を考える
• 問題文を読んで、どんな出力を必要とするかを考える。
例:2ビットの2進数 A1 A0 と B1 B0 を掛け合わせた結果が
S3 S2 S1 S0 になるような回路を設計しなさい。なお、A1とB1
とS3はそれぞれの最上位ビット(MSB)とする。
• 問題文(現実世界)から論理回路の世界へ落とし込む
すなわち、まずは何が出力になるかを考える!
• 出力は何か?
この例の場合は、2ビット同士の2進数を掛け合わせた結果の
4ビットの2進数 S3 S2 S1 S0 が出力になる。よって、それぞれ
の出力されるビットについての論理式を立てる。→真理値表
問題文から真理値表へ落とし込む(2)
真理値表を立てる
• 実際に2ビットの2進数同士の掛け算をやってみる。
→それがそのまま真理値表になる。
真理値表から積和標準形へ
• それぞれの出力のビットについて次のことを行う。
(1)出力の値が1になっている行の入力に注目
(2)そのときの入力を積でつないで最小項化
(3)出力が1の行について、全て最小項化したらORでつなぐ
これを全ての出力ビットについて行ったら終了。
言葉だけだとイメージをつかみにくいので、次のページの例で。
真理値表から積和標準形へ(2)
例えば、出力S2が1になる行を探すと、
左のように網掛けがクロスしている3つ
の行が該当する。
このときの入力A1 A0とB1 B0に注目し
て最小項化する。
例えば、10*10=0100の行の入力につい
て、A1=1, A0=0, B1=1, B0=0 なので、
これを積でつなぐと A1・notA0・B1・
notB0 というようになる。
他にも、10*11=0110の行の入力はA1・
notA0・B1・B0 となり、 11*10=0110の
行の入力は A1・A0・B1・notB0 となる。
これらをORでつなぐと
S2 = A1・notA0・B1・notB0 + A1・
notA0・B1・B0 + A1・A0・B1・notB0
真理値表から積和標準形へ(3)
出力S3、S1、S0もS2の例と同様に行う。
S3 = A1・A0・B1・B0
S2 = A1・notA0・B1・notB0 + A1・notA0・B1・
B0 + A1・A0・B1・notB0
S1 = notA1・A0・B1・notB0 + notA1・A0・B1・
B0 + A1・notA0・notB1・B0 + A1・notA0・B1・
B0 + A1・A0・notB1・B0 + A1・A0・B1・notB0
S0 = notA1・A0・notB1・B0 + notA1・A0・B1・
B0 + A1・A0・notB1・B0 + A1・A0・B1・B0
カルノー図による簡単化
• 今までの論理式は長すぎる!
カルノー図は、そんなあなたのワガママな悩みを解決する、
とても優秀な道具です。ぜひ使いこなしましょう。
(一応真面目な説明)
カルノー図は、最小項の変数を2次元の表に記入して隣り合う
ビット列同士を視覚的に比較することが出来るので、論理式の
簡単化によく用いられる。
カルノー図による簡単化(2)
<基本ルールその1>
カルノー図は列方向(縦)に上位2ビットの変数を、行方向(横)に下位2ビットの
変数を置く。そして、最小項と対応するマスに1を書く。
例:S2 = A1・notA0・B1・notB0 + A1・notA0・B1・B0 + A1・A0・B1・notB0
A1A0
B1B0
00
01
11
10
00
01
11
10
1
1
1
カルノー図による簡単化(2)
<基本ルールその2>
1が縦横に隣り合うマスについて、2のn乗個(=1, 2, 4, 8, …)のマスを囲うよう
に丸をつける。このとき、なるべく丸が1つだけにならないように、つまり、
最小項だけにならないように、最低でも2マスを丸つけると良い。
A1A0
B1B0
00
01
11
10
下の囲み方よりも、左の図のように囲んだほうが
00
簡単化できる。
A1A0
01
01
11
10
00
11
10
00
B1B0
1
1
1
01
11
10
1
1
1
カルノー図による簡単化(3)
<基本ルールその3>
丸をつけたマスについて、その丸をつけられた最小項のビット同士を比べて
値が異なるものを消去して、同じものだけを式として記述する。それを全部の
丸について行った後に、ORで結合する。
A1A0
B1B0
00
01
11
10
00
A1とA0は値が同じ。(A1=1, A0=0)
B1とB0について、B0の値が違う。
よって、B0を消去して A1・notA0・B1
B1とB0は値が同じ。(B1=1, B0=0)
01
A1とA0について、A0の値が違う。
11
10
1
1
1
よって、A0を消去して A1・B1・notB0
よってこれらをORでつないで
S2 = A1・notA0・B1 + A1・B1・notB0
カルノー図による簡単化(4)
となりあうマスというのは、上下左右突き抜けていてもOKなので注意。
もしも下の例のように1が立っていたら…
A1A0
B1B0
00
00
01
11
1
1
10
A1A0
B1B0
00
00
01
11
1
1
10
01
1
1
01
1
1
11
1
1
11
1
1
10
1
1
10
1
簡単化された式は notA0・B0 + A0・notB0
1
カルノー図による簡単化(5)
S3, S1, S0についても同様に簡単化作業を行っていく。
S1 = notA1・A0・B1・notB0 + notA1・A0・B1・B0
+ A1・notA0・notB1・B0 + A1・notA0・B1・B0
+ A1・A0・notB1・B0 + A1・A0・B1・notB0
S3 = A1・A0・B1・B0
A1A0
B1B0
00
01
11
10
A1A0
B1B0
00
00
01
01
11
10
S3 = A1・A0・B1・B0
→簡略化できない。
1
00
01
11
1
10
1
11
10
1
1
1
1
S1 = A1・notB1・B0 + A1・notA0・B0 +
A0・B1・notB0 + notA1・A0・B1
カルノー図による簡単化(6)
S0 = notA1・A0・notB1・B0 + notA1・A0・B1・B0
+ A1・A0・notB1・B0 + A1・A0・B1・B0
A1A0
01
11
01
1
1
11
1
1
B1B0
00
00
10
S0 = A0・B0
10