プロが教える店舗&オフィスのセキュリティ対策術

verilog HDLについての質問です。ステートマシンについてというよりは、文法的な質問になるかもしれません。

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

A 回答 (2件)

可能な気がしますが・・・verilog だとコンパイラにもよりますがほとんどエラーやワーニングは出ません。

この質問文だけでは詳細不明なのでやってみるといいのではないでしょうか?あとはシミュレーションをきっちりやって予期しないラッチ等が出来ていないかを確認するしかないですね。
    • good
    • 0

言っている意味があんまりよくわからないのですが。



if (条件1) begin
 処理1
end
if (条件2)begin
 処理2
end

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!