問題タブ [fsm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
functional-programming - Ocamlで単純な有限状態マシンを表現する方法は?
私はC++とJavaでステートマシンを作成しましたが、Ocamlのような関数型言語では作成していません。
問題は、オブジェクト言語バージョンのコードを適応させることができるかどうかわからないことです。Ocamlではレコードとバリアントがクラスよりも強力だからです。
したがって、簡単に構成できるイベント駆動有限状態マシン(UMLのような階層型)が必要です。
現場で経験を積んだ誰かがその簡単なサンプルを投稿できますか?最も一般的なトラップを回避するためだけに
ありがとう :)
編集16/03:可変状態なしでそれを行うことは可能ですか?そして、「FSM」という名前で適切にカプセル化したいのですが、モジュールまたはクラスを選択する必要がありますか?
verilog - Verilog、FPGA、ユニット化されたレジスタの使用
私が取り組んでいる AGC/SPI コントローラの奇妙な動作について質問があります。これは Verilog で行われ、Xilinx Spartan 3e FPGA をターゲットにしています。コントローラーは、外部入力に依存して開始する FSM です。FSM の状態は、明示的に初期化されていないstate_regに格納されます。コントローラーを実装したとき、FSM は実行されませんでした。SPI バスの監視 アクティビティは見られませんでした。FSM を監視するために、state_regを LED バンクに接続する出力バスにルーティングしました。それが行assign data_out = state_reg ですやっています。私がこれを行ったとき、FSM は AGC/SPI コントローラが SPI バスで観察されたように正しく動作することがわかりました。初期化時にstate_regが未確定の状態にあるため、FSM がどのような状態にもならないため、実行されないようです。しかし、state_regを出力に割り当てることで、最初から期待していたように00000000に初期化されました。私の質問は、初期化されていないレジスタは値 0 を想定しているのでしょうか? 初期化されていないレジスタを出力に割り当てることで、一見したように強制的にゼロになるのでしょうか? それとも、私が理解できない他の何かがここで起こっていますか? 以下は私のコードです。*state_reg** が出力ワイヤ [7:0] data_outに割り当てられている関連部分をコメントしました. これが長い質問であることは承知していますが、どのような種類の動作を期待すべきかを本当に理解しようとしています。ありがとう.
java - このアプリケーションのアイデアにはJavaGraphicsAPIを推奨します
FSM制御回路シミュレーションを作成するためのツールを作りたいです。NB!ALU部分ではありません。
可能な限り多くの機能がすでに利用可能な優れたJavaAPIを誰かが推奨できますか?基本的には、グラフィカルモデリング言語エディタのようなものになります。
ユーザーは、次のようなものを作成して実行できる必要があります。
computer-architecture - FSM では、1 つの状態が 1 クロック サイクル以上持続しますか?
学校用のシンプルなものをデザインする必要があります。具体的にはムーア FSM です。状態遷移がどのように発生するかわかりません。次の状態は各クロックですか? レジスタをシフトして値を追加できるかどうか疑問に思っているので、すべて同じ状態で知る必要があります... ウェーブエッジを使用できますか?
編集:
ゲート レベルから回路図としてレジスタを使用してALU部分を設計する必要があるため、ターゲットCPUはありません。
アルゴリズム図を作成し、 Moore FSMのルールに従って状態を関数ブロックに配置しました。操作の各ブロックは 1 つの状態を取得します。
たとえば、状態S1では、次の操作があります。y0 = Reg1 を左にシフトします。y1 = Reg1 = Reg1 + Reg2 . したがって、Moore FSMの制御部分が出力するマイクロコマンドは0000011 (yn...y1,y0) になります。このマイクロコマンドは、設計する必要がある ALU 部分への入力である必要があります。どちらもReg1を使用しているため、y1、y0が互いに競合することに気付きました。
私は実際に制御部分を持っていないため、コアFSMを想像し、レジスタを備えたALUのみを設計する必要があるため、問題があります。これが、複数のクロック サイクルを取得するかどうか疑問に思っていた理由です。つまり、y0、y1をシーケンスすることができますか、それとも 1 クロックで操作全体を完了する必要がありますか?
並列入力、並列出力の非シフト レジスタを作成する予定です。明らかに、マイクロコマンドの 2 つの操作を同時に行うことはできません。それで、なにかお手伝いできますか:
制御部分は完全に抽象的であり、これが実際にどのように処理されるかわかりません。
concurrency - FSMは、非同期のAkkaActorベースの計算エンジンに適したソリューションです
私は計算エンジン(Akkaアクターとして実装)を作成しています。このエンジンは、いくつかの非同期アクターと同時アクターを使用して、計算の一部だけでなくデータの取得も実行します。
メインアクターは、計算を開始するためのメッセージを受信すると、計算を実行する前に、DBから3つの異なるデータを取得する必要があります。このデータ取得を行うために、データ取得ごとに1つずつ、合計3つのアクターをスピンアップしています。
次のステップに進む前に、3つのデータセットすべてが必要です。ただし、それらは非同期で同時に取得されるため、どちらが最初に返されるかを知る方法がありません。
私の最初の本能は、各プロセスのメインアクターにフラグ(ブール値)を維持することです。各子アクターがデータセットを送り返すと、メインアクターの対応するフラグがtrueに設定され、他の2つのフラグがチェックされて次に進む準備ができているかどうかが確認されます。
FSMについて詳しく知るにつれて、自分がやっていることにも合う可能性があると思います。しかし、私の「状態」のいくつかは一度に存在する可能性があります。たとえば、「WaitingForData1」、「WaitingForData2」、および「WaitingForData3」の状態はすべて共存できます。これは、FSMで行うのは正しいことではないようです。別の方法は、他の状態の浸透ごとに状態を作成することです。例えば:
- 状態1:データ1、データ2、およびデータ3を待機しています
- 状態2:データ1の準備ができており、データ2とデータ3を待機しています
- 状態3:データ2の準備ができており、データ1とデータ3を待機しています
- 状態4:データ3の準備ができており、データ1とデータ2を待機しています
- 状態5:データ1とデータ2の準備ができており、データ3を待機してい
ます..。 - 状態N:データ1、データ2、およびデータ3の準備ができています
これは私がやっていることには少しやり過ぎのようですが、実際には非同期および並行プロセスを使用するFSMを実装するための最良の方法かもしれません。
FSMの専門家からのアドバイスをいただければ幸いです。
sql - SQL の有限状態マシンの定義はありますか?
PL/SQL、SQL92、SQL99 などの SQL の有限ステート マシン定義があるかどうかは誰にもわかりません。
SQLの文法定義があるかどうかわからない..
java - ビジュアル Eclipse-3.7 エディターが機能する Java ステート マシン フレームワークはどれですか?
Unimod や Apache SCXML などのエディタを備えた Java FSM フレームワークがいくつかあるようですが、前者は eclipse-3.7 に問題があり、後者はリリースすらされていません。2 つ目の可能性として、スタンドアロンのビジュアル エディターを使用しますが、この質問は、eclipse-3.7 ユーザーの場合に使用されていると報告されている、適切なエディター プラグインを備えたフレームワークがあるかどうかに関するものです。デスクトップ GUI アプリケーション設定で適用されます。
では、機能的なビジュアル Eclipse-3.7 エディターを備えている Java ステート マシン フレームワークはどれでしょうか?
java - Java で有限状態マシンを作成する方法
FSM の一連の状態を読み取るプログラムの作成方法。入力データは、(状態入力次の状態) 形式のテキスト ファイルから取得され、最後の行は最終状態です。例えば :
プログラムの出力は次のようになります。
a) FSM によって生成された文字列のリスト。
b) プログラムは、FSM が DFA か NDFA かを判断し、結果を出力できます。
c - ミーリーとムーアの違い
Mealy と Moore のステート マシンの違いは、C の実装に関して実際に意味がありますか? その違いは通常何ですか?
昔は、RTL に関しては、Mealy/Moore の長所/短所を理解するのはずっと簡単でした。現在の状態に依存する出力全体/現在の状態に依存する出力+現在の入力の違いは理にかなっており、場合によってはMealyの状態が1つ少ない状態で作成できるという事実も理にかなっています。タイミング図を各 FSM 実装に関連付けることで、それらの違いもより明確になりました。
C でステート マシンを作成しているとします。あるケースでは、LUT は状態/現在の入力 (Mealy) に依存し、Moore では、LUT は現在の状態を検索して次の状態を返すだけです。どちらの場合も、出力は LUT から戻った後に発生します (間違っている可能性はあると思います)。C でコーディングした場合に Mealy が有利になる明確な方法は考えていません。コードの読みやすさ、速度、コード密度、設計の容易さなどのトピックはすべて関連するトピックである可能性があります。私の観点からは、2 つのモデルはほとんど同じように見えます。
おそらく、この違いは学者向けのトピックにすぎません。実際には、C 実装では違いはごくわずかです。Mealy と Moore の間で C ステート マシンの実装が異なる主な方法を知っていて、(それも重要な) 本当の利点がある場合は、ぜひ知りたいと思います。強調したいのですが、RTL の実装について質問しているわけではありません。
Mealy/Moore の別の投稿をここで見ました: Mealy v/s. ムーア
しかし、これは私が探している説明のレベルではありません。
scala - システムのシャットダウン時にAkkaでログ出力のフラッシュを保証しますか?
私はScala でAkka FSMを使用し、特性のlog
メンバー、つまり のインスタンスを使用してログを記録しています。FSM
akka.event.Logging
アプリケーションが正常に終了したいときにアクター システムをシャットダウンするために呼び出すcontext.system.shutdown()
と、最新のログ メッセージが失われることがあるようです (まったく出力されません)。
システムがシャットダウンされる前に、すべてのログ メッセージが常に出力されることを保証する方法はありますか?