module paobiao(
input clk,
input clr,
input pause,
output reg [3:0]msh,msl,sh,sl,mh,ml
);
reg cn1,cn2;//cn1爲百分秒向秒的進位,cn2爲秒向分的進位
//百分秒進位
always @(posedge clk or negedge clr)begin
if(!clr)begin
{msh,msl}<=8'd0;
cn1<=0;
end
else if(!pause)begin
if(msl==4'd9)begin
msl<=4'd0;
if(msh==4'd9)begin
msh<=4'd0;
cn1<=1'b1;
end
else msh<=msh+1'b1;
end
else begin
msl<=msl+1'b1;
cn1<=1'b0;
end
end
else {msh,msl}<={msh,msl};
end
//秒進位
always @(posedge cn1 or negedge clr)
begin
if(!clr)begin
cn2<=1'b0;
{sh,sl}<=8'b0;
end
else if(sl==9)begin
sl<=4'd0;
if(sh==4'd5)begin
sh<=4'd0;
cn2<=1'b1;
end
else sh<=sh+1'b1;
end
else begin
sl<=sl+1'b1;
cn2<=1'b0;
end
end
//分計數,滿60自動清零
always @(posedge cn2 or negedge clr)begin
if(!clr)begin
{mh,ml}<=8'd0;
end
else if(ml==9)begin
ml<=4'd0;
if(mh==4'd5)
mh<=4'd0;
else mh<=mh+1'b1;
end
else ml<=ml+1'b1;
end
endmodule