web-dev-qa-db-ja.com

Verilogの=と<=の違いは何ですか?

私はここverilogのように新しいです...このプログラムの=と<=の違いについて質問したいですか?そして、どのようにデータの価値を印刷するのですか?

    module always_example();
reg clk,reset,enable,q_in,data;

always @ (posedge clk)
if (reset)  begin
   data <= 0;
end else if (enable) begin   
   data <= q_in;
end
// if i put     $print("data=%d", data);   there is error
endmodule
7
Hayder Al-Amily

<=は非ブロッキング割り当てです。コード例のように、シーケンシャルロジックを記述するために使用されます。 IEEE Std 1800-2012のセクション10.4.2「非ブロッキング手順の割り当て」を参照してください。

=割り当てをブロックするためのものです。組み合わせロジックを記述するために使用されます。

関連項目 Verilog合成での非ブロッキング割り当て、強制終了するコーディングスタイル!

$displayの代わりに$printを使用して、変数の値を出力できます。 IEEE Std 1800-2012のセクション21.2「システムタスクの表示」も参照してください。

11
toolic

=はブロックステートメントです。 alwaysブロックでは、コード行は前の行が実行された後にのみ実行されます。したがって、ループ内の組み合わせロジックのように、それらは次々に発生します。

<=は本質的に非ブロッキングです。つまり、alwaysブロックでは、すべての行が並行して実行されます。したがって、順次要素の実装につながります。

14
Sourabh