• 検索結果がありません。

真理値表による証明

真理値表によってド・モルガン則を確かめてみよ う。

x y x y x·y x+y x·y x+y x·y x+y

0 0 1 1 0 0 1 1 1 1

0 1 1 0 0 1 1 0 0 1

1 0 0 1 0 1 1 0 0 1

1 1 0 0 1 1 0 0 0 0

基本論理演算と論理関数

AND, OR, NOT

演算の組み合わせだけでどんな 論理関数でも作ることができる。

証明:引数の数に関する数学的帰納法

引数1つの時

引数1つの論理関数は前述の通り4種類しかない。

f

0

( x )= 0 = x ⋅̄ x f

1

( x )= x

f ( x )=̄ x 成立

基本論理演算と論理関数

引数

n

個のとき、引数

n-1

個では成立を仮定

任意の

n

変数論理関数

次のn-1変数論理関数を考える

ここで次の式を考える:「x=0ならa、x=1ならb」

f ( x

1

, x

2

,, x

n

)

g

0

( x

1

, x

2

,, x

n1

)= f ( x

1

,, x

n1

, 0 ) g

1

( x

1

, x

2

,, x

n1

)= f ( x

1

,, x

n1

, 1 )

̄ x a + x b

x a b xa xb xa+ab

1 0 0 0 0 0

1 0 1 0 1 1

1 1 0 0 0 0

x a b xa xb xa+ab

0 0 0 0 0 0

0 0 1 0 0 0

0 1 0 1 0 1

基本論理演算と論理関数

x

nの値によって関数を切り替える

– x

n

=0 ⇒

– x

n

=1 ⇒

前ページの考察により、

仮定より

g

0

g

1

AND,OR,NOT

のみで表せるの

f ( x

1

,, x

n1

, x

n

)= g

0

( x

1

,, x

n1

) f ( x

1

,, x

n1

, x

n

)= g

1

( x

1

,, x

n1

)

f ( x

1

,, x

n1

, x

n

)= x

n

g

0

( x

1

,, x

n1

)+

x

n

g

1

( x

1

,, x

n1

)

演習

分配律が成立していることを真理値表で確かめ よ。

x ⋅( y + z )=( xy )+ ( xz ) x + ( yz )=( x + y )⋅( x + z )

x y z xy xz y+z x(y+z) xy+xz

0 0 0 0 0 0 0 0

0 0 1 0 0 1 0 0

論理演算と論理素子

ある論理演算を実現するための電子回路

(論理ゲート)

AND

ゲート

OR

ゲート

NOT

ゲート

MIL 記号

論理演算と論理素子

ゲートの端にある○が「反転」を表す

NAND

ゲート

NOR

ゲート

NOT

ゲート

等価な論理ゲート

ド・モルガン律などによる

AB B

NAND ゲートは万能

NAND

ゲートですべてのゲートの代用ができる

xxx

xy = xy

̄ x ⋅̄ y = x + y

NAND ゲートの実現例

Diode-Transistor Logic (DTL)

簡略化した回路図(実際はもう少し複雑)

– DTL

は遅くて消費電力が大きいので、実際にはあまり 使われない

V+ V+

V+ V+

V+ V+

H L

L

H

IN1 IN2 OUT

半導体でなくても論理ゲートは作れる

リレーで作る論理ゲート

コイルに電流を流すと隣にある スイッチが

ON/OFF

S1 S2

S1S2の両方がON ときだけOFFになる

論理演算と論理回路

論理式⇔論理回路

Z = ABBCCA

A B

C Z

演習

次の論理式に基づく論理回路を描け。

S = XYXY

C = XY

X ?

Y

C

S

半加算器

さっきの論理式の真理値表

X Y C S

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 0

X, Y

を1桁の2進数、

CS

を2桁の2進数と見

C: Carry (桁上げ)

S: Sum (和)

桁の多い加算

2桁以上の2進数の加算をするにはどうする?

桁上げを考慮⇒3つの2進数の和を計算しなければな らない

3つの1桁の2進数

a,b,c

を加算→2桁の2進数

CS

a b c 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

全加算器 (full adder)

半加算器の組み合わせで作れる

発展

前ページの回路の入出力関係がその前の真理値 表と同じになっていることを確かめよう

2ページ前の真理値表を直接表現する論理式を考 えてみよう

C = f ( a , b , c )

S = g ( a ,b , c )

桁の多い加算器

筆算と同じ要領(下から順に桁上げ)

1111

+1111

---10000

1 1 1 1

論理関数の設計

