如何向Tri-state Buffer添加延迟

时间:2017-03-17 04:53:22

标签: verilog delay assign bidirectional inout

我是verilog的新手,因此我有一个非常简单的问题。我希望在data_in在以下语句

中分配给pad之前添加延迟
  

分配pad =(启用)? data_in:1'bz;

类似

assign pad = (enable) ? #10 data_in : 1'bz;

但它不起作用。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您应该将延迟放在assignpad

之间
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只支持网络类型。

另外,请注意合成会忽略#延迟。 #延迟仅用于模拟。