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