以下是一个带有参数的模块 ParameterizedModule 的例子:
module ParameterizedModule #(parameter WIDTH = 8) (
input wire [WIDTH-1:0] data_in,
output wire [WIDTH-1:0] data_out
);
// 参数化的逻辑
assign data_out = data_in << 1;
endmodule
在这个例子中,ParameterizedModule 模块具有一个参数 WIDTH,该参数指定了输入和输出信号的位宽。该模块将输入信号左移一位,并将结果输出。
在另一个模块中,可以通过带参数的方式实例化 ParameterizedModule:
module TopModule;
// 输入信号
reg [7:0] input_data;
// 输出信号
wire [7:0] output_data;
// 带参数实例化 ParameterizedModule 模块
ParameterizedModule #(8) param_module (
.data_in(input_data),
.data_out(output_data)
);
// 在仿真中对输入进行赋值
endmodule
在这个例子中,TopModule 模块通过 ParameterizedModule #(8) 的方式实例化了 ParameterizedModule 模块,并将 input_data 信号连接到 data_in 端口,将 output_data 信号连接到 data_out 端口。通过指定 WIDTH 参数为 8,实现了对 ParameterizedModule 模块的参数化实例化。
这样的参数化实例化使得模块可以更灵活地适应不同的设计需求,提高了代码的可重用性。
转载请注明出处:http://www.zyzy.cn/article/detail/11034/Verilog