我是verilog的新手,因此我有一个非常简单的问题。我想在以下语句中data_in
分配之前添加延迟pad
分配垫=(启用)?数据输入:1'bz;
就像是
assign pad = (enable) ? #10 data_in : 1'bz;
但它不会工作。这样做的正确方法是什么?
我是verilog的新手,因此我有一个非常简单的问题。我想在以下语句中data_in
分配之前添加延迟pad
分配垫=(启用)?数据输入: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 Continuous assignments中了解有关延迟分配语句的更多信息。注意 SystemVerilog 允许对网络和变量类型进行赋值语句,Verilog 仅支持网络类型。
此外,请注意#
延迟会被综合忽略。#
延迟仅用于模拟。