当CLK=0(主锁存器工作)时,位于前级的主锁存器将输入D的值保存进来,后级的从锁存器则维持上一时钟周期的数据。
由于此时前级和后级反相器环路之间的传输门是关闭状态,所以前级的信号不会传送到后级。
当CLK=1(从锁存器工作)时,前级反相器环路中保存的数据会传输到后级,同时输入D的信号会被隔离在外。
此时如果前级反相器环路中的信号没有循环一圈以上,就会出现在0和1之间摇摆的中间电位,这就是所谓的亚稳态(metastab)。
由于亚稳态时间比延迟时间长,在该阶段读取数据可能会引入错误,所以我们引入建立时间(setup time)来约束在时钟上升沿到来前输入D保持稳定的时间。
(感觉原文对这里的描述有错误,前文中说“如果前级反相器环路中的信号没有循环一圈以上”,也就是说它要循环一圈以上,而循环一圈的条件是CLK=1,也就说要CLK=1并让其循环一圈以上才不会出现亚稳态,而后文又说”引入建立时间来约束在时钟上升沿到来前输入D保持稳定的时间“,即让CLK=0并保持建立时间的时长,这前后矛盾了吧?)
当CLK=1时,如果输入D在传输们关闭前就发生变化,那么本该在下一周期读取的数据就会提前进入锁存器,从而引起反相器环路振荡或产生亚稳态。
因此在CLK=1之后也需要输入D维持一定的时间,我们称之为保持时间(hold time)约束。