組み合わせ回路と順序回路
組み合わせ回路
– ある時刻の出力信号が、現在の入力信号だ けで決まる回路
順序回路
– ある時刻の出力信号が、現在の入力信号だ けでなく、過去の入力信号の影響も受ける 回路 (回路内にバッファ・メモリがある)
順序回路の例
7 8 9
4 5 6
1 2 3
戻る 0 次へ
9→8→7→6 の順に 押すと手続き開始 暗証番号
9876
6→7→8→9 や
6789 同時押しではダメ
状態
定義 : 状態
– 論理回路の入力の履歴
初期状態
状態1
状態0 1入力
0入力
状態11 状態10 1入力
0入力
状態01 状態00 1入力
0入力
順序回路の入出力
順序回路 = 組み合わせ回路 + メモリ
– 入力 : 外部から+以前の出力から – 出力 : 外部へ+以降の入力へ
組み合わせ回路
外部入力 外部出力
メモリ
同期式順序回路
定義 : 同期式順序回路
– クロックに同期して回路が動作する
組み合わせ回路
メモリ 順序回路
クロック信号
同期式順序回路の動作
入力 X 入力 Y 出力 X +Y
クロック
遅延 出力はクロックに
同期して変化
クロック時以外の 入力変化は影響無し
順序回路の出力
定義 : 順序回路の出力
– 順序回路の出力O
現在の入力I および現在の状態Q から決定
O = f (Q, I )
f : 出力関数
順序回路の状態遷移
定義 : 状態遷移関数
– 順序回路の次の状態Q +
現在の入力I および現在の状態Q から決定
Q
+= g (Q, I )
g : 状態遷移関数
状態遷移と出力
組み合わせ回路 順序回路
出力 O
h (I ) f (Q, I )
次の状態 Q +
無し g (Q, I )
f,h : 出力関数
g : 状態遷移関数
有限オートマトン
定義 : 有限オートマトン
– 以下の5項で定義する計算機械
有限個の状態
有限個の入力
状態遷移
初期状態
最終状態 初期状態
状態0 状態1
最終状態 0
1 1
1 0 0
初期状態のとき 0が入力されたら
状態0へ
順序機械
定義 : 順序機械
– 以下の6項で定義する計算機械
有限個の状態
有限個の入力
状態遷移
初期状態
出力
出力関数
初期状態
状態0 状態1
0/1 1/1 1/0
1/0 0/0 0/1
入力,出力 初期状態のとき
0が入力されたら 1を出力し状態0へ
状態遷移表 , 状態遷移図
入力I
現状態q
0 1
q
0q
1/ 1 q
0/ 0 q
1q
0/ 0 q
1/ 1
状態 状態
入力/出力 入力
現状態 次状態/出力
q0 0/1 q1 0/0
1/0 1/1
状態 q0 のときに 0 が入力されたら 1 を出力し状態 q1 へ
q
1/ 1
0/1
状態遷移表と真理値表
遷移表は真理値表でも表現できる
入力I
現状態q
0 1
q
0q
1/ 1 q
0/ 0 q
1q
0/ 0 q
1/ 1
入力 出力 I Q Q + O 0 q0 q1 1 0 q1 q0 0 1 q0 q0 0 1 q1 q1 1
q
1/ 1
q1 1状態 q0 のときに 0 が入力されたら
1 を出力し状態 q1 へ
ミーリマシンとムーアマシン
ミーリマシン (Mealy machine)
– 現状態 Q と入力 I で出力O が決まる
O = f (Q, I )
ムーアマシン (Moore machine)
– 現状態 Q のみで出力O が決まる
O = f (Q )
状態 状態
入力/出力
状態 出力
状態 出力 入力
例題 : 順序機械と状態遷移図
初期状態から、 1 を偶数回入力すると 1 を、
奇数回入力すると 0 を出力する順序機械
q0 q1 0/0 0/0 1/0
1/1
q0/0
0 q1/0
q2/1 1
1
1 0
0 ミーリマシン
ムーアマシン
状態遷移表
現状態 次状態 出力
I=0 I=1 I=0 I=1
q0 q0 q1 0 0
q1 q1 q0 0 1
ミーリ マシン
現状態 次状態 I=0 I=1 出力
q0 q0 q1 0
q1 q1 q2 0
q2 q0 q1 1
ムーア マシン
双安定回路
高電位=値1
値0で安定 値1で安定
高電位=値0
値1で安定 値0で安定
双安定回路
1ビットを記憶可能
1 ビットのメモリ
フリップフロップ
フリップフロップ
– 1ビットのメモリ
状態1または状態0を保持
フリップ 入力 フロップ
状態Q と
Q の否定を出力
クロック 状態0 0 1
0 1
状態1
状態
Q Q Q
Q
SR フリップフロップ
Set-Reset フリップフロップ
– Set信号S およびReset信号R を入力
Set信号で1にセット、Reset信号で0にリセット
S R Q
+0 0 Q
1 0 1
0 1 0
1 1 -
現状維持 1にセット 0にリセット
入力11は禁止
S
SRFFR
CKQ
Q
SR フリップフロップの動作
入力 R 出力 Q 出力 Q クロック 入力 S
S =1ならば 1にセット
R =1ならば 0にリセット
S =1,R =1ならば 値は不定
D フリップフロップ
Delay / Data latch フリップフロップ
– Data信号D を入力
Data信号に出力を合わせる
D Q
+0 0
1 1
0にリセット 1にセット
D
DFF CKQ
Q
D フリップフロップの動作
入力 D 出力 Q 出力 Q クロック
D =1ならば 1にセット
D =0ならば 0にリセット
T フリップフロップ
Toggle / Trigger フリップフロップ
– Toggle信号T を入力 Toggle信号で値を反転
T Q
+0 Q
1 Q
現状維持 値を反転
T
TFF CKQ
Q
T フリップフロップの動作
入力 T 出力 Q 出力 Q クロック
T =1ならば 値を反転
JK フリップフロップ
JK フリップフロップ
– Set信号J および Reset信号K を入力
Set信号で1にセット、Reset信号で0にリセット Set信号,Reset信号共に入った場合は値反転
J K Q
+0 0 Q
1 0 1
0 1 0
1 1 Q
現状維持 1にセット 0にリセット
入力11は値反転
J
JKFFK
CKQ
Q
JK フリップフロップの動作
入力 K 出力 Q 出力 Q クロック 入力 J
J =1ならば 1にセット
K =1ならば 0にリセット
J =1,K =1ならば 値反転
コラム : JK とは?
一説によれば Jack-King フリップフロップ
Jack,Kingが動かなければ(J=0,K=0) Queenは現状維持
Jackに求愛されれば(J=1)QueenはJackの元へ
Kingに求愛されれば(K=1)QueenはKingの元へ
Jack,Kingから同時に求愛されれば(J=1,K=1) Queenは相手を替える
クロック入力付 SRFF
クロック信号が 1 のときのみ動作
SRFF Q S
R
Q Q クロック付SRFF
S Q
R CK
プリセット , クリア付フリップフロップ
プリセット , クリア付フリップフロップ
– 通常の入力(SR,D,T,JK)に加え、
Preset信号Pr とClear信号Clr を入力 Preset信号でクロックに関係無く1にセット Clear信号でクロックに関係無く0にリセット
直接値を
セットできない TFFには必須
S
SRFFR
CK Clr Pr プリセットクリア
Q
Q
プリセット , クリア付
T フリップフロップの動作
プリセット
出力 Q 出力 Q クロック 入力 T
クリア
T信号を入れても 不定のまま
クロックに関係無く 強制的に1にセット
強制的に 0にリセット
セット優先 SR フリップフロップ
セット優先 SR フリップフロップ
– Set信号S および Reset信号R を入力
Set信号で1にセット、Reset信号で0にリセット Set信号,Reset信号共に入った場合は1にセット
S R Q
+0 0 Q
1 0 1
0 1 0
1 1 1
現状維持 1にセット 0にリセット
入力11は1にセット
セット優先
SRFF
S
R
CKQ
Q
セット優先 SR フリップフロップの動作
入力 R 出力 Q 出力 Q クロック 入力 S
S =1ならば 1にセット
R =1ならば 0にリセット
S =1,R =1ならば 1 にセット
SRFF の特性展開表
S R Q +
0 0 Q
1 0 1
0 1 0
1 1 -
S R Q Q + Q +
0 0 0
1
0 1 0
1
1 0 0
1
1 1 0
特性表 1
特性展開表
- -
- -
0 1
0 1
1 0
1 0
0 1
1 0
JKFF の特性展開表
J K Q +
0 0 Q
1 0 1
0 1 0
1 1 Q
J K Q Q + Q +
0 0 0
1
0 1 0
1
1 0 0
1
1 1 0
特性表 1
特性展開表
0 1
1 0
0 1
0 1
1 0
1 0
0 1
1 0
SRFF の論理関数
S R Q +
0 0 Q
1 0 1
0 1 0
1 1 -
1 -
0 1
1
1 -
0 0
0
10 11
01
SR
00
Q
Q +
0 -
1 0
1
0 -
1 1
0
10 11
01
SR
00
Q
Q +
Q S
R Q
Q R
S Q
SRFF の論理回路
S
R
Q +
Q + SRFF
S
R
Q +
Q + SRFF
S
R
Q +
Q + SRFF
Q S
R Q
Q R
S Q
Q S
R
Q R
S
ループがある
DFF の論理関数 , 論理回路
D Q +
0 0
1 1
Q + Q +
1 0
1
1 0
0
1
D
0
Q
0 1
1
0 1
0
1
D
0
Q
D Q +
Q + DFF
ただしこの回路は FFに求められる
値保持機能が無い
D Q
D Q
TFF の論理関数 , 論理回路
T Q +
0 Q
1 Q
Q + Q +
0 1
1
1 0
0
1
T
0
Q
1 0
1
0 1
0
1
T
0
Q
T Q +
Q + TFF
Q T
Q T
Q T
Q T
Q
Q T
Q T
Q
JKFF の論理関数
J K Q +
0 0 Q
1 0 1
0 1 0
1 1 Q
1 0
0 1
1
1 1
0 0
0
10 11
01
JK
00
Q
Q +
0 1
1 0
1
0 0
1 1
0
10 11
01
JK
00
Q
Q +
Q J
Q K
Q
Q K
Q J
Q
JKFF の論理回路
J
K
Q +
Q +
JKFF J
K
Q +
Q + JKFF
Q J
Q K
Q K
Q J
Q J
Q K
Q
Q K
Q J
Q
入力要求
定義 : 入力要求
– FFの状態をQからQ +へ遷移するためは ど んな入力をすればいいか?
例 : SRFFで、現状態がQ=0であるとき、
Q +=1にするためには S,R にどんな入力を 入れればいいか?
S=1, R=0を入れればQ +=1になる
SRFF の入力要求表
S R Q Q
+0 0 0 0
1 1
0 1 0 0
1 0
1 0 0 1
1 1
1 1 0 -
1 -
Q Q
+S R
0 0
0 1
1 0
1 1
S,R =0,0 または 0,1のとき Q の遷移は 0→0
0 0 1 0
0 0 0 0
0
0 0 -
SRFF の入力要求表
S R Q Q
+0 0 0 0
1 1
0 1 0 0
1 0
1 0 0 1
1 1
1 1 0 -
1 -
Q Q
+S R 0 0 0 -
0 1
1 0
1 1
1 0
0 1
- 0
DFF の入力要求表
Q Q
+D
0 0
0 1
1 0
1 1
D Q Q
+0 0 0
1 0
1 0 1
1 1
0
1
1
0
TFF の入力要求表
Q Q
+T
0 0
0 1
1 0
1 1
T Q Q
+0 0 0
1 1
1 0 1
1 0
1
1
0
0
SRFF による DFF の設計
回路全体がDFFとなるように D→SR変換回路を作成する
DFF
D
Q SRFF Q
S R
Q Q D→SR
変換回路
DFF の拡大入力要求表
出力 入力
D→SR変換回路
出力 入力
SRフリップフロップ
D Q Q +
0 0 0
1 0
1 0 1
1 1
入力 出力
Dフリップフロップ
0 -
0 1
1 0
- 0
R S
D→SR 変換回路
D→SR変換回路
入力 出力
D Q S R
0 0 0 -
1 0 1
1 0 1 0
1 - 0
- 0
1
1 0
0
1
D
0
Q
S
0 1
1
0 -
0
1
D
0
Q
R
D R
D
S
SRFF を用いた DFF
S SRFF R
Q Q DFF
D Q
Q
D R
D
S
変換回路作成手順
1.
目的の FF の
特性展開表作成
2.
使用する FF の
入力要求表作成
3.
変換回路の論理 関数を求める
4.
回路を実装
使用する FF の入出力
入力 出力
変換回路の入出力
入力 出力
Q Q +
0 1 0 1
入力 出力
目的の FF の入出力
SRFF による TFF の設計
回路全体がTFFとなるように T→SR変換回路を作成する
TFF
T
Q SRFF Q
S R
Q Q T→SR
変換回路
TFF の拡大入力要求表
1 0
0 1
0 -
- 0
R S
出力 入力
SRフリップフロップ
出力 入力
T→SR変換回路
T Q Q +
0 0 0
1 1
1 0 1
1 0
入力 出力
Tフリップフロップ
T→SR 変換回路
T→SR変換回路
入力 出力
T Q S R
0 0 0 -
1 - 0
1 0 1 0
1 0 1
0 -
1
1 0
0
1
T
0
Q
S
1 0
1
0 -
0
1
T
0
Q
R
Q T
R T Q
S
SRFF を用いた TFF
SRFF Q S
R
Q Q TFF
T Q
Q T
R T Q
S
レジスタ (register)
同期したフリップフロップの集まり
– n ビットの一斉読み出し、書き込みが可能
クロック
D DFFQ CK
D DFFQ CK
D DFFQ CK
D DFFQ CK
D0 D1 D2 D3
Q0 Q1 Q2 Q3
シフタ (shifter)
同期したフリップフロップの集まり
– クロック入力ごとに、値が隣のFFに移動する
D3DFFQ3 D2DFFQ2
D1DFFQ1 D0DFFQ0
D
クロック
Q0 Q1 Q2 Q3
)
1
(
01
i D D
Q
D
i
i
CK CK
CK CK
シフタの動作
出力 Q0 出力 Q1 出力 Q2 クロック 入力 D
遅延 Q0の値が1クロック 遅れでQ1に伝播
シフト - レジスタ
シフタとレジスタの組み合わせ
DDFF0 Q0
CK
I0
クロック
I1
Q0
DDFF1 Q1
CK
I2
Q1
DDFF2 Q2
CK
I3
Q2
DDFF3 Q3
CK
Q3 S
マルチ プレクサ
シフト - レジスタ
シフタとレジスタの組み合わせ
クロック
DDFF0 Q0
CK
I0 I1
Q0
DDFF1 Q1
CK
I2
Q1
DDFF2 Q2
CK
I3
Q2
DDFF3 Q3
CK
Q3 S
S=0 ⇒ レジスタ
シフト - レジスタ
シフタとレジスタの組み合わせ
DDFF0 Q0
CK
I0
クロック
I1
Q0
DDFF1 Q1
CK
I2
Q1
DDFF2 Q2
CK
I3
Q2
DDFF3 Q3
CK
Q3 S
S=1 ⇒ シフタ
非同期式カウンタ (counter)
同期していないフリップフロップの集まり
– 入力が1になった数を計測する
T TFFQ Q
Q0
T TFFQ Q
Q1
T TFFQ Q
Q2
T TFFQ Q
Q3 SW
非同期式カウンタの動作
出力 Q0 出力 Q1 出力 Q2 入力 SW
出力 Q3
遅延
遅延*2
遅延*3
遅延*4
同期式カウンタ
同期したフリップフロップの集まり
– 入力が1になった数を計測する
T QTFF CK
Q0 Q1 Q2 Q3
SW
クロック
T QTFF CK
T QTFF CK
T QTFF CK
同期式カウンタの動作
出力 Q0 出力 Q1 出力 Q2 クロック 入力 SW
遅延
遅延
遅延
スイッチを 押している間 カウンタ作動
演習問題 : 状態遷移図
下の状態遷移表から状態遷移図を作成せよ
q1
q2
q3 q0
0/0
1/1 1/0
0/0
0/0 1/0
0/0 1/1
入力I
現状態q
0 1
q
0q
1/ 0 q
2/ 1
q
1q
1/ 0 q
3/ 0
q
2q
2/ 0 q
3/ 0
q
3q
0/ 0 q
1/ 1
演習問題 : フリップフロップの動作
SRFF の動作を記入せよ
(遅延は無視してよい)
入力 R 出力 Q 出力 Q クロック 入力 S
演習問題 : SRFF による JKFF の設計
S SRFF R
Q Q JK→SR
変換回路 JKFF
J
Q K Q
回路全体がJKFFとなるように
JK→SR変換回路を作成する
R S
出力 入力
SRフリップフロップ
JKFF の拡大入力要求表
出力 入力
JK→SR変換回路
J K Q Q+
0 0 0 0
1 1
0 1 0 0
1 0
1 0 0 1
1 1
1 1 0 1
1 0
入力 出力
JKフリップフロップ
1 0
- 0
0 -
- 0
1 0
0 1
0 -
0 1
JK→SR 変換回路
JK→SR変換回路
入力 出力
J K Q S R
0 0 0 0 -
1 - 0
0 1 0 0 -
1 0 1
1 0 0 1 0
1 - 0
1 1 0 1 0
1 0 1
- 0
0 -
1
1 1
0 0
0
10 11
01
J K
00
Q
S
0 1
1 0
1
0 0
- -
0
10 11
01
J K
00
Q
R
Q K
R J Q
S
SRFF を用いた JKFF
SRFF Q S
R
Q Q JKFF
J Q
K