これまでは論理式から論理回路を描いていた

本当にやりたいこと

要求仕様(欲しい入出力関係)を実現する論理回路

やるべきこと

要求仕様(真理値表)→論理式(関数)→論理回路

問題点

どうやって真理値表を満たす論理式を作るか

真理値表を満たす論理式は1つではない

どういう論理式を作ればいいか

真理値表から論理関数へ

次の真理値表で表される論理式(論理関数)は?

x y z f(x,y,z)

0 0 0 0

0 0 1 0

0 1 0 1

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

真理値表から論理関数へ

次の真理値表で表される論理式(論理関数)は?

x y z f(x,y,z)

0 0 0 0

0 0 1 0

0 1 0 1

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 0

答えは唯一ではない

fx y ̄ z + x ̄ y z + x y ̄ z

f = ( x + y + z )( x + y + ̄ z ) ( x + ̄ y + ̄ z )(̄ x + y + z ) (̄ x + ̄ y + ̄ z )

f = y ̄ z + x ̄ y z

真理値表から論理関数へ

論理関数への変換の考え方

できるだけ機械的に変換できたほうがいい

真理値表から標準形論理式への変換

できるだけ論理演算が少ないほうがいい

論理回路として実現した時の素子数が少ない

低コスト、高速

演算数が最小の論理式:最簡形論理式

最簡形論理式の導出

カルノー図

クワイン・マクラスキ法

基礎的な概念

基本的に積和形(論理積の論理和)で考える

リテラル:変数または変数の否定

̄ y z + x y ̄ z

リテラル

̄ y z + x y ̄ z

リテラル リテラル

項(積項)

標準形論理式

積和標準形(主加法標準形)

Sum-of-product

リテラルの論理積の論理和

すべての項がすべての変数を含む

同じ項は1回しか出てこない

積和標準形の例

積和標準形でない例

f ( x , y , z )=̄ x ̄ y z + x ̄ y z + x y ̄ z

f ( x , y , z )=̄ y z + x y ̄ z

標準形論理式

和積標準形(主乗法標準形)

Product-of-sum

リテラルの論理和の論理積

すべての論理和がすべての変数を含む

同じ論理和は1回しか出てこない

和積標準形の例

和積標準形でない例

f ( x , y , z )=( x + y + z )( x + y + ̄ z )(̄ x + y + z ) f ( x , y , z )=( x + z )(̄ x + y + z )

f ( x , y , z )=( x + z )(̄ x y + z )

f ( x , y , z )=( x + y + z )( x + y + ̄ z )( x + y + z )

2 つの標準形の関係

どんな論理式でも、積和標準形と和積標準形の両 表で表現できる。

証明(変数の数による数学的帰納法)

1

変数の場合は自明

k

変数の場合に成立を仮定。

任意の

k+1

変数論理関数を考える 次の

k

変数関数を考える

f ( x

1

, x

2

,, x

k+ 1

)

g

0

( x

1

,, x

k

)= f ( x

1

, x

2

,, x

k

, 0 )

g

1

( x ,, x )= f ( x , x ,, x , 1 )

2 つの標準形の関係

g

をそれぞれ積和と和積標準形で表した論理式

以前と同じ議論により、

g

0

( x

1

,, x

k

)→ g

SOP0

( x

1

,, x

k

) , g

0POS

( x

1

,, x

k

) g

1

( x

1

,, x

k

)→ g

1SOP

( x

1

,, x

k

) , g

1POS

( x

1

,, x

k

)

f ( x

1

, x

2

,, x

k

, x

k+1

)= x

k+1

g

0

( x

1

,, x

k

)+ x

k+1

g

1

( x

1

,, x

k

)

= x

k+1

g

0SOP

( x

1

,, x

k

)+ x

k+1

g

1SOP

( x

1

,, x

k

)

これを分配律によって展開すれば、

f

も積和標準形で表

せる。

2 つの標準形の関係

和積標準形の場合、まず次の関係を考える

x=0

なら

a

x=1

なら

b

となる論理式

したがって

( x + a )(̄ x + b )

x = 0 →( x + a )(̄ x + b )=( 0 + a )( 1 + b )= a ⋅ 1 = a x = 1 →( x + a )(̄ x + b )=( 1 + a )( 0 + b )= 1 ⋅ b = b

f ( x

1

, x

2

,, x

k

, x

k+1

)=( x

k+1

+ g

0

( x

1

,, x

k

))( x

k+1

+ g

1

( x

1

,, x

k

))

