always @ (posedge sys_clk or negedge rst_n)
if(!rst_n) ge_second<=4'd0;
else if(cnt_1s==25'd25000000) //如果一秒钟到了
begin
ge_second<=ge_second+1'b1; //秒针数加1
if(ge_second==4'd10) //如果秒数为10
ge_second<=0; //秒数清零
end
系统时钟上25M。我认为秒数应该只出现0、1、2、3、4、5、6、6、7、8、9,这几,但是10秒也持续了1s钟,我很奇怪了。
但代码这样写就没有问题了
always @ (posedge sys_clk or negedge rst_n)
if(!rst_n) ge_second<=4'd0;
else if(cnt_1s==25'd25000000) //如果一秒钟到了
begin
if(ge_second==4'd9) //当前已经是第9秒了
ge_second<=0; //秒数清零
else
ge_second<=ge_second+1'b1; //否则秒数加1
end |