module bcd_counter(ONES,TENS,HUNDREDS,THOUSANDS,_HAULT,CLK); input CLK; input _HAULT; // hault counting when low output [3:0] ONES, TENS, HUNDREDS, THOUSANDS; // decimal digits reg [3:0] ONES, TENS, HUNDREDS, THOUSANDS; always @ (posedge CLK) if (_HAULT==0) begin ONES <= ONES; TENS <= TENS; HUNDREDS <= HUNDREDS; THOUSANDS <= THOUSANDS; end else begin // generate digits and display them on 7-segment displays ONES <= ONES + 1; if (ONES==9) begin ONES <= 0; TENS <= TENS + 1; end if (TENS == 9 && ONES==9) begin TENS <= 0; HUNDREDS <= HUNDREDS + 1; end if (HUNDREDS == 9 && TENS==9 && ONES==9) begin HUNDREDS <= 0; THOUSANDS <= THOUSANDS + 1; end end endmodule