如何在Verilog中使用一个模块实例化两个模块?

时间:2013-09-19 06:03:06

标签: verilog

如何通过第三个模块实例化两个不同模块的副本?

module instantiate (modx, mody);
  // ?  
endmodule

1 个答案:

答案 0 :(得分:0)

只是实例化它们。 add使用add_0 add_1的块名称实例化两次。对于不同的模块,只需将它们实例化为testharness中的主要块。

module add(
  input      [31:0] i, //32 bit unsigned
  input      [31:0] j, //32 bit unsigned 
  output reg [31:0] y  //32 bit unsigned
); 

  always @* begin
    y = i + j;
  end

endmodule

module instantiate (modx, mody);
  reg [31:0] a; //reg or wire depending on how it is driven
  reg [31:0] b;
  reg [31:0] c;
  reg [31:0] d;

  wire [31:0] sum1; //wire or logic as driven from an output port
  wire [31:0] sum2;

  add add_0(
    .i( a    ),
    .j( b    ),
    .y( sum1 )
  );

  add add_1(
    .i( c    ),
    .j( d    ),
    .y( sum2 )
  );

endmodule