2016-05-17 3 views
0

は、それがシステムのverilogでalways_combブロック内のモジュールをインスタンス化することができますか?は、それがシステムのverilogでalways_combブロック内のモジュールをインスタンス化することができますか?

always_comb 
begin 
    OR OR1 (.Y(A), .A(Z), 
end 
+1

あなたは本当に、条件付きのハードウェアを使用して、あなたのモジュールは、タスクまたは関数に変換し、条件付きで、それを呼び出すようにしたい場合。ハードウェアリソースは増加しますが、要件を満たします。 –

+2

あなたはこのTODOしようとするだけではなく、それをインスタンス化し、特定の理由がありますか? – Morgan

答えて

5

まず、コードは不完全です。もちろん、二入力ORゲートは、3つの接続が必要です。 Verilogで

、あなたはモジュールインスタンス化され、それはあなたがボードに余分ハードウェアを追加していることを意味します。

シミュレーション(すなわち、コンパイル時)を開始する前に、このハードウェアを添加しなければなりません。ここでは、クロックパルスごとにハードウェアを追加/削除することはできません。

一度インスタンス化されると、モジュールはシミュレーションのの各タイムスタンプが最後まで実行/チェックされます。

したがって、任意のモジュールを実行するためにそれをインスタンス化、それに必要な入力を提供する(および必要であれば常に、サブモジュール自体にブロックを追加)。 インスタンス化

// Directly use ORing 
always_comb begin 
    A = Z | M; 
end 

詳しい情報はVerilog Module InstantiationInstantiating Modules and PrimitivesStructural Modellingのリンクから入手することができます。

// Simply instantiate module 
OR OR1 (.Y(A), .A(Z), .B(M)); 

いずれかの方法では、現在のモジュール自体に組み合わせブロックを追加することができます。

関連する問題