1.触发器及其建立时间和保持时间
对于触发器而言,只有在时钟clk上升沿到来的那一刻才会改变触发器的输出值,所以我们可以将触发器看作是一个开关,这个开关只有在时钟上升沿起作用,只有在时钟clk上升沿的时候采集输入值(input value)并将其输出。
在仿真器上,时钟的上升沿或者下降沿是没有延时的(表现为直上或者直下),但是在实际工程中,时钟上升沿或者下降沿是倾斜的,即时钟的上升或者下降是需要一定时间的。
所以这就要求在时钟上升沿到来之时,触发器的输入数据需要保持稳定;另外,在时钟上升沿到来之后,需要保证数据保持一定的稳定,否则可能会造成前一寄存器的输出太快而冲掉了后一寄存器的正确数据。这是触发器的固有属性。
简而言之就是:
(1)在clk到来之前,需要数据保持稳定,即需要数据在clk到来之前“预先准备好”,这段时间称为建立时间;
(2)在clk到来之后,需要数据保持稳定,即需要数据在clk到来之后“不能变化”,这段时间称为保持时间。
2.Timing Path 和 Data Path
在静态时序分析中,时间路径和数据路径极为重要,也是分析建立时间和保持时间的一个较好的手段方法。
如下图所示,数据data由DFF1在时钟上升沿采样,然后DFF1对数据进行输出,随后经历组合逻辑电路,最终到达DFF2的输入口,可以把这条数据通路称为data path,即数据经过的路径为:buffer1->dff1->logic->dff2。而时钟到达DFF2时的路径为:buffer2->dff2,这条路径称为timing path。
- 对于建立时间而言,需要考虑的重点在于:数据经过dff1和组合逻辑logic之后,要比下一个时钟上升沿更快地到达ddf2。换句话说,就是data path上的经历的时间要比(timing path + Tclk)更短。需要保证以下公式成立才能确保时序不会发生违例,否则称为setup time violation。
- 对于保持时间而言,需要考虑的重点在于:数据经过dff1和组合逻辑logic之后,要在时钟上升沿到来之后还能保持一定的时间。换句话说,就是data path上经历的时间要比timing path上所经历的时间更长。即需要保证以下公式成立才能确保时序不会发生违例,否则称为hold time violation。
3.建立时间、保持时间分析例子
如下图所示,有一个同步设计的电路,图中标明了每个器件和线路上时延的最大值和最小值,请根据图中电路及其时延数值,分析该电路的建立时间和保持时间是否违例(时钟周期为15ns)。
建立时间。对于data path而言,经历的时间为:2+11+2+9+2+4=30,而对于timing path而言,经历的时间为:15+2+5+2=24,所以建立时间不满足时序要求。
保持时间。对于data path而言,经历的时间为:1+9+1+6+1=18,而对于timing path而言,经历的时间为:3+9+3+2=17,所以保持时间满足时序的要求。
4.常见的触发器
D触发器的特征方程及其真值表如下所示:
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | 1 |
JK触发器的特征方程及其真值表如下所示:
0 | 0 | Q | Q |
0 | 1 | Q | 0 |
1 | 0 | Q | 1 |
1 | 1 | Q | Q' |
T触发器的特征方程及其真值表如下所示:
0 | Q | Q |
1 | Q | Q' |