时序的基本概念
建立和保持时间
建立时间(Tsu)是指在时钟上升沿到来之前数据必须保持稳定的时间,保持时间(Th)是指在时钟上升沿到来以后数据必须保持稳定的时间。一个数据需要在时钟的上升沿被锁存,那么这个数据就必须在这个时钟上升沿的建立时间和保持时间内保持稳定。建立时间与保持时间的示意图如图3-1所示。
图3-1建立时间和保持时间示意图
在FPGA设计的同一个模块中常常同时包含组合逻辑与时序逻辑,为了保证在这些逻辑的接口处数据能得到稳定的处理,对建立时间与保持时间建立起清晰的概念非常重要。
同步系统中时序分析图3-2为采用一个时钟的同步设计中一个基本的模型。图中Tco是触发器数据输出的延时,Tdelay是组合逻辑的延时,Tsetup是触发器的建立时间,Tpd为时钟的延时。如果第一个触发器D1建立时间最大为T1max,最小为T1min,组合逻辑的延时最大为T2max,最小为T2min,问第二个触发器D2的建立时间T3与保持时间T4应该满足什么条件,或者是在知道了T3与T4的情况下能容许的最大时钟周期是多少?
图3-2同步系统中的基本模型
这个问题是在设计中必须考虑的问题,只有弄清了这个问题才能保证所设计的组合逻辑的延时是否满足了要求。
下面通过时序图来分析。设第一个触发器的输入为D1,输出为Q1,第二个触发器的输入为D2,输出为Q2。
时钟统一在上升沿进行采样,为了便于分析我们假设时钟的延时Tpd为零,其实这种情况在FPGA设计中是常常出现的,由于在FPGA设计中一般采用统一的系统时钟,也就是利用从全局时钟引脚输入的时钟,这样内部时钟的延时完全可以忽略不计。这种情况下不必考虑保持时间,因为每个数据都是保持一个时钟节拍同时又有线路的延时,也就是都满足CLOCK的延迟远小于数据的延迟的情况,所以保持时间都能满足要求,重点是要关心建立时间,此时如果D2的建立时间满足要求那么时序图应该如图3-3所示。
图3-3满足建立时间要求的时序图
从图中可以看出,如果T-Tco-Tdelay>T3,即:Tdelay<T-Tco-T3,那么就满足了建立时间的要求,其中T为时钟的周期,这种情况下第二个触发器就能在第二个时钟的上升沿稳定地采到D2。
如果组合逻辑的延时过大使得T-Tco-Tdelay不满足要求建立时间的要求,则第二个触发器在第二个时钟的上升沿采到的数据将是一个不定态,如图3-4所示,那么电路将不能正常地工作。
图3-4不满足加建立时间要求的时序图
从而可以推出T-Tco-T2max>=T3,这也就是要求的D2的建立时间。
从上面的时序图中也可以看出,D2的建立时间与保持时间与D1的建立与保持时间是没有关系的,而只和D2前面的组合逻辑和D1的数据传输延时有关。
通过前面的分析,我们知道T>Tco+Tdelay+Tsu,假设Tco为2ns,Tdelay为3ns,Tsu为2ns,则T>2+3+2=7ns,频率f=1/T<143MHz。
由此可知,要想提高系统工作频率,减小组合电路的延迟是主要的途径。减小组合电路的延时的方法一般有以下两种:
1.通过改变走线的方式来减小延时
通过给综合器加适当的约束(约束要适量,一般以5%的裕量为合适,比如电路工作在100MHz,则约束加到105MHz就可以了,过大的约束效果反而不好,且极大地增加了综合时间),可以将相关的逻辑在布线时尽量布得靠近一点,从而减少走线的时延。
2.通过拆分组合逻辑的方法来减小延时
由于一般同步电路都不止一级锁存,而要使电路稳定工作,时钟周期必须满足最大延时要求、缩短最长延时路径,才可提高电路的工作频率。我们可以将组合逻辑分解为较小的几块,中间插入触发器,这样可以提高电路的工作频率。
前方高能,请注意了这是一个神奇的圈子,这里有最优质的资源,这里有一起努力学习的小伙伴,这里还有不一样的风景。现在活动促销中,入圈前50名的小伙伴,仅需1块钱即可成为永久会员,后面将会恢复原价,想加入趁现在!