我是verilog的新手,因此我有一个非常简单的问题。我希望在data_in
在以下语句
pad
之前添加延迟
分配pad =(启用)? data_in:1'bz;
类似
assign pad = (enable) ? #10 data_in : 1'bz;
但它不起作用。这样做的正确方法是什么?
答案 0 :(得分:2)
您应该将延迟放在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只支持网络类型。
另外,请注意合成会忽略#
延迟。 #
延迟仅用于模拟。