以下の形でいくつかのステートメントを見ました。ここで#`DELとはどういう意味ですか? 特殊文字が含まれているため、意味を簡単に見つけることができません。
cmd <= #`DEL 32'b0
以下の形でいくつかのステートメントを見ました。ここで#`DELとはどういう意味ですか? 特殊文字が含まれているため、意味を簡単に見つけることができません。
cmd <= #`DEL 32'b0
問題のコードは、割り当てをある程度遅らせます。#`DEL (バッククォートのためインライン コーディングを使用できません) には 3 つの部分があります。まず、# はこれが遅延ステートメントであることを示します。次に、バッククォート (~ の下の文字) は、Verilog でのプリプロセッサ定義を示します。コンパイルしているコードのどこかに、次の行に沿ったものがあります。
`define DEL 1ns
1ns は任意の時間値であり、これが遅延になります。ここで、DEL の前に (~ の下に) バックティックが必要であることを明確にする必要がありますが、32'b0 は単一引用符を使用します。
遅延宣言です。
右側から左側への値の代入を定義された量だけ遅らせます。この場合、cmd がゼロになるのを遅らせます。
遅延は、任意の時間形式またはリアルタイム形式で指定できます#1
。...
#1ns, #1us, #1ms
さらに、SystemVerilog で利用できます。
より典型的なケースは、右辺が一定でない場合です。
assign a = #1ns b;
ここで a は b に 1 ns 遅れます。
これへの参照は、Language Reference Manual LRMで「delay_value」を検索して見つけることができます。