第二章 基本的时序路径
第二章 基本的时序路径
2.1时钟的概念
1、时钟的定义
同步设计中是指电路的状态变化总是由某个周期信号的变化进行触发控制的,这个信号的上升沿和下降沿通常都可以作为电路状态的触发条件。同步设计中这个触发电路状态变化的信号称为时钟。
2、时钟偏差
FPGA设计中最基本的时钟来源通常为外接的晶振;然后其内部集成了PLL等时钟管理模块,可以对基准时钟进行分频与倍频。但这些时钟他们的周期无法保证绝对的精准,由于外部因素会有偏差。当然在内部通过PLL得到的时钟,编译器在设计过程中已经预留有时序余量。这时我们主要关注的是由外部晶振产生的时钟信号。
晶振产生的时钟通常会因为材料与工艺的因素产生一部分偏差,这些无法改变且影响较小。当然你作为超高速应用时也有很大关系。但最主要的还是晶振源固有的噪声和干扰带来的时钟信号的周期性偏差,称为时钟抖动。怎么理解,理解为按键消抖中被消去那一部分高低快速变化的时间。
2.2建立时间和保存时间
由于这个个人比较熟,简略记录。
建立时间指时钟上升沿到来之前数据必须保持稳定的时间;
保持时间指时钟上升沿到来之后数据必须保持稳定的时间;
为什么要有这些要求,建立时间:坐飞机一样(虽然我没坐过),在飞机到了之前你得先到;保持时间:飞机到了之后你要登记啥的,需要一段时间;不能直接起飞。
下面举例引入启动沿与锁存沿
有两级寄存器reg1与reg2,1在2前面,他们相互连接。
数据A,到达reg1门前,这时时钟上升沿Launch来到,A寄存在reg1,reg2寄存reg1之前的数据,不是A;又过了一会儿,时钟上升沿Latch来到,这时reg2寄存了reg1中的数据A。
时钟上升沿Launch,称为启动沿
时钟上升沿Latch,称为锁存沿
一般锁存沿在启动沿的后一个周期,当然这是没有进行时序约束的情况下。
2.3时序路径分析
在这本书中这一部分内容较多,且公式多,也是简单记录。
首先明确一点,数据在传输过程中不是越快越好,最重要的是要符合时序要求。
刚刚翻书的时候看到这一节的时候还是有点疑惑的,书中公式中使用的是Launch与Latch,按照个人理解,建立时间裕量与保持时间裕量应该是与该周期之前之后有关。一开始认为书中写的不够严谨,但在我翻看书中介绍启动沿与锁存沿时,他是对数据A与数据A之前的数据进行分析的;在我的学习过程中,我是以数据A为主体,进行时序分析的,这会导致大家使用的锁存沿的不同,导致分析中会出现歧义,但是这都是可以的,使用书中的说法进行时序分析会更加严谨。
但这会对我之前所写的关于锁存沿的介绍产生冲突,所以这里延用个人理解。
首先,两个寄存器都连接同一个时钟,但是电信号的传输,导致各个寄存器上升沿到来的时间会有偏差,这里设reg1时间偏差为0,reg2时间偏差为迟到T1;
建立时间裕量:在我们知道建立时间是数据在上升沿到达时需要提前到达的最短时间,而建立时间裕量就是数据A比要求的最短建立时间提前到达的时间。
启动沿到达后,数据经过寄存器1内部,再输出经过内部连线,到达寄存器2输入端的时刻T2,而锁存沿到达之前的建立时间为T3,那么T3-T2就是建立时间裕量。
保持时间裕量:我们知道锁存沿到达后要经过一个保持时间,而前面所说,锁存沿是落后启动沿一个周期的,那么这时reg1已经对数据A之后的数据B进行操作了,经过一段时间会到达reg2的输入端,设到达的时刻为T5,但这时reg2在对数据A进行操作,就是还处于保持时间,设通过保持时间的时刻为T4,那么T4-T5就是保持时间裕量。
上面只是进行了简单的分析,具体内容分析较为复杂,涉及参数众多,可以参考书本。
而前面所说数据不是越快越好,这就涉及到保持时间裕量了,我们应该知道,裕量都要求是正数,只有这样数据才能正常处理。
在时序分析中会有很多种路径分析,书中有非常详细的讲解。所以这里主要讲解的是建立时间裕量与保持时间裕量的意义吧,无论在同步还是异步,其主要分析与要满足的时序都与上面的分析相差不大。