计数器对门控时钟沿计数,清零位置移动

计数器对门控时钟沿计数,清零位置移动?高云fpga
代码
clk是有8个上升沿的10M门控始终,
wire rst = 1;
reg cnt = 0;
always@(posedge clk or negedge rst )
begin
if(~rst)
cnt <= 0;
else if (cnt<7) //(cnt<8)
cnt <= cnt +1;
else cnt <= 0;
end

img


①是8个时钟沿,红的是后面又加了一个
②是cnt<7,8个时钟沿,在线看的执行结果,在第八沿清零
③是cnt<8,9个时钟沿,在线看的结果,不是在第九沿清零,导致数据错乱。

想要的结果是在第九沿清零。有大神知道这是为啥吗?

reg cnt = 0;
这个错了吧,cnt 只有 1位,不能计数 8 次
应该这么改
reg[3:0] cnt = 0;