这是一篇脱胎于我在公司做的一个training里关于CPLD时序部分讲解的博客。
在此感谢网络上两篇流传度很广的关于建立保持时间的文章的原作者,一篇叫做“数字电路中的建立时间与保持时间”,另一篇叫做“FPGA时序分析,时序约束知识”。(由于转来转去,已经找不到原出处。)
本文将从三个层面(门级,芯片级和板级)上来分析数字电路中的建立保持时间,目的是理清CPLD设计和板级设计在时序上的关系,说明时序分析在设计过程中的必要性。
首先让我们来建立一个包含门级,芯片级和板级的电路的分析模型,如下图:
接下来需要搞清楚几个概念:
Micro Tco: 触发器输出的响应时间,也可以理解为触发器输出在clk上升沿到来后的时间内发生变化, 之后稳定,也可以理解输出延迟;
Micro Tsu: 触发器的建立时间;
Micro Th: 触发器的保持时间;
Tdelay: 触发器输出的变化经过组合逻辑元件和内部走线所需的附加时间,一般Tdelay = Tcomb + Tnet也就是等于组合逻辑延时加互联延时;
T: 时钟周期;
Tpd : propagation delay,不同地方定义不同,我们这里只作时钟skew,等于Tskew;
Tperiod: 时钟周期容限,要求实际的T>Tperiod;
Tsu: 芯片级建立时间;
Th: 芯片级保持时间;
Tco: 芯片级输出延迟。
*某些文章会加上建立保持时间容限的概念,个人觉得反倒让理解更困难。
**由于在CPLD设计中,参考时钟一般都是利用系统时钟资源和全局时钟管脚输入来进行分配的,这样在内部时钟到达各触发器的延时几乎完全相等,Tskew(Tpd)可以忽略不计。
1.先从门级电路的分析开始:
根据分析模型,我们可以得到如下时序图:
由时序图得出触发器B的建立时间T3需要满足以下条件:
T - Micro Tco - Tdelay >= T3
再来看保持时间。
首先对于数据接收端来说,任何时钟沿采样的数据,都是发送端前一时钟周期发送的数据。发送端可能每个时钟周期都要发送数据,那么对于接收端来说,任何一个时钟沿后一段时间,数据线上的数据都会被发送端第二次发送的数据改变,所以