-1
我是新來的verilog,因此我有一個非常簡單的問題。我想在下面的語句如何添加延遲到三態緩衝區
分配墊=(啓用)之前
data_in
分配增加延遲pad
? data_in:1'bz;
像
assign pad = (enable) ? #10 data_in : 1'bz;
,但它不會工作。什麼是正確的方法來做到這一點?
我是新來的verilog,因此我有一個非常簡單的問題。我想在下面的語句如何添加延遲到三態緩衝區
分配墊=(啓用)之前
data_in
分配增加延遲pad
? data_in:1'bz;
像
assign pad = (enable) ? #10 data_in : 1'bz;
,但它不會工作。什麼是正確的方法來做到這一點?
你應該之前assign
和pad
之間
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允許在網絡和變量類型上分配語句,Verilog只支持網絡類型。
而且,要知道,#
延遲是由合成忽略。 #
延遲僅用於模擬。
謝謝! @greg爲您的快速響應。這非常有幫助 –