論理式の簡単化 - kb.ecei.tohoku.ac.jpkoba/class/keisanki-gaku/5-27.pdf ·...
TRANSCRIPT
論理式の簡単化
補足:論理式の標準形に関する用語
xy + yz + zx積和標準形
積和形
積和形積項の和の形
~xyz+x~yz+xy~z+xyz
最小項展開
主積和標準形
最小項展開
積和標準形
最小項の和の形
例(3変数関数の
場合)講義教科書
今日の講義内容
• 前回のレポート課題の解説
• 論理式の他の簡単化手法
– クワイン-マクラスキ法
– コンセンサス法
• ドントケア(don’t care)入力のあるもとで
の論理式の簡単化
第2回レポート課題
• 2つの2桁の2進数(x2x1とy2y1)の掛け算の演算結果をz4z3z2z1とする。
(1)z3を表すカルノー図を作れ
(2)(1)を用いてz3をなるべく簡単な積和標準形で
表せ。
今日の講義内容
• 前回のレポート課題の解説
• 論理式の他の簡単化手法
– クワイン-マクラスキ法
– コンセンサス法
• ドントケア(don’t care)入力のあるもとで
の論理式の簡単化
クワイン-マクラスキ法の概要
(1)主項の集合を求める
(2)(1)で求まった主項の中から最小被覆集合を求める
カルノー図が上の2つのステップを人間の視覚に頼っていたのに対し、表などを使って機械的に行う。
クワイン-マクラスキ法
主項の求め方の概要
1-1: 簡単化したい論理関数の最小項をすべて
求める
1-2: xEと~xEという形の部分積項があればそれらをEに置き換えるという作業を繰り返す
(xE + ~xE = (x+~x)E = 1・E = E)1-3: 1-2で置き換えられるものがなくなった時に
残っているものすべてが主項
クワイン-マクラスキ法
主項の求め方の概要
1-1: 簡単化したい論理関数の最小項をすべて
求める(最小項展開を求める)
x1x2x3 意味
~x1~x2x3~x1x2~x3x1~x2x3x1x2~x3x1x2x3
001010101110111
クワイン-マクラスキ法
主項の求め方の概要
1-2: xEと~xEという形の部分積項(= 一箇所だけ0,1が異なる列)があればそれらをEに置き
換えるという作業を繰り返す
x1x2x3(~x2x3)001
010101110111
-01✔
✔
クワイン-マクラスキ法:
主項の求め方の概要
1-2: xEと~xEという形の部分積項(= 一箇所だけ0,1が異なる列)があればそれらをEに置き
換えるという作業を繰り返す
x1x2x3-01001
010101110111
✔
-10✔
✔
✔
クワイン-マクラスキ法:
主項の求め方の概要
1-2: xEと~xEという形の部分積項(= 一箇所だけ0,1が異なる列)があればそれらをEに置き
換えるという作業を繰り返す
x1x2x3-01001
010101110111
✔
-10✔
1-1✔
✔
✔
クワイン-マクラスキ法:
主項の求め方の概要
1-2: xEと~xEという形の部分積項(= 一箇所だけ0,1が異なる列)があればそれらをEに置き
換えるという作業を繰り返す
x1x2x3-01001
010101110111
✔
-10✔
1-1✔
11-✔
✔
クワイン-マクラスキ法:
主項の求め方の概要
1-3: 1-2で置き換えられるものがなくなった時に残っているものすべてが主項
x1x2x3-01-101-111-
001010101110111
✔
✔
✔
✔ 主項✔
クワイン-マクラスキ法:
主項の求め方の概要
置き換えられるかどうかの見分け方のコツ:
表を1の数によって分割しておき、-の数が同じで1の数が一つだけ異なるもの同士だけを比べる
-01001010101110111
✔
-10✔
1-1✔
11-✔
✔
クワイン-マクラスキ法の概要
(1)主項の集合を求める
(2)(1)で求まった主項の中から最小被覆集合を求める
クワイン-マクラスキ法の概要:
最小被覆集合の求め方2-1: 主項と最小項との対応表を作る
✘✘11-
✘✘1-1
✘✘-10
✘✘-01
111110101010001
クワイン-マクラスキ法の概要:
最小被覆集合の求め方2-2: 必須主項(= ✘が一つしかついていない最小項を覆う主項)を求める
✘✘11-
✘✘1-1
✘✘-10
✘✘-01
111110101010001
クワイン-マクラスキ法の概要:
最小被覆集合の求め方2-2: 必須主項(= ✘が一つしかついていない最小項を覆う主項)を求める
✘✘11-
✘✘1-1
✘✘-10
✘✘-01
111110101010001
クワイン-マクラスキ法の概要:
最小被覆集合の求め方2-2: 必須主項(= ✘が一つしかついていない最小項を覆う主項)を求める
✘✘11-
✘✘1-1
✘✘-10
✘✘-01
111110101010001
クワイン-マクラスキ法の概要:
最小被覆集合の求め方2-2: 必須主項(= ✘が一つしかついていない最小項を覆う主項)を求める
✘✘11-
✘✘1-1
✘✘-10
✘✘-01
111110101010001
クワイン-マクラスキ法の概要:
最小被覆集合の求め方2-2: 必須主項(= ✘が一つしかついていない最小項を覆う主項)を求める
✘✘11-
✘✘1-1
✘✘-10
✘✘-01
111110101010001
クワイン-マクラスキ法の概要:
最小被覆集合の求め方2-3: 残っている最小項を覆う主項の集合を論理式
を使って求める
残っている最小項:1111-1, 11-を使うかどうかを表す論理変数: U1, U2111を覆うための条件式:U1+U2
{-01, -10, 1-1} および{-01, -10, 1-1}が最小被覆集合
✘✘11-✘✘1-1
✘✘-10✘✘-01
111110101010001
クワイン-マクラスキ法の概要:
最小被覆集合の求め方2-3: 残っている最小項を覆う主項の集合を論理式を使って求め
る
一般には…必須主項に覆われない最小項:p1,…, pnpiを覆う主項:qi1,…qik主項qijを用いるかどうかを表す論理変数: Uijとすれば、
すべての論理式が覆われるための条件式は
(U11+…+U1k)(U21+…+U2k)…(Un1+…+Unk)↓積和標準形に変換
U11…U1j1+ … + Ui1…Uiji変数Uiの数が一番少ない項を選べばよい
クワイン-マクラスキ法:適用例
x1x2x3x4
000000010100001111000111101111011111
クワイン-マクラスキ法の利点・欠点
• 利点
– (カルノー図による方法と異なり)計算機で実行可能
• 欠点
– 計算時間、メモリ使用量が変数の数の指数オーダー(∵n変数の積項の数は最悪3n)
今日の講義内容
• 前回のレポート課題の解説
• 論理式の他の簡単化手法
– クワイン-マクラスキ法
– コンセンサス法
• ドントケア(don’t care)入力のあるもとでの論理式(部分論理関数の論理式)の簡
単化
コンセンサス法の概要
ステップ1:
簡単化したい論理関数fを積和形(必ずしも最小項
展開ではない)から主項の集合を求める
ステップ2:
最小被覆集合の近似解を求める
ポイント:最小項展開をしなくてよいので計算量の爆発を抑えられる。常に最適解が求まるわけではない
コンセンサス法
ステップ1:主項集合の求め方
(1)簡単化したい論理関数fを積和形(必ずしも最小項
展開ではない)で表し、その積項を主項の候補とする。
(2)主項の候補集合Sを以下の繰り返しで変更する。
• Sの中にxE, ~xFの形の論理式(ただしE,Fが同じ変数を含むときは肯定同士または否定同士)があり、EFを覆う積項がSにない場合
(2-1) EFに覆われる積項をSから削除し
(2-2) EFをSに追加
(3)(2)で追加するものがなくなった時、Sは主項の集
合
ステップ1:主項集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
コンセンサス法
(1)簡単化したい論理関数fを積和形(必ずしも最小項
展開ではない)で表し、その積項を主項の候補とする。
S0 ={0-1-, 1-01, 0101, 111-, 011-, 00-1}
ステップ1:主項集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
コンセンサス法
(2)主項の候補集合Sを以下の繰り返しで変更する。
• Sの中にxE, ~xFの形の論理式(ただしE,Fが同じ変数を含むときは肯定同士または否定同士)があり、EFを覆う積項がSにない場合
EFに覆われる積項をSから削除し、EFをSに追加
S0 ={0-1-, 1-01, 0101, 111-, 011-, 00-1}
-11-S1 ={0-1-, 1-01, 0101, 00-1, -11-}
ステップ1:主項集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
コンセンサス法
(2)主項の候補集合Sを以下の繰り返しで変更する。
• Sの中にxE, ~xFの形の論理式(ただしE,Fが同じ変数を含むときは肯定同士または否定同士)があり、EFを覆う積項がSにない場合
EFに覆われる積項をSから削除し、EFをSに追加
S1 ={0-1-, 1-01, 0101, 00-1, -11-}
01-1S2 ={0-1-, 1-01, 00-1, -11-, 01-1}
ステップ1:主項集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
コンセンサス法
(2)主項の候補集合Sを以下の繰り返しで変更する。
• Sの中にxE, ~xFの形の論理式(ただしE,Fが同じ変数を含むときは肯定同士または否定同士)があり、EFを覆う積項がSにない場合
EFに覆われる積項をSから削除し、EFをSに追加
S2 ={0-1-, 1-01, 00-1, -11-, 01-1}
11-1S3 ={0-1-, 1-01, 00-1, -11-, 01-1, 11-1}
ステップ1:主項集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
コンセンサス法
(2)主項の候補集合Sを以下の繰り返しで変更する。
• Sの中にxE, ~xFの形の論理式(ただしE,Fが同じ変数を含むときは肯定同士または否定同士)があり、EFを覆う積項がSにない場合
EFに覆われる積項をSから削除し、EFをSに追加
S3 ={0-1-, 1-01, 00-1, -11-, 01-1, 11-1}
-1-1S4 ={0-1-, 1-01, 00-1, -11-, -1-1}
ステップ1:主項集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
コンセンサス法
(2)主項の候補集合Sを以下の繰り返しで変更する。
• Sの中にxE, ~xFの形の論理式(ただしE,Fが同じ変数を含むときは肯定同士または否定同士)があり、EFを覆う積項がSにない場合
EFに覆われる積項をSから削除し、EFをSに追加
S4 ={0-1-, 1-01, 00-1, -11-, -1-1}
0--1S5 ={0-1-, 1-01, -11-, -1-1, 0--1}
ステップ1:主項集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
コンセンサス法
(2)主項の候補集合Sを以下の繰り返しで変更する。
• Sの中にxE, ~xFの形の論理式(ただしE,Fが同じ変数を含むときは肯定同士または否定同士)があり、EFを覆う積項がSにない場合
EFに覆われる積項をSから削除し、EFをSに追加
S5 ={0-1-, 1-01, -11-, -1-1, 0--1}
--01S6 ={0-1-, -11-, -1-1, 0--1, --01}主項の集合: {~xz, yz, yw, ~xw, ~zw}
ステップ1:主項集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
コンセンサス法
(3)(2)で追加するものがなくなった時、Sは主項の集合
S6 ={0-1-, -11-, -1-1, 0--1, --01}
主項の集合: {~xz, yz, yw, ~xw, ~zw}
注:実際には(2)の操作を網羅的に行うため、表を用いる。
表を用いる方法の詳細は教科書を参照
コンセンサス法の適用例
g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw主項の候補:
S0 ={0-1-, 1-01, 0101, 111-, 011-, 00-1}
-11-
コンセンサス法の概要
ステップ1:
簡単化したい論理関数fを積和形(必ずしも最小項
展開ではない)から主項の集合を求める
ステップ2:
最小被覆集合の近似解を求める
ポイント:最小項展開をしなくてよいので計算量の爆発を抑えられる。常に最適解が求まるわけではない
コンセンサス法
ステップ2:被覆集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
(1)各主項pi について、「piを被覆集合に入れるべきか否か」を表す論理変数Uiを用意
S6 ={0-1-, -11-, -1-1, 0--1, --01}
主項の集合: {~xz, yz, yw, ~xw, ~zw}
ステップ2:被覆集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
主項:~xz, yz, yw, ~xw, ~zw(順にp1,p2,p3,p4,p5)
コンセンサス法
(2)各主項pi について、以下の論理式を構成(A) pi が他の主項pj=xE, pk=~xFによってEFと表せる場合
(=他の2つの主項によって覆われる場合): Ui + UjUk(B) その他の場合:Ui
例: p1: U1p2: U2p3: U3+U2U5p4: U4+U1U5p5: U5
ステップ2:被覆集合の求め方例:g(x,y,z,w)=~xz+x~zw+~xy~zw+xyz+~xyz+~x~yw
主項:~xz, yz, yw, ~xw, ~zw(順にp1,p2,p3,p4,p5)
コンセンサス法
(3)(2)の論理式の積を積和標準形に直し、変数の数が
最小の積項を探す。最小のものが複数あれば、各変数が表す主項の小さいものを選ぶ。
例: p1: U1p2: U2p3: U3+U2U5p4: U4+U1U5p5: U5
U1 U2 (U3+U2U5)(U4+U1U5)U5= U1U2U3U4U5 + U1U2U4U5
+ U1U2U3U5 + U1U2U5
gの被覆集合 = {~xz, yz, ~zw}
g(x,y,z,w) = ~xz + yz + ~zw
今日の講義内容
• 前回のレポート課題の解説
• 論理式の他の簡単化手法
– クワイン-マクラスキ法
– コンセンサス法
• ドントケア(don’t care)入力のあるもとでの論理式(部分論理関数の論理式)の簡単化(教科書3.7節)
部分論理関数一部の入力(ドントケア入力と呼ぶ)について値が定義されていない論理関数
入力101x, 11xx については値が未定義
部分論理関数の論理式の簡単化(カルノー図による方法)
• ドントケア入力に対応する部分に∗を追加
• 条件「1だけからなる長方形」を「1または∗のみからなる長方形」に変更
1110
11
11101
11100
10110100
部分論理関数fの論理式の簡単化
(一般的手法)• fの定義域に含まれない入力に対して1を出
力する関数fDを構成fD(x1,…,xn) = f(x1,…xn) if (x1,…,xn)∈dom(f)
1 その他の場合
• fDの主項の集合を求める
• 主項のうち、ドントケア入力だけを覆うものを削除
• 残った主項の中からfの最小被覆集合を求め、その要素の和を論理式とする
部分論理関数の論理式の簡単化(カルノー図による方法)
• ドントケア入力に対応する部分に∗を追加
• 条件「1だけからなる長方形」を「1または∗のみからなる長方形」に変更
∗∗1110
∗∗∗∗11
11101
11100
10110100
x3
x3x2x1x0
x1
x2x0~x2~x0
f1(x3,x2,x1,x0) =x1 + x3 + x2x0 + ~x2~x0
課題
• 教科書p.71表3.13のf2を最簡形の論理式で
表せ
論理回路の設計の実際• 他出力回路
f1,…,f7の間で回路を共有できるので、
全体として素子数が最小となるよう設計
論理回路の設計の実際
• 多段論理回路– 今までの簡単化は、AND-ORの2段で構成する
場合の最適な解
– 実際にはファンインの制限などで多段になるので必ずしも最適とは限らない
例:f = x3+x2~x1+~x2x1+x1~x0= x3+x2~x1+x1(~x2+~x0)
素子数3
素子数2
論理回路の設計の実際
• 可変論理回路目的:複数の論理関数f1(x1,…,xn),…,fm(x1,…,xn)
を切り替えて使用
問題:1つの論理関数g:
g(x1,…,xn,c1,…,ck) = f h(c1,…,ck) (x1,…,xn)で実現する場合に、識別関数h(c1,…,ck)をどう
定義するかによって必要素子数が異なる
(f1,…,fnのうち、似たもの同士に近いc1,…,ckを
割り当てるのがよい)
論理回路の設計の実際
• 多値入力二値出力関数複数の入力をまとめて入力変数の数を減らして論理式を最小化
• テクノロジーマッピング– 論理式を配置や使用素子などを考慮して実際の
電子回路に対応づける作業
• ハードウェア記述言語(HDL)– 論理回路の仕様を記述が与えられると論理式の
簡単化などを行って実際のLSIのマスクパターンを生成
論理回路の設計の実際
• テスト生成
作成された論理回路が設計通りに動作するかどうかをテストするための入力パターンの生成
• 耐故障回路
– 論理回路を冗長化し、一部の素子や配線に故障が生じてもそれを検出・修復できるようにした回路