我们在电路前仿真波形图中可以看到,信号的变化和接收几乎是同时的,事实上,在现实生活当中,由于物理限制,是会存在延迟的,一定是先接收到信号,才能做出反应。那么基于物理限制的原因,在设计当中我们需要考虑到时序的关系,这是时序逻辑当中最重要的问题:建立时间tsu,保持时间thold,tcycle时钟周期,Tdata组合逻辑延迟(文章也有部分写作Tcomb)。
目录
以D触发器为例:
建立时间tsu:
tsu(setup time)建立时间是在时钟有效边沿到来之前,触发器的输入数据需要保持稳定的时间,如果实际稳定时间达不到建立时间需求,就会导致触发器采样失败,输入数据无法进入到触发器内部,可能会导致亚稳态,竞争冒险,毛刺现象等问题。
如图所示是建立时间约束,由于数据传输一定要保持在数据采样前,因此不等式关系是小于等于。根据这个不等式关系我们可以推导其中变量的极大值和极小值(基本的数学关系),我们可以推导时钟周期的最小值,根据周期最小值也可以推导最大频率,Tclk≥Tcq+Tcomb+Tsu-Tskew,我们就可以得到Tclk_min=Tcq+Tcomb+Tsu-Tskew。
Tcq:clk信号的输出延迟
Tcomb:组合逻辑延迟
Tskew:时钟偏移
Tclk:时钟周期
保持时间thold:
thold(hold time)保持时间是在系统时钟有效时钟沿到来之后,输入触发器的数据需要保持稳定的最短时间。以上升沿采样为例,由于物理限制,实际的上升沿并不是在一瞬间完成的,是需要一定时间才能做到从低电平到高电平的,因此保持时间也可以理解为上升沿采样时,输入数据需要进一步稳定的时间,以此保证采样到正确的数据。
保持时间的推导思路是,我们需要让数据传输成功,因此不能在需求时间结束之前就完成数据传送,Tre是通过下方绿色path得到的时钟要求,Tend是上蓝色的path传输数据的实际时间,两条路径所需时间做差,即可得到时间裕量,要使得这个裕量不为负数。
Tskew=Tclk2-Tclk1:时钟偏斜,是指的同一个时钟信号到达各个寄存器时钟端口的时间不一致的现象
Tcycle:时钟周期
Tclk1,Tclk2:时钟信号到达DFF1,DFF2所需的延迟
Thold≤Tcq+Tcomb-Tskew
Thold_max = Tcq+Tcomb-Tskew
根据上方的不等式推理,可以得到时间裕量Tslack和时钟周期Tcycle是没有关系的。
总结
数据如果传输速度太慢,会导致建立时间违例
数据如果传输速度太快,会导致保持时间违例
建立时间和保持时间是时序逻辑的根本,通过Tsu和Thold可以定义一个触发器的采样窗口,在采样区间内保持数据稳定,以此避免亚稳态的情况。