• 締切済み

verilog HDLを使ったステートマシン記述について

verilog HDLについての質問です。ステートマシンについてというよりは、文法的な質問になるかもしれません。 verilogでステートマシンを記述する際に、ステート内で使うのは、だいたいがif~else文かと思うのですが、elseを使わずに、if(条件)~if(条件)~・・・というように、必ず条件が一致すれば、順番に実行するというように記述することは可能でしょうか? よろしくお願いします。

みんなの回答

  • JYUZA
  • ベストアンサー率29% (54/184)
回答No.2

可能な気がしますが・・・verilog だとコンパイラにもよりますがほとんどエラーやワーニングは出ません。この質問文だけでは詳細不明なのでやってみるといいのではないでしょうか?あとはシミュレーションをきっちりやって予期しないラッチ等が出来ていないかを確認するしかないですね。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

言っている意味があんまりよくわからないのですが。 if (条件1) begin  処理1 end if (条件2)begin  処理2 end で、条件1と条件2が背反ではない(同時に成り立つ可能性がある) ってことですか。 処理1と処理2が相互に関係ない処理なら問題ないです。 ただ、例えば、処理1と処理2の中で同じ変数にノンブロッキング代入しているとかだと、ちょっと問題ありです。 これも文法上は可能なんですが、合成結果が、シミュレーション結果と合わなくなるでしょう。verilogを書くときは、実際にどんな回路ができるのか(クラゲとか釣鐘で書いたらどんな感じになるのか)を、一応、ちょっとだけは頭の片隅に置いておかないといけません。