建立时间、保持时间与系统最高时钟频率

1、建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。
保持时间:触发器在时钟上升沿到来之后,其数据输出端的数据必须保持不变的最小时间。
【补】建立时间违约怎么办
1)增大时钟周期,降低时钟频率,但这意味着速度下降,一般不会这么处理。
2)重新分配关键路径,将过长的关键路径中的一部分逻辑从关键路径中剥离出来,放到相邻的时序级里,使每一级里面的时序长度相差无几。前提是不破坏系统整体功能,一般使用pipelining。
3)调整优化组合逻辑结构,尽可能减少组合逻辑延迟。
【补】保持时间违约怎么办
保持时间不满足的话,比较难修复,处理方法就是让它晚到达。增加传输时间,通常采用的做法是在传输路径上插入buffer(其实就是两个反相器构成的器件),不影响逻辑功能,只增加延迟。
注:插入buffer还有一个功能,就是当信号线过长的时候,其上的RC会增加,可能导致驱动能力减弱,若通过插入buffer来分割长信号线,用以“分段驱动”。
2、为什么触发器要满足建立时间和保持时间?
因为触发器内部数据的锁存、传递和反馈都是是需要一定的时间的,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在0和1之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。这就是为什么要用两级触发器来同步异步输入信号。这样做可以防止由于异步输入信号对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面逻辑中,导致亚稳态的传播。
(比较容易理解的方式)换个方式理解:需要建立时间是因为触发器D端的数据在被时钟上升沿采集前需要经过引导门,它需要经过两个与非门的延迟时间;需要保持时间是因为在时钟沿到来之后,触发器要通过反馈线来封锁引导门,从后级门传到前级门需要经过一个与非门的延迟时间。
【补】RS触发器D触发器
1)RS触发器由两个与非门交叉偶尔而成。但输入信号R,S都为1时(RS=11),触发器处于Q=1或Q=0某一状态保持不变,所以它是具有两个稳定状态的双稳态触发器。RS触发器是构成各种功能触发器的基本单元,所以称为基本触发器。
2)D触发器由钟控RS触发器、引导门和4根反馈线组成。

3、系统最高速度计算(最快时钟频率)和流水线设计思想:
同步电路的速度是指同步系统时钟的速度,同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间内处理的数据量就愈大。假设Tco是触发器的输入数据被时钟打入到触发器到数据到达触发器输出端的延时时间(Tco=Tsetpup+Thold);Tdelay是组合逻辑的延时;Tsetup是D触发器的建立时间。假设数据已被时钟打入D触发器,那么数据到达第一个触发器的Q输出端需要的延时时间是Tco,经过组合逻辑的延时时间为Tdelay,然后到达第二个触发器的D端,要希望时钟能在第二个触发器再次被稳定地打入触发器,则时钟的延迟必须大于Tco+Tdelay+Tsetup,也就是说最小的时钟周期Tmin =Tco+Tdelay+Tsetup,即最快的时钟频率Fmax =1/Tmin。FPGA开发软件也是通过这种方法来计算系统最高运行速度Fmax。因为Tco和Tsetup是由具体的器件工艺决定的,故设计电路时只能改变组合逻辑的延迟时间Tdelay,所以说缩短触发器间组合逻辑的延时时间是提高同步电路速度的关键所在。由于一般同步电路都大于一级锁存,而要使电路稳定工作,时钟周期必须满足最大延时要求。故只有缩短最长延时路径,才能提高电路的工作频率。可以将较大的组合逻辑分解为较小的N块,通过适当的方法平均分配组合逻辑,然后在中间插入触发器,并和原触发器使用相同的时钟,就可以避免在两个触发器之间出现过大的延时,消除速度瓶颈,这样可以提高电路的工作频率。这就是所谓"流水线"技术的基本设计思想,即原设计速度受限部分用一个时钟周期实现,采用流水线技术插入触发器后,可用N个时钟周期实现,因此系统的工作速度可以加快,吞吐量加大。注意,流水线设计会在原数据通路上加入延时,另外硬件面积也会稍有增加。
参考文章链接:
建立时间和保持时间关系详解 https://www.cnblogs.com/lilto/p/9581143.html
详解FPGA中的建立时间与保持时间 https://www.cnblogs.com/ylsm-kb/p/9129699.html
系统最高时钟频率:https://www.jinchutou.com/p-89355115.html
【建立时间、保持时间与系统最高时钟频率】教你如何计算电路最高工作频率(静态时序分析之setup和hold time计算方法)http://www.52-ic.com/212.html

    推荐阅读