同步时序约束——Input Delay
今天看了很多有关Input Delay的资料,特别是在看了网友wind330的博文《同步时序约束之INPUT_DELAY详解》之后想通了很多问题。现在将自己所思所想的知识整理出来与大家分享,希望大家能提出一些看法,让我们在不断地交流中共同进步。
在图1的这种情况下,我们必须保证 Latch edge到达Reg2之前,ASSP输出的数据已经到达Reg2的数据口,并已经至少稳定Tsu。
图 1 同步时序系统
在继续分析Input Delay之前,我们必须先清晰两个概念,它们分别是Launch Edge和Latch Edge. 我们可以将图1所示的系统简化为图2所示的电路模型。
图2 Launch Edgeh和Latch Edge
系统只有一个clk,对于reg1和reg2来说它们并不知道clk的哪个上升沿是Launch Edge,哪个上升沿又是Latch Edge。真正的解释应该是如表格1:
表格1 Launch Edgeh和Latch Edge
时间 |
clk状态 |
reg1 |
reg2 |
0ns |
上升沿 |
发送Data_(n) |
锁存Data_(n-1) |
5ns |
上升沿 |
发送Data_(n+1) |
锁存Data_(n) |
我相信当大家看到这个表格时,就会明白在同步时序系统Launch Edgeh和Latch Edge相差一个时钟周期。【理解这一点,有利于我们理解后面的Input delay和Period_OSC的关系】
我们就按这个图2所示的波形图继续分析下去。当0ns时,从晶振中输出的clk的上升沿,这个上升沿对于reg1来说就是Launch Edge,那个这个Launch Edge所发射的数据Data_n需要多长时间才能到达图1所示的reg2的D数据口呢?我们对图1上的几个时间进行简单的相加就可以得到答案:
公式1
而在此时此刻(即0ns),从晶振输出的clk的上升沿对于reg2来说就是Latch Edge,但这个Latch Edge并不是Data_n的锁存信号,而是Data_(n-1),即Data_n之前的那个数据。Data_n的锁存信号需要等到下一个Latch Edge。
那么从第0ns算起,什么时刻属于Data_n的锁存信号才会到达reg2呢?计算公式如下:
要。
我们将公式1和公式2所用到的时间段画在一张波形图上,如图3所示。
图3 同步系统的各传输时间段
那么,我们通常所定义的Input Delay的作用是什么呢?带着疑问,我又反复阅读了特权老师的所写的《深入浅出玩转FPGA》中有关Input Delay的章节,最终分析清了Input Delay的作用。
当我们具体应用时,我们一般会将FPGA看成一个整体,即建立时间不是内部寄器的建立时间,而每个寄存器由于在FPGA中的location不同,其setup time也会不同,而我们是无法设置setup time的】那么,二者的区别在于当我们以reg2为最终的对象时,数据传输的终点是reg2的D数据口,时钟的终点是reg2的clk端,此时的的终点是FPGA的数据输入端口,时钟的重点是FPGA的时钟输入管脚。所以当我们以FPGA整体为研究对象时,需要将公式4改变一下,将其中的
当我们看到公式7时,我们就会想到Input Minimum Delay该满足什么关系式呢?我们将Input time不断地缩小,就会发现数据Data_(n)达到时间很可能会
到此,我们可以从公式7、公式8中看到,我们可以通过设置Input Delay使时序满足公式7、公式8中的关系式,进而实现时序收敛。
文章评论(0条评论)
登录后参与讨论