如何解决在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
);
我的问题是如何在funct2
中调用funct
?
我还想知道如何在testbench文件夹中实例化funct
。没有parameter
,它看起来像这样
funct uut(.clk(clk),.in(in),.reset(reset),.L(L),.load(load),.shift(shift),.out(out));
解决方法
以下语法用于实例化funct2
中的funct
,并将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))
语法来明确显示您正在传递参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。