﻿/*
  以下の2つのモジュールの違いをよく理解すること
*/

// 加算演算子による４ビット・カウンタ（非同期リセット）

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


// 加算演算子による４ビット・カウンタ（同期リセット）

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
