ステートマシンの考え方
📋 このページの内容
条件分岐やループはソフトウェアだけの話ではありません。論理回路でも実現できます。それがステートマシンです。後のユニットでHDLを使って記述しますが、その容易さは感動的です。
「ステートマシン(状態遷移機械)」って必殺技みたいな名前だね🐾
これを使えば、自動販売機や信号機みたいな『順番に動く賢いシステム』が作れるようになるんだ!
1. ステートマシンとは
ステートマシン(状態機械)とは、いくつかの状態(ステート)を持ち、条件によって次の状態に遷移する回路です。
状態遷移図の読み方
状態遷移図は「どの状態にいるとき、どの条件で、どの状態に移るか」を表した図です。
| 現在の状態 | 条件 | 次の状態 |
|---|---|---|
| A | 条件1 を満たす | B へ遷移 |
| A | 条件1 を満たさない | A のまま(自己ループ) |
| B | 条件2 を満たす | C へ遷移 |
| B | 条件2 を満たさない | B のまま |
| C | 条件3 を満たす | A へ遷移 |
| C | 条件3 を満たさない | C のまま |
活用例
ステートマシンはエアコン・電子炊飯器などの家電製品、自動車のエンジン制御、工業用ロボットなど幅広い機器の制御に使用されています。状態数・条件が非常に多い場合はマイクロコントローラが使われます。
2. 回路構成
ステートマシンは以下の2つのブロックで構成されます。
| ブロック | 役割 | 回路の種類 |
|---|---|---|
| 状態保持 | 「現在の状態」を記憶する | D-FF(フリップフロップ) |
| 次状態生成 | 現在の状態 + 外部入力 → 「次の状態」を計算 | 組み合わせ回路 |
動作の流れ
- 組み合わせ回路が「現在の状態」と「外部入力」から「次の状態」を計算する
- CLK の立ち上がりで「次の状態」を D-FF に取り込み「現在の状態」になる
- 「次の状態」が「現在の状態」と同じ場合は自己ループ(状態を保持)
3. 実例:CDトレイ制御
CDプレイヤーのトレイ開閉動作をステートマシンで表現します。
状態の定義(4つのステート)
| 状態名 | 状態コード | モータ動作 | 説明 |
|---|---|---|---|
| CLOSED | 00 | OFF | トレイが完全に閉じた状態 |
| OPENING | 01 | ON(開く方向) | トレイが開いている途中 |
| OPEN | 10 | OFF | トレイが完全に開いた状態 |
| CLOSING | 11 | ON(閉じる方向) | トレイが閉じている途中 |
状態遷移テーブル
| 現在の状態 | 遷移条件 | 次の状態 | モータ |
|---|---|---|---|
| CLOSED | ボタンが押された | OPENING へ | OFF → ON(開く) |
| CLOSED | ボタン未押下 | CLOSED のまま | OFF 継続 |
| OPENING | トレイが完全に開いた | OPEN へ | ON → OFF |
| OPENING | まだ開いていない | OPENING のまま | ON 継続 |
| OPEN | ボタンが押された | CLOSING へ | OFF → ON(閉じる) |
| OPEN | ボタン未押下 | OPEN のまま | OFF 継続 |
| CLOSING | トレイが完全に閉じた | CLOSED へ | ON → OFF |
| CLOSING | まだ閉じていない | CLOSING のまま | ON 継続 |
4. ステートマシン vs カウンタ
🔵 カウンタ
- 遷移条件:クロックのみ
- 状態変化:単調増加 / 単調減少
- 状態値(カウント値)そのものに意味がある
- ステートマシンの特殊ケースと見なせる
🟣 ステートマシン
- 遷移条件:任意の外部信号
- 状態変化:任意の状態へ遷移可能
- 状態値そのものに意味はない(符号化は設計者が決める)
- カウンタより複雑な制御が可能
ステート符号化
回路規模削減やスピード向上のため、意図的にステート値の割り付けを変える場合があります(バイナリ・グレイコード・ワンホット符号化など)。
お疲れさま!これでLシリーズ(基礎ノート)はすべて完了だよ🐾
次からは、いよいよお待ちかねの「Verilog-HDLの書き方(文法ノート)」に突入するよ!一緒にコードを書いていこう!
📌 まとめ
- ステートマシンはいくつかの状態を持ち、条件によって次の状態に遷移する回路
- D-FF(状態保持)と組み合わせ回路(次状態生成)で構成される
- CLK の立ち上がりで「次の状態」が「現在の状態」になる
- 状態遷移図で状態・遷移条件・遷移先を視覚的に表現する
- CDトレイ制御では CLOSED → OPENING → OPEN → CLOSING → CLOSED の4状態で動作する
- カウンタはクロックのみを遷移条件とするステートマシンの特殊ケース
- ステートマシンはカウンタと異なり任意の外部信号を遷移条件にできる
- ステートの符号化方法(バイナリ・グレイコード・ワンホットなど)は設計者が決める
