状態遷移図の書き方

[] [] []


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

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

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

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

 

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

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

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

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

◇◇

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

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

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

 


[] [] []