/* 以下の2つのモジュールの違いをよく理解すること */ // 加算演算子による4ビット・カウンタ(非同期リセット) module counter( ck, res, q ); input ck, res; output [3:0] q; reg [3:0] q; always @( posedge ck or posedge res ) begin if ( res ) q <= 4'h0; else q <= q + 4'h1; end endmodule // 加算演算子による4ビット・カウンタ(同期リセット) module counter_sync( ck, res, q ); input ck, res; output [3:0] q; reg [3:0] q; always @( posedge ck ) begin if ( res ) q <= 4'h0; else q <= q + 4'h1; end endmodule