論理回路講座 簡単な回路の設計法 | ○ _|___ / \ / ─ ─ \ / (●) (●) \ | (__人__) | | ` ⌒´ | \________/ | | 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
© Copyright 2025 ExpyDoc