2017-01-16 129 views
0

我遇到了问题。 我想在这样的另一个模块从参数的值: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

欢迎来到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

参数的Verilog具有局部范围。它位于其定义的模块的本地。

您可以使用分层符号访问其他模块的参数,但是根本不建议这样做。

相反,您可以使用verilog中的define或系统verilog中的package来使其成为全局的。

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 
相关问题