如何向Tri-state Buffer添加延迟

问题描述 投票:-1回答:1

我是verilog的新手,因此我有一个非常简单的问题。我想在data_in在以下声明中分配给pad之前添加延迟

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

就像是

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

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

verilog delay assign bidirectional inout
1个回答
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只支持net类型。

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

© www.soinside.com 2019 - 2024. All rights reserved.