2017-03-17 2 views
-1

私はVerilogを初めて使っています。私はdata_inトライステートバッファに遅延を加える方法

アサインパッド=(有効)以下でpadに割り当てる前に遅延を追加したいですか? data_in:1'bz;

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

のようなものが、それは動作しません。それを行う正しい方法は何ですか?

答えて

2

あなたはこの遅延が影響する

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ではネット型と変数型でassignステートメントを使用できますが、Verilogはネット型のみをサポートしています。

また、#の遅延は合成によって無視されることに注意してください。 #遅延はシミュレーションのためだけです。

+0

ありがとうございました!あなたの素早い対応のために@greg。それはとても役に立ちました –

関連する問題