0

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

分配垫=(启用)?数据输入:1'bz;

就像是

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

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

4

1 回答 1

3

你应该把延迟放在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 Continuous assignments中了解有关延迟分配语句的更多信息。注意 SystemVerilog 允许对网络和变量类型进行赋值语句,Verilog 仅支持网络类型。

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

于 2017-03-17T05:35:13.393 回答