divclk1hz dc(reset,clk50,clk1); always@(posedge clk1,posedge key) begin if(key) begin hour=0; minutes=0; seconds=0; out5=hour/10; out4=hour%10; out3=minutes/10; out2=minutes%10; out1=seconds/10; out0=seconds%10; end else begin if(seconds<59) seconds=seconds+1; else begin if(seconds==59) begin seconds=0; if(minutes<59) minutes=minutes+1; else begin if(minutes==59) begin minutes=0; if(hour<23) hour=hour+1; else begin if(hour==23) hour=0; end end end end end out5=hour/10; out4=hour%10; out3=minutes/10; out2=minutes%10; out1=seconds/10; out0=seconds%10; end end
module divclk1hz(reset,clk50,clk1); input clk50,reset; outputreg clk1=1; integer i=0; always@(posedge clk50) begin if(!reset) begin i=1; end else begin if(i==25000000) begin i=1; clk1=~clk1; end else i=i+1; end end endmodule