1、关于等长与等时
之前也提过,现在流行重要的事情说三遍:
1、等长从来都不是目的,系统要求的是等时……
2、除了差分对内的等时是为了相位之外,绝大多数的等时都是为了时序!
3、为了时序而绕线,就一定要搞通时序关系,看懂时序图
每次看到时序图的时候,都会眼前一黑有没有?
时序是大家非常头痛,也觉得非常复杂的话题,所以高速先生小陈在之前的时序话题中试图用两对恋人的恋爱关系来解释时序问题,绕口令式的比喻不知道有多少人真正看懂了?给我的感觉是80、90后们好像很快领悟了小陈的意思,而70后们普遍表示更晕了有没有。
想把时序问题简单讲清楚,是一个巨大的挑战,高速先生的精神就是迎难而上,前仆后继。我的目标是不给大家看复杂的时序图,也不引用什么比喻联想,让大家简单理解时序。
借用一张很好的图,一下子看懂主要的三种时序系统(这里忽略应用较少的内同步时钟系统)
并行总线包括了早期的共同时钟和现在流行的源同步时钟,然后就是串行总线。区分三种系统也很简单,后续文章分别与大家一一道来。
2、共同时钟时序
共同时钟的并行总线,十几年前的技术,跟不上高速设计的 需求,但是现在还有一些应用,比如常见的Local bus基本是共同时钟总线。还有CPCI总线,PCIX总线,早期的SDRAM等。判断是否共同时钟总线的主要特征是:外部时钟分配器(或者FPGA)分 别送出时钟线到发送与接收芯片。如下图所示,能找到外部同步时钟的,一定是共同时钟总线。
共同时钟总线的时序特点是,时钟的上一个边沿,发送芯片打出数据,然后在下个时钟边沿,接收芯片接收数据。为了简化后面的理解,假定时钟达到驱动端和接收端的时间一致,也就是时钟线等长(这也是最常规的设计思路)。
影响时序的因素有Tco,Tskew,Tjitter,Tcrosstalk……,看起来很复杂,简单来说,只要满足两个条件,即可达成时序要求:
1、一个时钟周期之内,数据要完成从驱动端发出,到达接收端,并有足够的建立时间
2、第二个数据来到之前,前一个数据要有足够的保持时间
满 足条件1,就要求Tclk能包容数据到达所需的是所有时间,这些时间包括了数据输出延时(Tco),数据飞行时间(Tflighttime),数据保持时 间要求(Tsu),以及所有七七八八影响时序的因素(Tcrosstalk,Tjitter……),并且所有这些因素都要取最恶劣情况。
TPCB skew+Tclock skew +Tjitter +Tco data +Tflt data +Tsetup<Tcycle
满足条件2,就是下个数据最快会在最小数据输出延时(Tco min)加上最小数据飞行时间(Tflighttime min)之后达到,数据必须在下个数据达到之前有足够的保持时间。
Tco data +Tflt data +Tclock skew+Tpcb skew>Thold
真正设计的时候,我们需要从器件手册查找相应的数据来进行时序计算。从理解角度来说,却不用那么复杂。
0.3ns<Tfly time<0.7ns
上图是一个实际案例计算后的结果,我们从中只要看懂两个事情:
一、共同时钟总线时序关系随着TClk的减小,难度急剧加大。33M、66M的共同时钟总线,适度关注拓扑结构和端接来保证信号质量就够了,不需要任何绕线。100M以上的共同时钟总线时序开始变得紧张,133M以上的系统,建议一定要做时序分析,否则风险很大。
二、共同时钟总线时序是对总长的要求,不是等长,借用Cadence Allegro的规则管理器来解释,共同时钟总线最合适的电子规则是Total Etch Length,而不是我们常用的各种Propagation Delay。
注:100M 或者133M以上的时候,由于时序非常紧张,有可能通过控制外部时钟Skew(布线或者调整寄存器)的方式来调节时序,这时对以上不等式两边进行调整的过 程中会涉及到总长的差异问题。但是也还是用Total Etch Length的规则来约束设计,而不是Propagation Delay
讲了这么多,大家继续晕菜有没有?想把时序讲简单,是不是Mission Impossible?
还是简单总结一下:
1、共同时钟总线时序关系随着速率增加,时钟周期减小,设计难度增加
2、共同时钟总线时序是对总长的要求,一般情况下可以理解为尽量走短;没有等长要求。
3、如果因为时序调整的原因,需要绕线的时候,尽量保证长线不要绕的更长
4、100M以上的共同时钟总线,建议进行时序计算,避免风险