首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

高速PCB设计 时序问题(一)共同时钟系统

高速PCB设计 时序问题(一)共同时钟系统

对于广大PCB设计工程师而言,提到时序问题,觉得比较茫然,看到时序图,更是一头雾水,感觉时序问题很高深。大家平常的设计中,最常见的是各种等长关系,网上流传的Layout Guide,也会告诉大家那些线需要等长。是不是做到了等长,就满足时序关系了呢?你有没有想过,在有些情况下,费尽心思做的等长,反而是系统工作不问题,时序问题出错的罪魁祸首呢?

        笔者在给一些公司做时序培训的时候,开场白一般会问一个问题:大家列举下平常设计中的常见等长要求,一些具有共性的回答如下:

        PCI总线,CPCI总线,PCIX数据地址总线:1000mil等长,有些回答甚至500mil或者更小。

        SDRAM的数据地址总线,这时候有两种回答:

    全部总线等长,等长要求200mil以内(数值的回答不关键,随着频率等因素数值也经常变化,以下的讨论相同,我们不关心具体要求是多长以内,而是等长的类型)
  • 分组等长,D0~D7 ……,如果我再问分组和什么Strobe做等长,答案更是千奇百怪(这个答案是被DDR影响了?新的工程师已经很少机会接触SDRAM了)

DDR1、2、3

    数据线分组等长,DQ0~7+DQS 数据组内20mil等长 地址、控制、命令和CLK等长,范围稍微宽一些,+-500mil左右
  • 所有DQS和CLK等长,甚至DDR3,做了Fly by设计之后,继续要求等长关系

PCIE差分组内等长5mil以内

PCIE差分组间等长100mil(或者500mil)以内


        大家可以先思考一下,上面这些等长关系,应该工作中都有可能碰到,你是不是也这么做的,有没有更深入思考过,哪些等长关系是不合理的?希望在时序的系列交流结束之后,大家能有更加明确的答案。

        可以这么说,绝大部分等长设计,都有相对应的时序关系,如果能看懂相关的时序图,对等长设计会更加清晰。上面列举等长要求的时候,其实做了分类,相对于高速总线的发展历史,其实就是3个大类,共同时钟的并行总线,源同步时钟的并行总线,高速串行总线,如下图所示:

[url=http://forum.edc-cn.com/images/attachments/201112/8106544836_TIME_1324464511405.jpg][url=http://forum.edc-cn.com/images/attachments/201112/8106544836_TIME_1324464511405.jpg][url=http://forum.edc-cn.com/images/attachments/201112/8106544836_TIME_1324464511405.jpg][/url][/url][/url]

        我们先来讨论下绿色的部分,也就是共同时钟的并行总线时序设计。或许有人会说,这都是过时的设计了,并且200M以内的信号,有什么好讨论的?随便设计就好了。其实现在很多系统还会采用CPCI的构架,PCIX的总线还在通讯、工控等行业大量采用。并且共同时钟系统,到了133M以上,时序设计非常困难,可以说如果没有真正理解时序设计的原理,你可能做一个5G的PCIE2.0的系统没有什么问题,做一个166M的PCIX系统,做一个失败一个,系统完全无法运行在你预期的频率上,不得不降频使用。当然,这里面有两个原因,其一是每一代总线,发展到瓶颈之后才会进入下一代总线,在各自的瓶颈上,时序裕量非常小,设计极为困难。其二,由于技术的发展,大家更多的关注DDR3,关注高速串行总线,共同时钟系统的研究越来越少,相应的总结文章也不常见,就带来很多设计问题,也就是上面的回答里面,SDRAM分组等长设计错误的原因。

        首先,我们怎么判断一个系统是共同时钟,方法很简单,找时钟树,确定时钟的关系,是判断各种时序系统的关键。共同时钟系统,一般有一个外部的晶振或者晶体,然后通过时钟分配器分别连到系统的驱动端和接收端,由这个外部时钟线来控制系统的时序工作方式,如下图所示:


[url=http://forum.edc-cn.com/images/attachments/201112/8106544836_TIME_1324464327810.jpg][url=http://forum.edc-cn.com/images/attachments/201112/8106544836_TIME_1324464327810.jpg][url=http://forum.edc-cn.com/images/attachments/201112/8106544836_TIME_1324464327810.jpg][/url][/url][/url]

        第一个时钟边沿驱动端发数据,第二个时钟边沿,在接收端接收数据,为了保证数据的稳定可靠传输,需要满足一定的建立保持时间裕量。

        限于篇幅和时间关系,在这个小节先直接给出结论,下一个专题在针对结论具体讨论,也留给大家思考的时间。

        共同时钟的时序关系公式为:

[url=http://forum.edc-cn.com/images/attachments/201112/8106544836_TIME_1324464484322.jpg][url=http://forum.edc-cn.com/images/attachments/201112/8106544836_TIME_1324464484322.jpg][url=http://forum.edc-cn.com/images/attachments/201112/8106544836_TIME_1324464484322.jpg][/url][/url][/url]

        这两个公式大家可以在各种文章里面看到,从公式可以直接得出结论,共同时钟的时序等长关系是一个范围,而不是等长。又因为飞行时间的最小时序要求一般都可以满足,也就是第二个公式在很多场合可以忽略不计,带给PCB设计的要求就是符合第一个公式,结论就是走线越短越好。任何因为并不存在时序要求而做的整个总线绕等长,而又为了绕等长而导致这个总线的布线度增加,串扰增加,这样的设计是错误的,失败的例子非常多。
返回列表