ためになるホームページ お問い合わせ




TOP > Verilog > 下位モジュール
下位モジュールのインスタンス生成
下位モジュールのインスタンス生成は、
モジュール名 インスタンス名(ポートリスト);
となる。あるモジュール内で下位モジュールを生成する際に一つの時は、「モジュール名=インスタンス名」でも構わないが、複数のサブモジュールのインスタンスを生成する時は、 別々に名前をつけてあげる必要がある。

ポートの接続
ポートの接続は、順番による接続と名前による接続がある。
順番による接続は、下位モジュールの宣言と同じ順番に接続する。名前による接続は、
.接続先のポート名(接続信号),

下位モジュールの呼び出しと接続の例
/////////////////////////////////////////////////////////////////////////////////
//TESTBENCH
//  テストベンチ
/////////////////////////////////////////////////////////////////////////////////
module TESTBENCH;

reg [3:0] INA;
reg CLK;
wire [3:0] XOUT;

// 1周期1000ユニットに設定
parameter STEP = 10;

// クロックの定義
always #(STEP/2) CLK = ~CLK;

DFF4 DFF4(CLK, INA, XOUT);

initial begin
   $dumpfile("test.vcd");
   $dumpvars(0, TESTBENCH);
   $monitor ("%t: INA = %b, XOUT = %b", $time, INA, XOUT);
          CLK = 0;
          INA = 0;
   #STEP  INA = 1;
   #STEP  INA = 2;
   #STEP  INA = 5;
   #STEP  INA = 4'hF;
   #STEP  INA = 4'hF;
   #STEP;
   $finish;
end

endmodule




////////////////////////////////////////////////////////////////////////////////
//親モジュール
////////////////////////////////////////////////////////////////////////////////
module DFF4(CLK, INA, XOUT);
input CLK;
input [3:0] INA;
output [3:0] XOUT;

//順番に接続
DFF DFF_0(CLK, INA[0], XOUT[0]);
DFF DFF_1(CLK, INA[1], XOUT[1]);

//名前による接続
DFF DFF_2(
.CLK(CLK), 
.INA(INA[2]),
.XOUT(XOUT[2])
);

DFF DFF_3(
.CLK(CLK), 
.INA(INA[3]),
.XOUT(XOUT[])
);


endmodule


///////////////////////////////////////////////////////////////////////////////
//下位モジュール
///////////////////////////////////////////////////////////////////////////////
module DFF(CLK, INA, XOUT);
input CLK;
input INA;
output XOUT;
reg XOUT;

always@(posedge CLK)
begin
  XOUT <= INA;
end

endmodule






Copyright 2007 ためになるホームページ All Rights Reserved.