fpga实现了呼吸灯功能 但存在灯闪烁现象

用的zynq7020的板子 代码功能正常 但是一直会时不时闪烁 后面增加了一个寄存器存储灯还是存在该现象 这个是什么原因呢?

代码如下 板子频率125mhz
`timescale 1ns / 1ps
module breath_led(
input sysclk ,
input rst_n ,
output led
);
reg [31:0] cnt_ms ;
reg [31:0] cnt_us ;
reg [31:0] cnt_ns ;
reg cnt_s ;
reg led_green;
always@(posedge sysclk)
if(!rst_n)
begin
cnt_s <= 1'd0;
cnt_ms <= 32'd0;
cnt_us <= 32'd0;
cnt_ns <= 32'd0;
end
else if(cnt_ms >= 998 && cnt_us >= 998 && cnt_ns >= 249)//计数秒
begin
cnt_s <= ~cnt_s;
cnt_ms <= 32'd0;
cnt_us <= 32'd0;
cnt_ns <= 32'd0;
end
else if(cnt_us >= 998 && cnt_ns >= 249)//计数毫秒
begin
cnt_s <= cnt_s;
cnt_ms <= cnt_ms + 32'd1;
cnt_us <= 32'd0;
cnt_ns <= 32'd0;
end
else if(cnt_ns >= 249)//计数微秒
begin
cnt_s <= cnt_s;
cnt_ms <= cnt_ms;
cnt_us <= cnt_us + 32'd1;
cnt_ns <= 32'd0;
end
else //计数纳秒
begin
cnt_s <= cnt_s;
cnt_ms <= cnt_ms;
cnt_us <= cnt_us;
cnt_ns <= cnt_ns + 32'd1;
end

always@(posedge sysclk)
if(!rst_n)
led_green <= 1'd1;
else if(cnt_us <= cnt_ms && cnt_s == 1'd0)
led_green <= 1'd1;
else if(cnt_us >= cnt_ms && cnt_s == 1'd1)
led_green <= 1'd1;
else
led_green <= 1'd0;
assign led = led_green;

endmodule

代码看不出问题,怀疑是板子硬件方面可能有问题。
从代码上看 rst_n = 0 时,LED 会亮一下。需要你去检查板子的复位 rst_n 信号是不是稳定。