構造記述による階層化
同期設計されたデジタル回路はすべてムーアマシンに帰着するといったが、大規模回路を1モジュールで記述すると扱いにくいので、実際の設計では階層化して複数の下位モジュールに分割する。
この図をVerilogで書くと次のようになる。このような表現を構造記述といい前項までの表現は動作記述という。
/* top.v -上位モジュール */ module top (input clk ,input rst ,input[N:0] d_in // input,output変数は ,output[N:0] d_out // wire変数と見なされる );
wire[N:0] d_wire; // 下位モジュール間の信号線は // wire変数を使う
block block1 // blockを呼びだして (.clk(clk) // block1という名前にする ,.rst(rst) ,.d_in(d_in) // .ピン名(信号名)と書く ,.d_out(d_wire) );
block block2 // blockを呼びだして (.clk(clk) // block2という名前にする ,.rst(rst) ,.d_in(d_wire) ,.d_out(d_out) );
endmodule |
/* block.v - 下位モジュール */ module block (input clk ,input rst ,input[N:0] d_in ,output[N:0] d_out ); ... (動作記述) ... endmodule |