Mealy と Moore チャートを使用したシーケンス認識
この例では、信号処理のシーケンス認識アプリケーションに Mealy マシンと Moore マシンを使用する方法を説明します。詳細については、Mealy マシンと Moore マシンの概要を参照してください。
このモデルでは、2 つの Stateflow® チャートが、異なるセマンティクスのセットを使用して、Signal Editor (Simulink)ブロックからの入力信号に含まれるシーケンス 1
、2
、1
、3
を検出します。
それぞれのチャートに、入力データ u
と次の 2 つの出力データが含まれます。
seqFound
は、チャートがシーケンスを見つけるタイミングを示します。値がfalse
の場合、チャートがまだシーケンスを検索中であることを意味します。値がtrue
の場合、チャートが既にシーケンスを見つけていることを意味します。status
はシーケンス認識のステータスを記録します。この値の範囲は 0 から 4 で、チャートによって検出されたシンボルの数を示します。
Moore チャートは、チャートの現在のステートに基づいて、seqFound
と status
を出力します。各タイム ステップで、チャートは現在のステートに対するアクションを実行し、入力 u
を評価して、新しいステートに遷移します。たとえば、チャートが Signal Editor ブロックから入力値のシーケンス 1
、2
、1
、3
を受け取ると、チャートは 4 タイム ステップで、ステート s0
→ステート s1
→ステート s12
→ステート s121
→ステート s1213
に遷移します。ステート s1213
がアクティブになった後に、チャートはステート アクションで seqFound
の値を true
に設定します。
Mealy チャートは、チャートの現在のステートおよび入力値に基づいて、seqFound
と status
を出力します。タイム ステップごとに、チャートは入力 u
を評価し、新しいステートへ遷移して、対応する条件アクションを実行します。このチャートは、遷移の条件アクションで出力値を計算するため、これらのアクションはステートがアクティブになる前に実行されます。たとえば、チャートが Signal Editor ブロックから入力値のシーケンス 1
、2
、1
、3
を受け取ると、チャートは 4 タイム ステップで、ステート s0
→ステート s1
→ステート s12
→ステート s121
→ステート s1213
に遷移します。ステート s1213
がアクティブになる同じタイム ステップの条件アクションで、チャートは seqFound
の値を true
に設定します。
モデルをシミュレートすると、seqFound
スコープによって、Moore チャートの出力が Mealy チャートの出力よりタイム ステップ 1 つ分遅れていることがわかります。この遅延の原因は Moore のセマンティクスにあります。出力が、現在の入力ではなく、各タイム ステップの開始時のチャートのステートに基づいているからです。
参考文献
Katz, Bruce F. Digital Design: From Gates to Intelligent Machines, 2006.
参考
Signal Editor (Simulink)