module top_module(
input clk,
input reset,
input ena,
output pm,
output [7:0] hh,
output [7:0] mm,
output [7:0] ss);
reg [3:0] ssge;
reg [3:0] ssshi;
reg [3:0] mmge;
reg [3:0] mmshi;
reg [3:0] hhge;
reg [3:0] hhshi;
always@(posedge clk)begin //ss个位
if(reset)begin
ssge <= 4'h0;
end
else if(ena & (ssge == 4'h9))
ssge <= 4'h0;
else if(ena)
ssge <= ssge+1;
end
always@(posedge clk)begin //ss十位
if(reset)begin
ssshi <= 4'h0;
end
else if(ena & (ssge == 4'h9)&(ssshi == 4'h5))
ssshi <= 4'h0;
else if(ena & (ssge == 4'h9))
ssshi <= ssshi+1;
end
always@(posedge clk)begin //mm个位
if(reset)begin
mmge <= 4'h0;
end
else if(ena &(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
mmge <= 4'h0;
else if(ena &(ssge == 4'h9)&(ssshi == 4'h5))
mmge <= mmge+1;
end
always@(posedge clk)begin //mm十位
if(reset)begin
mmshi <= 4'h0;
end
else if(ena&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
mmshi <= 4'h0;
else if(ena&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
mmshi <= mmshi+1;
end
always@(posedge clk)begin //hh个位
if(reset)begin
hhge <= 4'h2;
end
else if(ena&(hhshi == 4'h1)&(hhge == 4'h2)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
hhge <= 4'h1;
else if(ena&(hhge == 4'h9)&(mmge == 4'h9)&(mmshi == 4'h5)&(ssge == 4'h9)&(ssshi == 4'h5))
hhge <= 4'h0;
else if(ena&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
hhge <= hhge+1;
end
always@(posedge clk)begin //hh十位
if(reset)begin
hhshi <= 4'h1;
end
else if(ena&(hhshi == 4'h2)&(hhge == 4'h3)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
hhshi <= 4'h0;
else if(ena&(hhshi == 4'h1)&(hhge == 4'h2)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
hhshi <= 4'h0 ;
else if(ena&(hhge == 4'h9)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
hhshi <= hhshi+1;
end
always@(posedge clk)begin //AM PM
if(reset)begin
pm <= 0;
end
else if(ena&pm&(hhshi == 4'h1)&(hhge == 4'h1)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
pm <= 0;
else if(ena&(hhshi == 4'h1)&(hhge == 4'h1)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
pm <= 1;
end
assign ss = {ssshi, ssge};
assign mm = {mmshi, mmge};
assign hh = {hhshi, hhge};
endmodule