对于广大PCB设计工程师而言,提到时序问题,觉得比较茫然,看到时序图,更是一头雾水,感觉时序问题很高深。大家平常的设计中,最常见的是各种等长关系,网上流传的Layout Guide,也会告诉大家那些线需要等长。是不是做到了等长,就满足时序关系了呢?你有没有想过,在有些情况下,费尽心思做的等长,反而是系统工作不问题,时序问题出错的罪魁祸首呢?
笔者在给一些公司做时序培训的时候,开场白一般会问一个问题:大家列举下平常设计中的常见等长要求,一些具有共性的回答如下:
PCI总线,CPCI总线,PCIX数据地址总线:1000mil等长,有些回答甚至500mil或者更小。
SDRAM的数据地址总线,这时候有两种回答:
DDR1、2、3
PCIE差分组内等长5mil以内
PCIE差分组间等长100mil(或者500mil)以内
大家可以先思考一下,上面这些等长关系,应该工作中都有可能碰到,你是不是也这么做的,有没有更深入思考过,哪些等长关系是不合理的?希望在时序的系列交流结束之后,大家能有更加明确的答案。
可以这么说,绝大部分等长设计,都有相对应的时序关系,如果能看懂相关的时序图,对等长设计会更加清晰。上面列举等长要求的时候,其实做了分类,相对于高速总线的发展历史,其实就是3个大类,共同时钟的并行总线,源同步时钟的并行总线,高速串行总线,如下图所示:
我们先来讨论下绿色的部分,也就是共同时钟的并行总线时序设计。或许有人会说,这都是过时的设计了,并且200M以内的信号,有什么好讨论的?随便设计就好了。其实现在很多系统还会采用CPCI的构架,PCIX的总线还在通讯、工控等行业大量采用。并且共同时钟系统,到了133M以上,时序设计非常困难,可以说如果没有真正理解时序设计的原理,你可能做一个5G的PCIE2.0的系统没有什么问题,做一个166M的PCIX系统,做一个失败一个,系统完全无法运行在你预期的频率上,不得不降频使用。当然,这里面有两个原因,其一是每一代总线,发展到瓶颈之后才会进入下一代总线,在各自的瓶颈上,时序裕量非常小,设计极为困难。其二,由于技术的发展,大家更多的关注DDR3,关注高速串行总线,共同时钟系统的研究越来越少,相应的总结文章也不常见,就带来很多设计问题,也就是上面的回答里面,SDRAM分组等长设计错误的原因。
首先,我们怎么判断一个系统是共同时钟,方法很简单,找时钟树,确定时钟的关系,是判断各种时序系统的关键。共同时钟系统,一般有一个外部的晶振或者晶体,然后通过时钟分配器分别连到系统的驱动端和接收端,由这个外部时钟线来控制系统的时序工作方式,如下图所示:
第一个时钟边沿驱动端发数据,第二个时钟边沿,在接收端接收数据,为了保证数据的稳定可靠传输,需要满足一定的建立保持时间裕量。
限于篇幅和时间关系,在这个小节先直接给出结论,下一个专题在针对结论具体讨论,也留给大家思考的时间。
共同时钟的时序关系公式为:
这两个公式大家可以在各种文章里面看到,从公式可以直接得出结论,共同时钟的时序等长关系是一个范围,而不是等长。又因为飞行时间的最小时序要求一般都可以满足,也就是第二个公式在很多场合可以忽略不计,带给PCB设计的要求就是符合第一个公式,结论就是走线越短越好。任何因为并不存在时序要求而做的整个总线绕等长,而又为了绕等长而导致这个总线的布线度增加,串扰增加,这样的设计是错误的,失败的例子非常多。
高速PCB设计系列文章:
用户8 2015-10-19 18:26
Orima 2015-10-12 19:22
用户1454308 2015-9-1 16:37
用户1681954 2015-8-29 11:52
用户1506775 2015-8-28 23:38
自做自受 2015-8-27 16:46
自做自受 2015-8-27 16:44
忆轻狂 2015-8-26 17:46
用户1152031 2015-8-26 17:02
用户1331823 2015-8-26 14:01