=( x

k+1

+ g

0POS

( x

1

,, x

k

))( x

k+1

+ g

1POS

( x

1

,, x

k

))

これを分配律によって展開すれば、

f

も和積標準形で表

せる。

標準形論理式と論理回路設計

ある標準形は、1つの仕様(真理値表)に対して基 本的に

1

つしか存在しない

真理値表 一対一 標準形

論理式 一対一 論理回路

x y f(x,y)

0 0 0

0 1 1

1 0 1

1 1 0

̄ x y + x ̄ y

真理値表から積和標準形へ

x y xy xy xy xy

0 0 1 0 0 0

0 1 0 1 0 0

1 0 0 0 1 0

1 1 0 0 0 1

最小項:すべての変数のリテラルを含む積項

ある入力の組み合わせの時だけ1になり、それ以外の組み合わせでは0になる。

x y f(x,y)

0 0 0

0 1 1

1 0 1

1 1 0

実現したい真理値表のうち、1になる組み合わせの最小項だけを OR つなぐと積和標準形になる。

f ( x , y )=̄ x y + x ̄ y

真理値表から和積標準形へ

x y x+y x+y x+y x+y

0 0 0 1 1 1

0 1 1 0 1 1

1 0 1 1 0 1

1 1 1 1 1 0

最大項:すべての変数のリテラルを含む論理和

ある入力の組み合わせの時だけ0になり、それ以外の組み合わせでは1になる。

x y f(x,y)

0 0 0

0 1 1

1 0 1

1 1 0

実現したい真理値表のうち、0になる組み合わせの最大項だけを AND でつなぐと和積標準形になる。

f ( x , y )=( x + y )(̄ x + ̄ y )

演習

次の真理値表による論理関数を積和標準形と和 積標準形で表せ。

x y z f(x,y,z)

0 0 0 0

0 0 1 0

0 1 0 1

0 1 1 0

1 0 0 1

1 0 1 0

1 1 0 1

論理式の簡単化

標準形で表現した論理式は一般に冗長

x y f(x,y)

0 0 0

0 1 1

1 0 1

1 1 1

̄ x y + x ̄ y + x y

x y

̄ x y + x ̄ y + x yx y + x ̄ y + x y + x y

=(̄ x + x ) y + x ( y + ̄ y )= 1 ⋅ y + x ⋅ 1 = x + y

x y

同じ

どうすれば同じ関数を表現するときの論理演算の

基礎的な概念

論理関数の順序

値の順序:

0≤0, 0≤1, 1≤1

論理関数の順序:

f(x),g(x)

について、

∀ x(f(x)≤g(x))↔f≤g

例:確かめてみよう

xy ≤ x ≤ x+y

(真理値表を書き、左辺が1のところが右辺でも必ず

1

になっているな らば

が成立)

基礎的な概念

論理関数

a,b,c,d

について

a ≤ c , b ≤ d

ならば

a+b ≤ c+d

a ≤ c, a ≤ d

ならば

a ≤ c+d

a ≤ c, b ≤ c

ならば

a+b ≤ c

基礎的な概念

論理式

f

の主項とは

リテラルの論理積

t

のうち、次の条件を満たすもの

t ≤ f

であり、

tからそれ以上リテラルを取り除くと t ≤ f

でなくなる

x y z f x・y・z x・y x

0 0 0 0 0 0 0

0 0 1 0 0 0 0

0 1 0 0 0 0 0

0 1 1 1 0 0 0

1 0 0 1 1 1 1

fx ̄ y ̄ z fx ̄ y fx

これが主項

主項と論理式

ある論理式

f

の主項を全部列挙し、その論理和を とれば、それは

f

と一致する。

ただし一般には冗長

x y z f xy xz yz

0 0 0 0 0 0 0

0 0 1 0 0 0 0

0 1 0 0 0 0 0

0 1 1 1 0 0 1

1 0 0 1 0 1 0

1 0 1 0 0 0 0

1 1 0 1 1 1 0

1 1 1 1 1 0 1

f = x y + x ̄ z + y z = x ̄ z + y z

必須主項

ある論理式を構成するために必ず必要な主項

x y z f xy xz yz

0 0 0 0 0 0 0

0 0 1 0 0 0 0

0 1 0 0 0 0 0

0 1 1 1 0 0 1

1 0 0 1 0 1 0

1 0 1 0 0 0 0

f = x y + x ̄ z + y z = x ̄ z + y z

必須 主項

最簡形論理式とは

次の条件を満たす論理式:

ある論理関数を実現する論理式のうち、

積項の数が最小で、

