p.375
15.2 各ステートにどのように番号を振るか
具体的なステートマシンについて述べる前にもう一つ説明しておくべき大切なことがあります。それは、FSM (有限ステートマシン)の持つ各ステートにどのように番号を振るのか(どのようにエンコードするのか)ということです。一般原則についてはセクション3.11およびセクション2.6.5で見ました。VivadoとQuartus Primeの個々の例についてはセクション9.5.1で見ました。下にもう一度まとめます。
Vivadoの場合: (略)
オプション: (略)
デフォルト: (略)
例: (略)
Quartus Primeの場合: syn_encoding
属性を使う。
オプション: "sequential"
、"one-hot"
、"gray"
、"johnson"
、"compact"
、"auto"
(デフォルト)、ユーザー指定。
デフォルト: ステート数が4までなら"sequential"
、ステート数が5~49の場合は"one-hot"
、ステート数が50以上の場合は"gray"
。
例:
type state_type is (A, B, C, D, E); signal pre_state, nx_state: state_type; attribute syn_encoding: string; attribute syn_encoding of state_type: type is "sequential";