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

8 順序回路の設計 (1)

N/A
N/A
Protected

Academic year: 2021

シェア "8 順序回路の設計 (1)"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

「論理回路」ノート

(2013

年度

, c

関西学院大学 石浦 菜岐佐

)

http://ist.ksc.kwansei.ac.jp/∼ishiura/lc/

8 順序回路の設計 (1)

D フリップフロップを用いた同期式順序回路の設計

状態 最小化

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)

(2)

状態最小化

状態遷移表で表された順序回路を, 同じ動作をする最も 状態数 の少ないものに変換する.

この例の場合は, 既に状態数最小なのでこのステップは不要. 状態最小化の方法の詳細は次節で述べる.

(3)

入出力

,

状態の符号化

入力, 状態, 出力を 0 と 1 で符号化する

例えば, 次のように符号化できる 入力

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

☆ 実は, この状態と入出力の符号化によって, 最終的な回路の規模・複雑さは大きく変わってくる. 回路が簡単 になるような符号化を求めるための理論は多数あるが, それはいずれも大変難しい

(この授業では扱わない).

(4)

状態遷移関数

,

出力関数を求める

(3)

で決めた符号化に従って, 状態遷移表を全て 0 と 1 だけで表す

2

状態遷移表

現状態 次状態 出力

入力

=

入力

= 50

入力

= 100

入力

=

入力

= 50

入力

= 100

S0 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 q1q2 (次状態) 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

(5)

フリップフロップ入力関数を求める

(D-FF

の場合には超簡単)

(4)

で求めた状態遷移

(つまりフリップフロップの出力のq1, q2

から

q1, q2

への変化) 起こすためには, フリッ

プフロップの入力にどのような値を入れれば良いかを求める

(3)

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 q1q2 (次状態) 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

d

1

d

2 (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=

0

(q1, q2, x1, x2) = (0,0,0,1)

のとき

d1=

0

(q1, q2, x1, x2) = (0,0,1,0)

のとき

d1=

1

· · ·

【重要】このとき, 使われていない符号 に対する関数の値は ドントケア とする

(q1, q2) = (

1 , 1

)

(x1, x2) = (

1 , 1

)

は使われていない

(q1, q2, x1, x2) = (0,0,1,1)

のとき

d1=

X

(q1, q2, x1, x2) = (0,1,1,1)

のとき

d1=

X

(q , q , x , x ) = (1,0,1,1)

のとき

d =

X

(4)

(q1, q2, x1, x2) = (1,1,1,0)

のとき

d1=

X

(q1, q2, x1, x2) = (1,1,1,1)

のとき

d1=

X

カルノー図を作成し, 論理関数を最小化

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=

q

1

q

2

x

1

+ q

1

x

1

x

2

+ q

2

x

2

同様にして,

d2

および出力

z1,z2

の最小積和形を求める

( 練習8.1 ).

☆ この回路は Mealy 型なので, 出力が状態と入力の両方に依存しているが, Moore

の場合は, 出力は状態だけに依存する.

最小化した論理式から回路を設計する

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

(5)

d

2

q

1

q

2

00 01 11 10

x

1

x

2

00 01 11 10

z

1

q

1

q

2

00 01 11 10

x

1

x

2

00 01 11 10

z

2

q

1

q

2

00 01 11 10

x

1

x

2

00 01 11 10

8.3

状態最小化

状態最小化

(

state minimization

)

とは

与えられた状態遷移表を, 同じ動作で 状態数 のできるだけ少ないものに変換する 現状態 次状態, 出力

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,0

S2 S2,0 S01,1

等価 な状態

(同じ働きをし,

外部からは 区別 できない状態) 併合 して一つの状

態にする.

最小化のアルゴリズム

☆ 最初は「 全て の状態が等価」と仮定して, 全 状態を

1

つのグループにまとめた所からスター トし, これを識別可能なグループに次々に 分割 していく

1)

出力 を観測することにより識別可能な状態を, 出力値に従ってグループ分けする.

(全ての入力に対して

同じ出力 を出す状態を同一グループにまとめる)

2)

下記のグループの 分割 をそれ以上できなくなるまで行なう

2.1)

各グループ

G

内の状態について, 同じ入力を与えた時の 次状態 が同じグループに属して いるかどうか調べる.

2.2)

全ての入力について次状態が同じグループに属していれば, そのグループの分割は終了

2.3)

もしいずれかの入力について次状態が異なるグループに属していれば,

G

G1, G2,· · ·

に分割し,

Gi

の状態同一入力に対する次状態が全て同じグループに属するようにする.

併合

(6)

現状態 次状態, 出力

出力

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

S

a Sa,0 Sb,0 0 1

S

c Sc,0 Se,0 0 1 1

S

b Sd,1 Sa,1 1 0

S

d Sf,1 Se,1 2 1

S

e Sd,1 Sc,1 1 0 2

S

f 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

S

b Sd,1 Sa,1 3 0

S

e Sd,1 Sc,1 3 0 3

S

d Sf,1 Se,1 2 1 2 Sf Se,1 Sa,0 1 0

現状態 次状態, 出力

x= 0 x= 1

0

S

ac

S

ac ,0

S

be ,0

1

S

be Sd,1

S

ac ,1

3 Sd Sf,1

S

be ,1

2 Sf

S

be ,1

S

ac ,0

コメント

ここで紹介した状態最小化は, 完全定義

(completely specified;

すべての次状態, 出力が定義されている) の 状態遷移表に対する方法である. 不完全定義

(incompletely specified;

次状態や出力にドントケアが存在す る) の状態最小化には異なるアルゴリズムが必要となるが, それは大変難しい.

状態最小化を行なって得られる回路が, 行なわない回路よりも小さい とは限らない

.

状態数の減

少によりフリップフロップの個数が減ることはあるが, 逆に論理回路が複雑になることもある.

練習問題の解答例

練習

8.1

d2

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

参照

関連したドキュメント

の変化は空間的に滑らかである」という仮定に基づいて おり,任意の画素と隣接する画素のフローの差分が小さ くなるまで推定を何回も繰り返す必要がある

7IEC で定義されていない出力で 575V 、 50Hz

題が検出されると、トラブルシューティングを開始するために必要なシステム状態の情報が Dell に送 信されます。SupportAssist は、 Windows

Q-Flash Plus では、システムの電源が切れているとき(S5シャットダウン状態)に BIOS を更新する ことができます。最新の BIOS を USB

駐車場  平日  昼間  少ない  平日の昼間、車輌の入れ替わりは少ないが、常に車輌が駐車している

・電源投入直後の MPIO は出力状態に設定されているため全ての S/PDIF 信号を入力する前に MPSEL レジスタで MPIO を入力状態に設定する必要がある。MPSEL

★分割によりその調査手法や評価が全体を対象とした 場合と変わることがないように調査計画を立案する必要 がある。..