かつ式全体のリテラルの数が最小のもの

論理式を簡単化するときの目標

論理関数の仕様(真理値表)に対して最簡形が一 意に決まるとは限らない

最簡形を求めるには

次のような手順を踏む

1. 与えられた論理関数の主項をすべて求める 2. 求まった主項のなかの必須主項を調べる

3. すべての必須主項と、それ以外の主項のうちできるだ けリテラルの少ない主項を組み合わせて元の論理関数 を表現する

これらの求め方でいくつかの方法がある

カルノー図

クワイン・マクラスキ―法

最簡形を求める方法

カルノー図 

(Karnaugh map)

真理値表に似た表と四角形でできた図を使う

人間向き

変数の数はふつう

4

個ぐらいまで

クワイン・マクラスキ―法

(Quine-McClusky alg.)

文字列処理

計算機向き(人間にはつらい)

変数の数は多くてもよいが、変数が多いと時間がかか

カルノー図

2

次元の真理値表をもとに主項を発見する

3

変数

(x,y,z)

、4変数

(x,y,z,w)

の表の例

– 0,1

の並びに注意

xy\zw 00 01 11 10

00 01 11

xy\z 0 1

00

01

11

カルノー図

カルノー図では積項は長方形になる

xy\zw 00 01 11 10

00 01 11 10

z y

x

カルノー図

カルノー図は表の上下左右がつながっている

xy\zw 00 01 11 10

00 01 11

y

w

カルノー図

リテラルの多い積項の例

xy\zw 00 01 11 10

00 01 11 10

x ・ z

z ・ w x ・ y ・ z ・ w

x ・ y ・ w

カルノー図による論理式の簡単化

カルノー図の表を描き、目標となる論理式が1となる マス目に“1”を記入

“1”を囲む、できるだけ大きい長方形(=主項)を探 す

辺の長さは2の

n

乗のみ

上下左右が連続していることを忘れずに

すべての“1”をカバーする、できるだけ少ない数の、

できるだけ大きい長方形の組み合わせを探す

カルノー図の例

カルノー図の表を描き、目標となる論理式が1となる マス目に“1”を記入

xy\zw 00 01 11 10

00 1 1 1

01 1 1

11 1 1

10 1 1

カルノー図の例

“1”を囲む、できるだけ大きい長方形(=主項)を探す

辺の長さは2の

n

乗のみ

上下左右が連続していることを忘れずに

xy\zw 00 01 11 10

00 1 1 1

01 1 1

11 1 1

1 1

カルノー図の例

すべての“1”をカバーする、できるだけ少ない数の、

できるだけ大きい長方形の組み合わせを探す

xy\zw 00 01 11 10

00 1 1 1

01 1 1

11 1 1

10 1 1

ある“1”を1つの四角だけが囲んでいるなら、その四

この2つは必須 ではない→大き いほうを選ぶ

カルノー図の例

その長方形の組み合わせに対応する論理式が最簡 形になっている

xy\zw 00 01 11 10

00 1 1 1

01 1 1

11 1 1

1 1

使わない

x w + y w + z w + ̄ x ̄ y w ̄

演習

次のカルノー図を使って最簡形論理式を求めよ。

xy\z 0 1

00 1

01 1

11 1 1

10 1

xy\zw 00 01 11 10

00

01 1 1 1

11 1 1 1

10 1 1 1

部分論理関数とカルノー図

入力のすべてのパターンを考えなくてよい場合

例:

7

セグメント

LED

0

4

の数字を表示

0 1 2 3 4

5 6

LED エンコーダ

x

1

x

2

x

3

b

0

b

6

部分論理関数とカルノー図

b1

b6

の真理値表

3

行の入力は想定しなくてよい→部分論理関数

0 1 2 3 4

5 6

x1 x2 x3 b0 b1 b2 b3 b4 b5 b6

0 0 0 1 1 1 1 1 1 0

0 0 1 0 1 1 0 0 0 0

0 1 0 1 1 0 1 1 0 1

0 1 1 1 1 1 1 0 0 1

1 0 0 0 1 1 0 0 1 1

1 0 1 N/A

1 1 0 N/A

1 1 1 N/A

部分論理関数とカルノー図

b0

の論理関数の設計

x1x2\x3 0 1

0 0 1

0 1 1 1

1 1 1 0

x1x2\x3 0 1

0 0 1

0 1 1 1

1 1 * *

1 0 *

想定外の入力に対し

て0を出力 想定外の入力に対し て何を出力してもよい

関連したドキュメント