VHDL中process语句问题

本人是VHDL初学者,最近在编写秒表实验的仿真代码。在这里碰到了一个问题,如下图所示是源代码
(下图是分频代码)

img

(下面是实现时钟的代码)

img

剩下的是用来赋值的进程语句就不贴了。
我仿真的时候输入的是1kHz脉冲,将它分频为了10Hz的脉冲用clk_out来表示

(这个是仿真代码中的周期信号clk(待分频))

img

出现的问题就是 我理解的应该是每100个clk初始脉冲时候,这时clk_out应该改变为1,执行时钟进程语句了,但是我仿真的结果都是每101个脉冲时才改变时钟结果,我改过分频时钟,无论是让cnt为多少时clk_out赋为1,实际仿真都是cnt+1的时候才开始改变时钟,我想问一下出现这种现象的原因是什么

img

img

这两个时前两个分频时钟周期产生的时钟变化,第一个是第101个clk脉冲时发生变化,第二个是第202个clk脉冲发生变化,想问一下什么原因导致的?

因为你设置cnt=0 的时候clk_out变0, cnt=100的时候clk_out变1, 0-100 就是101个周期,0-99才是100个周期。