module top_module(
input clk,
input reset,
input ena,
output pm,
output [7:0] hh,
output [7:0] mm,
output [7:0] ss);
always@(posedge clk)
begin
if(reset)
begin
hh <= 8'h12;
mm <= 8'h00;
ss <= 8'h00;
//pm <= 0;
end
else if((hh == 8'h12) && (mm == 8'h59) && (ss == 8'h59) && ena)
begin
hh <= 8'h01;
mm <= 8'h00;
ss <= 8'h00;
end
else if((hh[3:0] == 4'h9) && (mm == 8'h59) && (ss == 8'h59) && ena)
begin
hh[7:4] <= 1;
hh[3:0] <= 0;
mm <= 0;
ss <= 0;
end
else if((mm[7:4] == 4'h5) && (mm[3:0] == 4'h9) &&(ss == 8'h59) && ena)
begin
mm[7:4] <= 0;
mm[3:0] <= 0;
ss <= 0;
hh[3:0] <= hh[3:0] + 1;
end
else if((mm[3:0] == 4'h9) && (ss == 8'h59) && ena)
begin
mm[3:0] <= 0;
ss <= 0;
mm[7:4] <= mm[7:4] + 1;
end
else if((ss == 8'h59) && ena)
begin
ss <= 8'h00;
mm[3:0] <= mm[3:0] + 1;
end
else if((ss[3:0] == 4'h9) && ena)
begin
ss[3:0] <= 0;
ss[7:4] <= ss[7:4] + 1;
end
else if(ena)
ss[3:0] <= ss[3:0] + 1'b1;
else
ss <= ss;
end
always@(posedge clk)
begin
if(reset)
begin
pm <= 0;
end
else if((hh == 8'h11) && (mm == 8'h59) && (ss == 8'h59) && ena)
begin
pm <= ~pm;
end
else
pm <= pm;
end
endmodule
时钟计数器(HDLbits)
于 2024-06-20 13:19:44 首次发布