状態遷移図の書き方

[] [] []


FPGA設計で、ある決まったシーケンスで実行したいときステートマシンを使うが、ステートマシンは状態遷移図で直接的に表せる。

状態遷移図の書き方は次のとおり。

(1) 1つの状態を1つのブロックで書く

UMLでは、ブロック内を横線で区切って、上に状態名、下にその状態で実行する動作を書くことになっているが、動作を書くと図が大きくなって読みにくくなるので、遷移条件に関わる動作に限定した方がよいかもしれない。

(2) 遷移を矢印で書き、矢印の横に遷移条件を書く。条件がない矢印は無条件で(次のクロックに必ず)遷移する。(UMLでは遷移条件を[ ]で書く)

    遷移条件が成り立たないときはその状態に留まるが、留まる矢印は冗長なので描かなくてよい。

    複数の遷移先がある場合に、遷移条件どうしが同時に成り立ちうるなら優先順も書く。

    どの状態からも強制的に遷移するような矢印(リセットや異常検出など)は、矢印を全部描くと読みにくくなるので分離した方がよい。

◇◇

状態遷移図の書き方のルール自体は上記のように簡単だが、何を1つの状態として定義するかは難しい(ステートの決め方)

例えば、状態S11回だけ実行をした後にdone信号が来るまで待つというシーケンスを

と描いてしまうと、doneを待つ間に状態S1を繰り返し実行してしまうことになり不都合で、正しくは次のようにS1の他にウエイトしている状態S2を設けなければならない。


[] [] []