在 Verilog 中的模块之间传递参数
Passing parameters between modules in Verilog
我正在尝试学习如何在 Verilog 中传递参数。到目前为止,我了解到声明如下所示:
module funct #(parameter n = 32)
(input clk, input [n-1:0]in, input reset, input L,
input load, input shift, output reg[n-1:0] out);
我在该模块中实例化了另一个依赖于该参数的模块,因此我也在那里定义了该参数。
module funct2 #(parameter n = 32) (
input clk,
input [n-1:0] in,
input rst,
input L,
output [n-1:0] out
);
我的问题是如何在 funct
内调用 funct2
?
我还想知道如何在 testbench 文件夹中实例化 funct
。没有 parameter
,它看起来像这样
funct uut(.clk(clk),.in(in), .reset(reset),.L(L), .load(load), .shift(shift), .out(out));
以下语法用于在 funct
中实例化 funct2
,将 parameter
传递到模块中:
funct2 #(.n(n)) i1 (.clk(clk), .in(in), .rst(reset), .L(L), .out(out));
参考 IEEE Std 1800-2017,第 23.3.2 节模块实例化语法。
正如您所发现的那样,您用于在测试平台内实例化 funct
的语法是有效的。本例中使用默认值 32。或者,您可以使用 #(.n(n))
语法来明确表明您正在传递参数。
我正在尝试学习如何在 Verilog 中传递参数。到目前为止,我了解到声明如下所示:
module funct #(parameter n = 32)
(input clk, input [n-1:0]in, input reset, input L,
input load, input shift, output reg[n-1:0] out);
我在该模块中实例化了另一个依赖于该参数的模块,因此我也在那里定义了该参数。
module funct2 #(parameter n = 32) (
input clk,
input [n-1:0] in,
input rst,
input L,
output [n-1:0] out
);
我的问题是如何在 funct
内调用 funct2
?
我还想知道如何在 testbench 文件夹中实例化 funct
。没有 parameter
,它看起来像这样
funct uut(.clk(clk),.in(in), .reset(reset),.L(L), .load(load), .shift(shift), .out(out));
以下语法用于在 funct
中实例化 funct2
,将 parameter
传递到模块中:
funct2 #(.n(n)) i1 (.clk(clk), .in(in), .rst(reset), .L(L), .out(out));
参考 IEEE Std 1800-2017,第 23.3.2 节模块实例化语法。
正如您所发现的那样,您用于在测试平台内实例化 funct
的语法是有效的。本例中使用默认值 32。或者,您可以使用 #(.n(n))
语法来明确表明您正在传递参数。