// Copy Right(C) Makoto IKEDA, VDEC University of Tokyo 1998. module Counter(DIO,ck,Reset, PinCtr , CarryOut ); inout [3:0] DIO; input ck, Reset, PinCtr; output CarryOut; reg CarryOut; reg [3:0] D; assign DIO = (PinCtr == 0 ? (D):('bz)); always @(posedge ck) begin if( Reset ) begin CarryOut = 0; D=0; end else if( PinCtr ) begin CarryOut = 0; D = DIO;end else if( D == 15 ) begin CarryOut = 1; D = 0; end else begin D = D + 1; CarryOut = 0; end end endmodule