「論理回路」ノート
(2013年度
, c関西学院大学 石浦 菜岐佐
)http://ist.ksc.kwansei.ac.jp/∼ishiura/lc/
8 順序回路の設計 (1)
♣
フリップフロップを用いた同期式順序回路の設計
♣
状態
8.1
設計の流れ
(1)
状態遷移表の作成
(2)
状態 化
(3)
入出力, 状態の 化
(割当て)
(4)
関数, 関数を求める
(5)
フリップフロップの入力関数を求める
(6)組合せ回路の設計
8.2
具体的な設計法
「50 円玉と
100円玉を受け付け, 150 円のジュースを売る自動販売機の制御部」を設計 入力
− 何も入らない 50 50円の投入 100 100円の投入
状態
S0 0円が入っている(初期状態) S50 50円が入っている
S100 100円が入っている
出力
(−,−) ジュースもお釣も出さない (J,−) ジュースだけ出す
(J,50) ジュースと50円のお釣を出す
(1)
状態遷移表の作成
1状態遷移グラフ
S0 S50 S100
−/(−,−) −/(−,−) −/(−,−) 50/(−,−)
100/(J,−) 50/(−,−) 100/(−,−) 50/(J,−),100/(J,50)
⇓ 2
状態遷移表
現状態 次状態 出力
入力
=−入力
= 50入力
= 100入力
=−入力
= 50入力
= 100(2)
状態最小化
状態遷移表で表された順序回路を, 同じ動作をする最も の少ないものに変換する.
この例の場合は, 既に状態数最小なのでこのステップは不要. 状態最小化の方法の詳細は次節で述べる.
(3)
入出力
,状態の符号化
入力, 状態, 出力を で符号化する 例えば, 次のように符号化できる
入力
x1 x2− 50 100
状態
q1 q2 S0S50
S100
出力
z1 z2 (−,−)(J,−) (J,50)
☆ 実は, この状態と入出力の符号化によって, 最終的な回路の規模・複雑さは大きく変わってくる. 回路が簡単 になるような符号化を求めるための理論は多数あるが, それはいずれも大変難しい
(この授業では扱わない).(4)
状態遷移関数
,出力関数を求める
(3)
で決めた符号化に従って, 状態遷移表を全て だけで表す
2状態遷移表
現状態 次状態 出力
入力
=−入力
= 50入力
= 100入力
=−入力
= 50入力
= 100S0 S0 S50 S100 (−,−) (−,−) (−,−)
S50 S50 S100 S0 (−,−) (−,−) (J,−)
S100 S100 S0 S0 (−,−) (J,−) (J,50)
⇓
符号化
入力 x1 x2
− 0 0 50 0 1 100 1 0
状態 q1 q2
S0 0 0 S50 0 1 S100 1 0
出力 z1 z2
(−,−) 0 0 (J,−) 1 0 (J,50) 1 1
3
符号化された状態遷移表
q1q2 q′1q2′ (次状態) z1z2(出力)
x1x2= 0 0 x1x2= 0 1 x1x2= 1 0 x1x2= 0 0 x1x2= 0 1 x1x2= 1 0
0 0 0 0 0 1 1 0 0 0 0 0 0 0
0 1 0 1
1 0 1 0
(5)
フリップフロップ入力関数を求める
(D-FFの場合には超簡単)
(4)
で求めた状態遷移
(つまりフリップフロップの出力のq1, q2から
q1′, q2′への変化) 起こすためには, フリッ
プフロップの入力にどのような値を入れれば良いかを求める
q d x1
x2
z1
z2
1
q2
1
d2
clock Q D Q D combinational
circuit
D
フリップフロップの場合には,
Dの値が次の時刻にそのまま
Qに出るので,
d1=q1′, d2=q2′となる.
3
符号化された状態遷移表
q1q2 q′1q2′ (次状態) z1z2(出力)
x1x2= 0 0 x1x2= 0 1 x1x2= 1 0 x1x2= 0 0 x1x2= 0 1 x1x2= 1 0
0 0 0 0 0 1 1 0 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0 1 0
1 0 1 0 0 0 0 0 0 0 1 0 1 1
⇓ D-FF
の場合は
q′をそのまま
dにするだけ
4フリップフロップの入力関数, 出力関数
q1q2 (FF
への入力)
z1z2(出力)x1x2= 0 0 x1x2= 0 1 x1x2= 1 0 x1x2= 0 0 x1x2= 0 1 x1x2= 1 0
0 0 0 0 0 1 1 0 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0 1 0
1 0 1 0 0 0 0 0 0 0 1 0 1 1
(6)
組合せ回路の設計
フリップフロップの入力関数と出力関数の を作り, 組合せ回路を設計 例)
d1の入力関数
4
の表の
d1の列より
(q1, q2, x1, x2) = (0,0,0,0)
のとき
d1= (q1, q2, x1, x2) = (0,0,0,1)のとき
d1= (q1, q2, x1, x2) = (0,0,1,0)のとき
d1=· · ·
【重要】このとき, 使われていない符号 に対する関数の値は ドントケア とする
(q1, q2) = ( )と
(x1, x2) = ( )は使われていない
(q1, q2, x1, x2) = (0,0,1,1)
のとき
d1= (q1, q2, x1, x2) = (0,1,1,1)のとき
d1= (q , q , x , x ) = (1,0,1,1)のとき
d =(q1, q2, x1, x2) = (1,1,1,0)
のとき
d1= (q1, q2, x1, x2) = (1,1,1,1)のとき
d1=カルノー図を作成し, 論理関数を最小化
d1
q1q2 00 01 11 10
x1x2
00 01 11 10 X 1 1 X X X X X
1 X
q1
q2
x1
x2 X 1 1 X X X X X
1 X
d1=
同様にして,
d2および出力
z1,z2の最小積和形を求める
( 練習8.1 ).☆ この回路は 型なので, 出力が状態と入力の両方に依存しているが, 型 の場合は, 出力は状態だけに依存する.
最小化した論理式から回路を設計する
Q D Q
d1 d2 x2
x1
z1
z2
Q D Q
clock q1
q2
練習
8.1上記の
d1と同様にして
d2,z1,z2のカルノー図を作成し, 最小積和形を求めよ.
4
フリップフロップの入力関数, 出力関数
q1q2 d1d2(FF
への入力)
z1z2(出力)x1x2= 0 0 x1x2= 0 1 x1x2= 1 0 x1x2= 0 0 x1x2= 0 1 x1x2= 1 0
0 0 0 0 0 1 1 0 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0 1 0
1 0 1 0 0 0 0 0 0 0 1 0 1 1
d
2q
1q
200 01 11 10
x
1x
200 01 11 10
z
1q
1q
200 01 11 10
x
1x
200 01 11 10
z
2q
1q
200 01 11 10
x
1x
200 01 11 10
8.3
状態最小化
状態最小化
( )とは
与えられた状態遷移表を, 同じ動作で のできるだけ少ないものに変換する 現状態 次状態, 出力
x= 0 x= 1 S0 S1,1 S2,0 S1 S0,1 S2,0 S2 S2,0 S1,1
⇒
現状態 次状態, 出力
x= 0 x= 1 S01 S01,1 S2,0S2 S2,0 S01,1
な状態
(同じ働きをし,外部からは できない状態) を して一つの状
態にする.
最小化のアルゴリズム
☆ 最初は「 の状態が等価」と仮定して, 状態を
1つのグループにまとめた所からスター トし, これを識別可能なグループに次々に していく
1)
を観測することにより識別可能な状態を, 出力値に従ってグループ分けする.
(全ての入力に対して
を出す状態を同一グループにまとめる)
2)
下記のグループの をそれ以上できなくなるまで行なう
2.1)
各グループ
G内の状態について, 同じ入力を与えた時の が同じグループに属して いるかどうか調べる.
2.2)
全ての入力について次状態が同じグループに属していれば, そのグループの分割は終了
2.3)
もしいずれかの入力について次状態が異なるグループに属していれば,
Gを
G1, G2,· · ·に分割し,
Giの状態同一入力に対する次状態が全て同じグループに属するようにする.
現状態 次状態, 出力
出力x= 0 x= 1 0x1 Sa Sa,0 Sb,0 0 0 Sb Sd,1 Sa,1 1 1 Sc Sc,0 Se,0 0 0 Sd Sf,1 Se,1 1 1 Se Sd,1 Sc,1 1 1 Sf Se,1 Sa,0 1 0
⇒
現状態 次状態, 出力
次状態のグループx= 0 x= 1 0x1 0 Sa,0 Sb,0 0 1 Sc,0 Se,0 0 1 1 Sd,1 Sa,1 1 0 Sf,1 Se,1 2 1 Sd,1 Sc,1 1 0 2 Se,1 Sa,0 1 0
⇒
現状態 次状態, 出力
次状態のグループx= 0 x= 1 0x1 0 Sa Sa,0 Sb,0 0 1 Sc Sc,0 Se,0 0 1 1 Sd,1 Sa,1 3 0 Sd,1 Sc,1 3 0 3 Sf,1 Se,1 2 1 2 Sf Se,1 Sa,0 1 0
⇒
現状態 次状態, 出力
x= 0 x= 1
0 ,0 ,0
1 Sd,1 ,1
3 Sd Sf,1 ,1
2 Sf ,1 ,0
コメント
•
ここで紹介した状態最小化は, 完全定義
(completely specified;すべての次状態, 出力が定義されている) の 状態遷移表に対する方法である. 不完全定義
(incompletely specified;次状態や出力にドントケアが存在す る) の状態最小化には異なるアルゴリズムが必要となるが, それは大変難しい.
•
状態最小化を行なって得られる回路が, 行なわない回路よりも小さい
.状態数の減 少によりフリップフロップの個数が減ることはあるが, 逆に論理回路が複雑になることもある.
練習問題の解答例
練習
8.1d2
q1q2
00 01 11 10
x1x2
00 01 11 10 1 X
1 X
X X X X X d2=q1q2x2+q2x1x2
z1
q1q2
00 01 11 10
x1x2
00 01 11 10 X X 1 X X X X
1 X 1
z1=q2x1+q1x2+q1x1
z2
q1q2
00 01 11 10
x1x2
00 01 11 10 X X X X X X
X 1 z2=q1x1
Nagisa ISHIURA