在数字设计中寄存器对输入信号有着一定的要求,主要是在两个方面上,一个是建立时间(Setup Timing),另外一个是保持时间(Hold Timing),最小建立时间是指在寄存器对信号进行采样之前信号已经提前完成变化,并保持不变;保持时间是指,寄存器在对其进行采样的时候,信号必须在这个时间内保持不变;要想寄存器成功对信号进行采样,信号在那段时间内就必须同时满足那两个条件,
图中寄存器为时钟上升沿触发,当上升沿到来后,寄存器将a端的信号进行采样后在b端进行输出,再经过逻辑组合电路到达B寄存器的c端入口,这之间信号a变成c时要经历寄存器A的反应时间,组合逻辑的延时,还有金属连线的延时,才能变成c信号供B寄存器采样。这些延时必须在下一个时钟对B寄存器进行动作之前完成,还必须预留足够的建立时间,否则寄存器B无法读取出有效的c信号,信号在每一个时钟周期内都获得正确的信号,也称作时许收敛。
在一些时钟较快、逻辑较多、面积受限的数字设计中,建立时间往往难以满足;也就是说组合逻辑的层数太多会使得输出信号c的建立时间不满足要求,在一些快速数字电路中,时钟周期短越短,供组合逻辑传播的时间就越短,在规模大,功能复杂度高的电路中,组合逻辑往往越多,在面对速度和复杂度的双重要求下,除了在制造工艺上缩短每个器件的延迟,在设计路线上一般有两个方法来满足建立时间的需求。一个是放宽对面积的要求,让后端布线工具能够在更大范围内寻找到更短的路径进行布线,从而缩短走线延迟。另外一个方面是在设计优化上,使用流水线设计(Pipeline)
假设上图中组合逻辑的延时是9ns,A寄存器的反应时间是1ns,走线延迟为0.5ns,建立时间要求为1.4ns,在一个10ns的时钟周期里,信号a变成c需要的时间是9ns+1ns+0.5ns=10.5ns,但是最长到达时间是10ns-1.4ns=8.6ns,传达时间10.5ns并不在8.6ns内,故不能满足建立时间,这可能会导致输出信号d处于亚稳态的状态。
如上图所示,在过长的组合逻辑中插入寄存器,对组合逻辑进行切割,减少上一级寄存器到下一级之间的时间,如图中A寄存器到C寄存器的时间为1+3+0.5=4.5ns(假设一个逻辑门延迟为9ns),再加上建立时间1.4ns,两个寄存器之间的信号传输只需要缩短到5.9ns,整个电路的最少时间周期就可以减少到5.9ns,随之而来的是整个电路的频率上升。
本质上来说,流水线插入,就是每过一部分组合逻辑,就把数据存入寄存器里,以避免组合逻辑反应时间太长,在时钟周期内不满足下一级寄存器的建立时间和保持时间
标签:逻辑,时间,学习,设计,信号,寄存器,流水线,ns,时钟 From: https://www.cnblogs.com/fchadventurer/p/18050807