1
第2章 ゲート論理
2
2.1 ブール代数
�ディジタルシステムの基礎となる論理体系は、 19世紀中頃に英国の数学者
ブール(George Boole)が考案したブール代数
��
�
�すくなくとも2つの要素0と1をもつ集合B上に、
2つの2項演算+と・および1つの単項演算 ̄が定義されていて、 Bの任意の要素 a, b, c について、つぎの等式(公理)を満たすとき、
この代数系<B, +, ・,  ̄ , 0, 1>をブール代数という。
演算+, ・,  ̄を各々、ブール和、ブール積、反転と呼ぶ
3
2.1 ブール代数
(1)ベキ等律 a + a = a a ・a = a
(2)交換律 a + b = b + a a ・b = b ・a
(3)結合律 (a + b) + c = a + (b + c) (a ・b) ・c = a ・(b ・c)
(4)吸収律 a + (a ・b) = a a ・ (a + b) = a
(5)分配律 (a + b) ・c = (a ・c) + (b ・c)
(a ・b ) + c = (a + c) ・(b + c)
(6)対合律
(7)相補律
(8)単位元 1・a = a 0 + a = a
(9)零元 1 + a = 1 0・a = 0
(10)ド・モルガン(DeMorgan)律
a = a
a + a = 1 a ! a = 0
(a + b) = a! b (a! b) = a + b
2.1 ブール代数
(1)ベキ等律 a + a = a a ・a = a
(2)交換律 a + b = b + a a ・b = b ・a
(3)結合律 (a + b) + c = a + (b + c) (a ・b) ・c = a ・(b ・c)
(4)吸収律 a + (a ・b) = a a ・ (a + b) = a
(5)分配律 (a + b) ・c = (a ・c) + (b ・c)
(a ・b ) + c = (a + c) ・(b + c)
(6)対合律
(7)相補律
(8)単位元 1・a = a 0 + a = a
(9)零元 1 + a = 1 0・a = 0
(10)ド・モルガン(DeMorgan)律
a = a
a + a = 1 a ! a = 0
(a + b) = a! b (a! b) = a + b
双対の原理
3
5
2.1 ブール代数
�ブール代数<B, +, ・,  ̄ , 0, 1>において、
集合B上の任意の値をとる変数をブール変数と呼び、 ブール変数と定数0と1に演算+, ・,  ̄を施して得られる式をブール
式という
ブール式で表現する関数をブール関数という
特に、0または1のみをとるブール変数を論理変数といい、 その場合のブール式、ブール関数、ブール和、ブール積、反転を、
各々、論理式、論理関数、
論理和(OR)、論理積(AND)、論理否定(NOT)と呼ぶ
6
真理値表
7
演習問題
�ブール代数の公理より、つぎの等式を示せ。
(1) x + x・y = x + y
(2) x・y + x・z + y・z = x・y + x・z
(3) x ・ z + y ・ z = x ・ z + y ・ z
演習問題(解答)
�ブール代数の公理より、つぎの等式を示せ。
(1) x + x
・y = x + y
左辺 = x
・(1+y) + x
・y
= x + x
・y + x ・ y
= x + (x + x)
・y
= x + 1
・y
= x + y
= 右辺
5
9
演習問題(解答)
�ブール代数の公理より、つぎの等式を示せ。
(2) x・y + x・z + y・z = x・y + x・z
左辺 = x・y + x・z + (x + x)・y・z
= x ・ y + x ・ z + x ・ y ・ z + x ・ y ・ z
= x ・ y ・ (1+z) + x ・ z ・ (1+y)
= x ・ y + x ・ z
10
演習問題(解答)
�ブール代数の公理より、つぎの等式を示せ。
(3) x ・ z + y ・ z = x ・ z + y ・ z
左辺 = x ・ z ・ y ・ z
= (x + z) ・ (y + z)
= x ・ y + x ・ z + y ・ z + z ・ z
= x ・ y ・ (z + z) + x ・ z + y ・ z
= x ・ y ・ z + x ・ y ・ z + x ・ z + y ・ z
= x ・ z ・ (y+1) + y ・ z ・ (x+ 1)
= x ・ z + y ・ z = 右辺
11
2.2 ディジタル回路
�入力値、出力値および内部状態の値が
0または1の値の組み合わせとして表現することのできる回路を ディジタル回路または論理回路という
論理回路はさらに、 組合せ回路と順序回路に分類できる
回路の出力値がそのときの入力値だけにより決まるとき、 組合せ回路と呼び、
入力値だけで決まらず回路の内部状態にも依存するとき 順序回路と呼ぶ
組合せ回路
�各入力に論理変数 x1, x2, ..., xn, 各出力に論理変数 z
1
, z
2
, ..., z
m
を対応
出力 zi は入力変数 x
1
, x
2
, ..., x
n
, の論理関数
z
7
13
ゲート
14
等価回路
A + B = A・B
15
XOR ゲート
xy
x・xy + y・xy = x・y + x・y
順序回路
内部状態は、そのときの入力と内部状態によってつぎの時刻の内部状態へと変化する この時刻のタイミングをとるかとらないかにより、
順序回路は同期式順序回路と非同期式順序回路に分類
9
17
同期式順序回路
18
D ラッチ
19
D ラッチの動作
0
1 0
1
1
0
1 0
1
1 1
1
0
0
1
0
D ラッチの動作
0
1 0
1
1
0
1 0
1
1 1
1
0
0
1
0
11
21
D ラッチの動作
制御入力Cの値が1を持続している間は、
データ入力Dの変化が次々とDラッチに取り込まれてしまう
クロックが1の値をとる時間幅が、
組合せ回路を信号変化が伝播する時間より長くなってしまうと、
フリップフロップの状態がそのクロックの間に2度以上変化することが起こり、 正しい状態変化を保証することができなくなってしまう
0
1 1
1
1
0
1
0
0 1
1 0 0 1
22
マスタースレーブDフリップフロップ
クロックCが1をとる時間が長くても、 その間にデータ入力Dから取り込んだ値が フリップフロップの出力Qに一度に伝播せず、
クロックCが0になったときにスレーブラッチの出力 Q2すなわち Q に伝播する この動作により、先に述べた誤動作を防ぐことができる
23
エッジトリガDフリプフロップ
Dラッチのようにクロックのレベルで同期せず、
クロックの変化、0から1への立ち上がりや1から0への立ち下がりに同期して、 データ入力をフリップフロップに取り込む方法
0から1への立ち上がり(正エッジ)
1から0への立ち下がり(負エッジ)
フリップフロップ
13
25
2.3 組合せ回路の設計
組合せ回路の設計手順
(1)実現しようとする組合せ回路の機能の仕様を記述する 具体的には、入力と出力の対応を記述する
(2)仕様を満たす真理値表を作成する
(3)真理値表の各出力に対応する論理関数の簡単化を行なう
(4)論理図を描く
26
半加算器
半加算器の設計
0 0 0 1
1
S = X Y + X Y = X ! Y
C = X Y
27
全加算器
全加算器の設計
全加算器
C = X Y + X Z + Y Z
S = X Y Z + XY Z + X Y Z + X Y Z S = X ! Y ! Z C = X Y + Z (X ! Y)
15
29
全加算器
S = X ! Y ! Z
C = X Y + Z (X ! Y)
30
並列加算器
31
デコーダ
デコーダ
17
33
イネーブル入力付きデコーダ
34
デコーダの合成
35
エンコーダ
A
0
= D
1
+ D
3
+ D
5
+ D
7 A
1
= D
2
+ D
3
+ D
6
+ D
7 A
2
= D
4
+ D
5
+ D
6
+ D
7
マルチプレクサ
19
37
マルチプレクサ
38
ROM (Read Only Memory)
39
PLA (Programmable Logic Array)
2.4 順序回路の設計
順序回路の設計手順
(1)実現しようとする順序回路の機能の仕様を記述する 具体的には、状態図(state diagram)で記述する
(2)状態図から状態遷移表(state transition table)を作成し、 フリップフロップを用いて状態割当(state assignment)を行なう
(3)順序回路の出力関数およびフリップフロップの入力関数を求め、 簡単化を行なう
(4)論理図を描く
21
41
カウンタ(状態図)
42
カウンタ(状態割当、状態遷移表)
43
カウンタ(簡単化)
カウンタ D
Y0
= Y
0X + Y
0X = Y
0! X
23
45
カウンタ
DY
1 = Y1Y0 + X + Y1Y0X = Y1! Y0X
46
カウンタ
DY
2 = Y2Y1 + Y0 + X + Y2Y1Y0X = Y2! Y1Y0X
47
カウンタ(論理図)
DY0 = Y0X + Y0X = Y0! X
DY
2 = Y2Y1 + Y0 + X + Y2Y1Y0X = Y2! Y1Y0X
DY
1 = Y1Y0 + X + Y1Y0X = Y1! Y0X
演習問題
Dラッチを用いてマスタスレーブJKフリップフロップを設計 せよ。
Dラッチ D
C
Q Q
D Q(t+1) 0
1
0 1
マスタスレーブJKフリップフロップ J
C
Q
Q
J K Q(t+1) 0 0
0 1 1 0 1 1
Q(t) 0 1 Q(t) K
25
49
演習問題(解答)
D Q
Q マスタスレーブJKフリップフロップ
J Q
Q K
J
K
Q Q
50
演習問題(解答)
D Q
Q J
K
Q Q J K Q(t+1)
0 0 0 1 1 0 1 1
Q(t) 0 1 Q(t)
1 0 0 0 1 1 1 0 K
Q J
D = J K + K Q + J Q
51
タイミング信号生成
レジスタ
27
53
RAM (Random Access Memory)
54
RAM (Random Access Memory)
55