![]() |
![]() |
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. |