組み合わせ回路と順序回路
組み合わせ回路
– ある時刻の出力信号が、現在の入力信号 だけで決まる回路
順序回路
– ある時刻の出力信号が、現在の入力信号 だけでなく、過去の入力信号の影響も受 ける回路 ( 回路内にバッファ・メモリが ある )
順序回路の例
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 1/0
0/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
状態
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
CKSR フリップフロップの動作
入力 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 CKD フリップフロップの動作
入力 D 出力 Q 出力 Q クロック
D =1 ならば 1 にセット
D =0 ならば 0 にリセッ
ト
T フリップフロップ
Toggle / Trigger フリップフロップ
– Toggle 信号 T を入力 Toggle 信号で値を反転
T Q
+0 Q
1 Q
現状維持 値を反転
T
TFF CKT フリップフロップの動作
入力 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
CKJK フリップフロップの動作
入力 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 プリセットクリア
プリセット , クリア付
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
CKセット優先 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 +
SRFF の論理回路
S
R
Q +
Q + SRFF
S
R
Q +
Q + SRFF
S
R
Q +
Q + SRFF
ループがある
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 に求められる 値保持機能が無い
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
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 +
JKFF の論理回路
J
K
Q +
Q +
JKFF J
K
Q +
Q + JKFF
入力要求
定義 : 入力要求
– 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
SRFF を用いた DFF
S SRFF R
Q Q DFF
D Q
Q
変換回路作成手順
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
SRFF を用いた TFF
SRFF Q S
R
Q Q TFF
T Q
レジスタ (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
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
SRFF を用いた JKFF
SRFF Q S
R
Q Q JKFF
J Q
K