我遇到了一个问题。 我想从另一个模块中的参数中获取一个值,如下所示:
dir=""
答案 0 :(得分: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
答案 1 :(得分:0)
verilog中的参数具有局部范围。它是在其定义的模块的本地。
您可以使用分层表示法从其他模块访问该参数,但根本不建议这样做。
相反,您可以使用verilog中的`define或系统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