2017-01-16 6 views
0

問題が発生しました。 私はこのような他のモジュール内のパラメータから値を取得したい:のverilogでVerilog ams:別のモジュールのパラメータの値を取得

module FS0b (in2,in2,out1); 
    input in1,in2; 
    output out1;  
    parameter real res=10000; 
endmodule 

module FS1b (in1,in2,out1); 
    input in1,in2; 
    output out1; 

    wreal in1; 
    wreal in2; 
    wreal out1; 

    out1=res- in1+in2; 
endmodule 
+1

Welcome to Stackoverflow!サイトを最大限に活用するには、良い質問をすることが重要です。質問をするためのガイドはhttp://stackoverflow.com/help/how-to-askにあります。 –

答えて

1

verilogパラメータがインスタンスに適用されます。したがって、インスタンスからパラメータを呼び出す必要があります。

ここにあなたの最初のモジュールが

module FS0b (in2,in2,out1); 
    input in1,in2; 
    output out1; 

    parameter real res=10000; 

endmodule 

はのは、第二のモジュールに

module FS1b (in1,in2,out1); 

parameter real res=10000; 
    input in1,in2; 
    output out1; 

    wreal in1; 
    wreal in2; 
    wreal out1; 


    assign out1=res- in1+in2; 

endmodule 

をダミーパラメータを追加して

module Topmodule(...); 

    FS0b fs0b{...}; 

    defparam 
    fs1b.res = fs0b.res; 
    FS1b fs1b{...}; 

endmodule 

トップモジュールでこれらのインスタンスを作成してみましょう。しかし、より良いアプリケーションは次のようになりますトップモジュールにパラメータを定義し、それを階層に適用します。

module Topmodule(...); 
    parameter real res=10000; 

    defparam 
    fs0b.res = res; 
    FS0b fs0b{...}; 


    defparam 
    fs1b.res = res; 
    FS1b fs1b{...}; 

endmodule 
0

パラメータは、ローカルスコープを持っています。

階層的表記を使用して他のモジュールからパラメータにアクセスすることはできますが、これはすべてではありません。

代わりに `define in verilogまたはシステムのVerilogのパッケージを使用してグローバルにすることができます。

module FS0b (in1,in2,out1); 
    input in1,in2; 
    output out1 
    parameter real res=10000; 
endmodule 

module FS1b (in1,in2,out1); 
    input in1,in2; 
    output out1; 
    wire in1; 
    wire in2; 
    wire out1; 
    assign out1= FS0b.res - in1+in2; 
endmodule 
関連する問題