モジュールの接続

モジュールと他のモジュールと接続すためには、モジュール内(moduleとendmoduleの間)に以下のように記述します。

モジュール名 インスタンス名 (
  .ポート名(信号名),
  .ポート名(信号名),
...
  .ポート名(信号名)
);

以下のように接続することで、parameterの変更も行うことができます。

モジュール名 #(
  .パラメータ名(値),
  .パラメータ名(値),
...
  .パラメータ名(値)
) インスタンス名 (
  .ポート名(信号名),
  .ポート名(信号名),
...
  .ポート名(信号名)
);

モジュールへ接続することができる信号の種類は以下の通りです。

  • 入力はreg、wireともに接続することができる。
  • 出力はwireのみ接続することができる。

下はモジュール接続の例です。

module SuperModule();
// counterへ接続する信号の宣言
reg [1: 0] in;
reg clock, reset;
wire [1: 0] out;
...

Counter counter (
  // ポートの接続
  .out(out),
  .in(in),
  .rst(reset),
  .clk(clock)
);
endmodule

module SuperModule2001();
// counterへ接続する信号の宣言
reg [1: 0] in;
reg clock, reset;
wire [1: 0] out;
...
Counter2001 #(
  // パラメータの上書き
  .WIDTH_COUNTER(8
)
) counter_2001 (
  // ポートの接続
  .out(out), .in(in), .rst(reset), .clk(clock)
);
endmodule