ミーリ型とムーア型のステートマシンの違い:出力・タイミング・状態数・HDLの書き方を比較
ステートマシン(状態機械)は、今の状態を覚えるレジスタ、次の状態を決める組み合わせ回路、出力を決める組み合わせ回路からなります。ミーリ型とムーア型の違いは、出力が何で決まるかです。ミーリ型では、出力が今の状態と今の入力の両方で決まり、入力の変化が同じサイクルのうちに出力に表れます。ムーア型では、出力が今の状態だけで決まり、入力の変化はクロックで状態が変わってから出力に表れるので、反応が1サイクル遅れます。ミーリ型は状態が少なく反応が速いこと、ムーア型は出力が安定してタイミングを予測しやすいことが特徴です。
| 項目 | ミーリ型 | ムーア型 |
|---|---|---|
| 出力を決めるもの | 今の状態と今の入力 | 今の状態だけ |
| 状態遷移図での出力の書き方 | 遷移の矢印に「入力/出力」の形で書く | 状態の丸の中に、状態名と一緒に書く |
| 入力への反応 | 入力が変わると、クロックを待たずに同じサイクルのうちに出力が変わる | 次のクロックで状態が変わってから出力が変わる。ミーリ型より1サイクル遅れる |
| 状態の数(「101」を重なりありで検出する例) | 3状態(何も一致していない、1まで一致、10まで一致) | 4状態(出力1を表す「101を検出」の状態が別に必要) |
| 状態の数(一般) | 同じ働きなら、ムーア型と同じか少ない | ミーリ型の状態を、入ってくる遷移の出力ごとに分ける必要があり、多くなりやすい |
| グリッチと雑音 | 入力のグリッチや雑音が、組み合わせ回路を通ってそのまま出力に表れる | 入力の雑音は出力に伝わらない。出力を状態レジスタのビットから直接取り出すように符号化すれば、出力のグリッチもなくせる |
| タイミングの経路 | 入力から出力まで組み合わせ回路がつながり、前後の回路を含めた経路が長くなる。ミーリ型どうしをつなぐと組み合わせループができることがある | 出力はクロックのエッジの後の状態だけで決まるので、経路がレジスタで区切られ、タイミングを解析しやすい |
| HDLでの書き方 | 出力を決める組み合わせ回路のブロックで、状態に加えて入力も参照する | 出力の式は状態だけを参照する(case文で状態ごとに出力を決めるなど)。出力をレジスタから出すことも多い |
| 向いている用途 | 入力に1サイクルも遅れずに応答したい制御、状態の数を減らしたいとき | きれいな出力が必要な制御信号(別のクロックの回路やチップの外へ出す信号など)、タイミングを予測しやすくしたいとき |
数値は代表的な目安で、世代や製品によって異なります。