リチャーズコントローラは、単純な集積回路と組み合わせロジックを使用して有限状態マシンを実装する方法です。この方法は、発明者である Charles L. Richards にちなんで名付けられました。この方法を使用すると、状態図、状態遷移表、ブール代数などの従来の手法よりも複雑な有限状態マシンを簡単に設計できます。リチャーズの手法を使用すると、数百または数千の状態を持つ有限状態マシンを簡単に実装できます。
Richards コントローラーは多くの状態を簡単に使用できるように拡張できるため、多くの実用的なアプリケーションで使用できます。
歴史
リチャーズ コントローラは、状態図、状態遷移表、および論理最小化という従来の方法を使用するよりも簡単な方法で有限状態マシンを設計する必要性から開発されました。当時は[いつ? ]現在あるコンピュータ ベースの 論理最小化ツールの多くは[いつ? ]存在していませんでした。そのため、論理最小化は主にカルノー マップとドモルガンの法則の使用に限定されていました。このため、Charles L. Richards は、明示的な状態遷移表を必要としない有限状態マシンの実装方法を発明しました。彼は、1973 年 2 月のElectronics誌でその研究結果を発表しました。[要出典] 彼の一般化された実装は人気を博し、1980 年代には古典的な設計方法と見なされるようになりました。現在市販されている製品に古典的なリチャーズ コントローラが含まれている可能性は低いですが (ロード可能なカウンターを使用するものよりも高速な設計が存在するため)、改良されたリチャーズ コントローラまたはリチャーズ コントローラから派生した設計が使用されている可能性は高いです[引用が必要]。
リチャーズフローチャート


Richards コントローラはMealy マシンです。出力は現在の状態と入力の両方に依存しているからです。しかし Richards は、状態図ではなくフローチャート図を使用して状態を表す独自の方法を考案しました。各状態はフローチャート上で転送条件として表されます。各条件には、YES または NO の 2 つの制御パスがあります。条件は、マシンへの 1 ビット入力に基づいて YES または NO (TRUE または FALSE) になります。(Richards p. 108) 条件の入力が何であるかに応じて、その条件に関連付けられた 2 つの転送関数の 1 つが実行されます。マシンは、関数の実行をデバイスの 1 つのピンの出力の設定と見なします。これを使用して、組み合わせロジックをトリガーできます。転送関数が実行されると、マシンは新しい状態に入り、各転送関数は、遷移先の新しい状態を暗黙的または明示的に定義します。暗黙的な状態定義は、設計者による追加回路なしで発生するため、デフォルトとも呼ばれます。条件が YES の場合、数値的に次の状態に遷移します。たとえば、状態 0 で YES が発生した場合、状態 1 に遷移します。条件が NO の場合、マシンは現在の状態のままになります。この動作を使用すると、単純なシーケンシャル フローチャートを持つマシンを作成できます。もちろん、シーケンシャル マシンは通常はあまり役に立ちませんが、幸いなことに、いわゆるジャンプを使用して、順序どおりに状態を遷移する方法があります。ジャンプを実装するには、宛先の状態を選択するための追加のハードウェアが必要です。正確なハードウェアは、実行される機能によって異なります。
コントローラのカーネル

Richards コントローラのコアカーネルは、カウンタ、マルチプレクサ、および 2 つのデコーダの 4 つの部分に要約できます。シンプルなコントローラは、古典的な 7400 シリーズの TTL ロジック集積回路を使用して構築できます。使用されるカウンタは 74163、マルチプレクサは 74151、2 つのデコーダは 7442 部品です。[1] カウンタからの出力は、マルチプレクサ入力のどのビットを出力 Y に送信するかを選択します (その反転が出力 WN に送信されます)。Y がハイの場合、カウンタは増分できますが、そうでない場合は増分できません。同様に、デコーダの D 入力は WN に接続されているため、YES 機能出力を有効にするには Y をハイにする必要があります。一方、NO 機能出力を有効にするには、そのデコーダの D 入力が Y に設定されているため、Y をローにする必要があります。ジャンプを実行するには、カウンタの LDN ビットと、A、B、C、および D 入力を設定する必要があります。 LDN は、カウンターに A、B、C、および D 入力の値をロードするように指示します。組み合わせロジックを使用すると、特定の機能に対してカウンターに値をロードし、他の機能に対してはロードしないようにしたり、アクティブな機能に応じてロードする状態アドレスを指定したりできます。これを行うには、機能と遷移先の状態のテーブルを作成し、ジャンプ先の状態のアドレスを構成する各ビットのブール代数式を見つけるだけです。
参照
参考文献
- ^ Charles L. Richards、「複雑なプログラムコントローラを設計する簡単な方法」、エレクトロニクス、107-113、1973年2月。
- リチャーズ、チャールズ L.;複雑なプログラムコントローラを設計する簡単な方法。エレクトロニクス、1 (1973 年 2 月): 107–113。
- Wakerly, John F.; Digital Design – 3rd Edition. Upper Saddle River, NJ: Prentice-Hall Inc. 2001年。
