質問

パラメーターキーワードを使用して、状態を定義します。つまり、リセット= 5'B00000です。 $ displayを使用して、バイナリ表現の代わりに状態名を印刷するか、シミュレーションWaveビューアに状態名を表示する場合、どうすればよいですか?弦としてそれを印刷しようとするのはうまくいきません(ご想像のとおり)ので、これができるかどうか疑問に思います。

役に立ちましたか?

解決

私は自動的に方法を知りません $display aの名前 parameter. 。ただし、コードの複製を気にしない場合は、 task (また function)あなたの目標を達成するために:

    task show_name_state;
        case (state)
            5'b00000: $display("RESET");
            5'b00001: $display("WAIT");
        endcase
    endtask

    $display(state); show_name_state();

私は、パラメーターを認識し、波形ビューアーに名前を自動的に表示する機能を備えた少なくとも1つの(高価な)Verilogデバッガーを知っています。

他のヒント

あなたの目標が単なるシミュレーション中に状態の名前である場合、私は通常、次のようなことをします

`ifdef SIMULATION
reg [127:0] __state__;
case (state)
  STATE_1 : __state__ = "STATE_1";
  STATE_2 : __state__ = "STATE_2";
  default : __state__ = "error";
endcase
`endif


ここで、州は問題にパラメーターを持っている州登録簿です。

同じ値を持ついくつかのパラメーターがある可能性があるため、一般に数値からその値のパラメーターの名前に移動することはできません。パラメーターはcのようなものです #defines;それらを使用して一連の状態を定義できますが、変数と、可能な状態を表すために使用しているパラメーターのリストとの間に正式な関連性はありません。より良い選択肢がなかったので、以前はこの方法でパラメーターを使用する(MIS)を使用することに共通していましたが、SystemVerilogは導入しました enum パラメーターメソッドの問題がないタイプ。使用しているツールについては言及していませんでしたが、ツールがSystemVerilog enumのタイプをサポートしていると仮定すると、それは状態価値に適しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top