如何为三态缓冲器添加延迟
How to add delay to Tri-state Buffer
我是 verilog 的新手,所以我的问题很简单。我想在 data_in
分配给以下语句 pad
之前添加延迟
assign pad = (enable) ? data_in : 1'bz;
类似于
assign pad = (enable) ? #10 data_in : 1'bz;
但这行不通。正确的方法是什么?
你应该把延迟放在 assign
和 pad
之间
assign #10 pad = (enable) ? data_in : 1'bz;
此延迟将影响 data_in 和切换到高阻。
您可以分别控制上升、失败和关闭时间。例如:
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 允许对网络和变量类型赋值语句,Verilog 只支持网络类型。
另外,请注意 #
延迟会被综合忽略。 #
延迟仅用于模拟。
我是 verilog 的新手,所以我的问题很简单。我想在 data_in
分配给以下语句 pad
之前添加延迟
assign pad = (enable) ? data_in : 1'bz;
类似于
assign pad = (enable) ? #10 data_in : 1'bz;
但这行不通。正确的方法是什么?
你应该把延迟放在 assign
和 pad
assign #10 pad = (enable) ? data_in : 1'bz;
此延迟将影响 data_in 和切换到高阻。
您可以分别控制上升、失败和关闭时间。例如:
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 允许对网络和变量类型赋值语句,Verilog 只支持网络类型。
另外,请注意 #
延迟会被综合忽略。 #
延迟仅用于模拟。