假设有一个带有参数的模块 AndGate,其中包含一个参数 WIDTH,用于指定输入和输出信号的宽度:
module AndGate #(parameter WIDTH=1) (
input wire [WIDTH-1:0] A,
input wire [WIDTH-1:0] B,
output reg Y
);
// 逻辑行为
always @(A or B)
Y = A & B;
endmodule
在这个例子中,AndGate 模块有一个参数 WIDTH,默认值是1。输入信号 A、B 和输出信号 Y 的宽度都由这个参数决定。现在,我们可以在实例化时传递不同的宽度值:
module TopModule;
// 顶层模块的输入
reg [3:0] input_a;
reg [3:0] input_b;
// 顶层模块的输出
wire [3:0] output_y;
// 实例化 AndGate 模块,设置宽度为4
AndGate #(4) andGateInstance1 (
.A(input_a),
.B(input_b),
.Y(output_y)
);
// 在这里连接输入输出信号,或者添加其他逻辑
endmodule
在这个例子中,我们实例化了一个 AndGate 模块,并通过 #(4) 设置了参数 WIDTH 的值为4。这样,AndGate 模块的输入和输出信号的宽度就会根据这个参数值进行配置。
通过使用参数,可以方便地调整模块的特性,使得模块更加通用和灵活。
转载请注明出处:http://www.pingtaimeng.com/article/detail/15104/Verilog