2017-03-17 56 views
-1

我是新來的verilog,因此我有一個非常簡單的問題。我想在下面的語句如何添加延遲到三態緩衝區

分配墊=(啓用)之前data_in分配增加延遲pad? data_in:1'bz;

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

,但它不會工作。什麼是正確的方法來做到這一點?

回答

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允許在網絡和變量類型上分配語句,Verilog只支持網絡類型。

而且,要知道,#延遲是由合成忽略。 #延遲僅用於模擬。

+0

謝謝! @greg爲您的快速響應。這非常有幫助 –