以下のデジタル回路の問題をやってみる。続き。
- Q: 10110を認識するステートマシンを作ってください。
- A:
上記で正解なのだが、考え方としては、
- ステートA:初期状態
- ステートB:1が受理された状態
- ステートC:10が受理された状態
- ステートD:101が受理された状態
- ステートE:1011が受理された状態
となるため、一つずつ条件を考える。
- ステートA:初期状態から1が入力されればBに移る。0が入力されればそのまま
- ステートB:0が入力されればCに移る。1が入力されると、認識したい"10110"の最初の1が再度認識された状態とみなされ、Bにとどまる。
- ステートC:1が入力されればDに移る。0が入力されると、"100"が受理された状態のためこのようなパタンは存在せず、Aに戻る。
- ステートD:1が入力されればEに移る。0が入力されると、"1010"となるため、"10110"の2番目までが受理された状態と認識できるため、B戻る。
- ステートE:0が入力されれば"10110"が受理された状態となる。1が入力されれば"10111"となり、最初の1が受理された状態と認識できるため、Aに戻る。