Main Content

Mealy と Moore チャートを使用したシーケンス認識

この例では、信号処理のシーケンス認識アプリケーションに Mealy マシンと Moore マシンを使用する方法を説明します。詳細については、Mealy マシンと Moore マシンの概要を参照してください。

このモデルでは、2 つの Stateflow® チャートが、異なるセマンティクスのセットを使用して、Signal Editor (Simulink)ブロックからの入力信号に含まれるシーケンス 1213 を検出します。

それぞれのチャートに、入力データ u と次の 2 つの出力データが含まれます。

  • seqFound は、チャートがシーケンスを見つけるタイミングを示します。値が false の場合、チャートがまだシーケンスを検索中であることを意味します。値が true の場合、チャートが既にシーケンスを見つけていることを意味します。

  • status はシーケンス認識のステータスを記録します。この値の範囲は 0 から 4 で、チャートによって検出されたシンボルの数を示します。

Moore チャートは、チャートの現在のステートに基づいて、seqFoundstatus を出力します。各タイム ステップで、チャートは現在のステートに対するアクションを実行し、入力 u を評価して、新しいステートに遷移します。たとえば、チャートが Signal Editor ブロックから入力値のシーケンス 1213 を受け取ると、チャートは 4 タイム ステップで、ステート s0 →ステート s1 →ステート s12 →ステート s121 →ステート s1213 に遷移します。ステート s1213 がアクティブになった後に、チャートはステート アクションで seqFound の値を true に設定します。

Mealy チャートは、チャートの現在のステートおよび入力値に基づいて、seqFoundstatus を出力します。タイム ステップごとに、チャートは入力 u を評価し、新しいステートへ遷移して、対応する条件アクションを実行します。このチャートは、遷移の条件アクションで出力値を計算するため、これらのアクションはステートがアクティブになる前に実行されます。たとえば、チャートが Signal Editor ブロックから入力値のシーケンス 1213 を受け取ると、チャートは 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.

参考

(Simulink)

関連するトピック