我自己教自己VHDL,并从Frank Vahid的数字设计(第2版)开始接受this answer's建议。
在第254页(link)他解释说,存储项的更新发生在下一个上升时钟边沿,因此,在状态的时钟周期结束时。这在图5.14中使用“Jreg”存储项解释,我理解的行为。
我不明白,存储项“P”的行为有何不同:
1)在进入状态S0时已知其值(而“Jreg”不是)
2)在转换到状态S1时,“P”立即更新为状态S1给出的值,而“Jreg”直到该时钟周期结束才更新
我不知道“Jreg”和“P”之间有区别吗?这个例子中是错误吗?
答案 0 :(得分:0)
看起来P是组合信号(不依赖于时钟),Jreg是顺序寄存器(取决于时钟)。 Jreg似乎表现为计数器(需要某种时钟或驱动信号)。例子说机器等待输入信号B变高,一旦输入信号B变高,它就将输出P设置为高电平。然后,使用Jreg计算自B变为高电平后经过的时钟周期数,它将P保持为高电平,直到Jreg计数到一定数量的时钟周期(2),此时Jreg和P都复位为0。
1)Jreg在开始时是未知的,很可能是P,但P不必等待时钟滴答,因为它是一个组合信号。
2)Jreg再次顺序,所以它必须等待时钟滴答才能改变其状态。