module timer( input wire sys_clk , input wire sys_rst_n , output wire [4: 0] hour , output wire [5: 0] min , output wire [5: 0] sec ); parameter MAX = 28'd50_000_000; parameter DAY = 17'd86400; reg [27: 0] cnt_s;//秒计数寄存器 reg [16: 0] cnt_day;//一天多少秒计数寄存器 //秒计数器设计 always @(posedge sys_clk or negedge sys_rst_n) begin if(!sys_rst_n)begin cnt_s <= 28'd0; end else if(cnt_s == MAX - 1'd1)begin cnt_s <= 28'd0; end else begin cnt_s <= cnt_s + 1'd1; end end //天计数器设计 always @(posedge sys_clk or negedge sys_rst_n)begin if(!sys_rst_n)begin cnt_day <= 17'd0; end else if((cnt_day == DAY - 1'd1) && (cnt_s == MAX - 1'd1))begin cnt_day <= 17'd0; end else if(cnt_s == MAX - 1'd1)begin cnt_day <= cnt_day + 1'd1; end else begin cnt_day <= cnt_day; end end assign hour = cnt_day / 3600;//解析小时 assign min = cnt_day % 3600 / 60;//解析分钟 assign sec = cnt_day % 60;//解析秒 endmodule