我是verilog的新手,因此我有一个非常简单的问题。我想在data_in
在以下声明中分配给pad
之前添加延迟
assign pad =(启用)? data_in:1'bz;
就像是
assign pad = (enable) ? #10 data_in : 1'bz;
但它不会起作用。这样做的正确方法是什么?
你应该把延迟放在assign
和pad
之间
assign #10 pad = (enable) ? data_in : 1'bz;
这种延迟将在data_in和切换到高Z上看到效果。 您可以分别控制上升,失败和关闭时间。例如:
assign #(10,10,0) pad = (enable) ? data_in : 1'bz;
没有开启时间,所以如果您只想延迟data_in
,则需要创建间歇性分配
wire #10 data_in_delayed = data_in;
assign pad = (enable) ? data_in_delayed : 1'bz;
您可以在IEEE Std 1800-2012§10.3连续分配中了解有关延迟的赋值语句的更多信息。注意SystemVerilog允许在net和variable类型上赋值语句,Verilog只支持net类型。
另外,请注意,#
延迟会被合成忽略。 #
延迟仅用于模拟。