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

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

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

在上一个话题介绍了共同时钟总线的时序原则,这一个专题就举例子来进行说明。
某单板为标准CPCI构架,使用的芯片如下:
CPU:MPC7448,桥:MV64460,DDR400,要求CPU、DDR要全速工作。CPU和桥之间的PPC总线就是典型的共同时钟时序关系,需要工作在200M。
MPC7448相关参数如下:

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

MV64460的相关参数如下:

[url=http://forum.edc-cn.com/images/attachments/201202/8106544836_TIME_1330409040269.jpg][url=http://forum.edc-cn.com/images/attachments/201202/8106544836_TIME_1330409040269.jpg][/url][/url]
写时序计算如下:
MPC7448的输出Tco max = 1.8ns Tco min = NA
MV64460的建立时间 Tinput_Setup = 1.5ns
MPC7448的保持时间 Toutput_hold = 0.5ns
时钟的Skew和Jetter是0.3ns
串扰带来的影响估计为0.2ns
Tfly_time<TCYCLE-TCO_MAX-TCLOCK_CKEW-TCROSSTALK 5-1.8-1.5-0.3-0.2="1.2ns
Tfly_time>Toutput_hold- Tco min--TClock_ckew-TCrosstalk
由于Tco min = NA,但是估计下来,一般不等式右边会为负数,负数意味着Tfly_time的最短长度没有要求
读时序计算如下:
MV64460的输出Tco max = 2.8ns Tco min = 1ns
MPC7448的建立时间 Tinput_Setup = 1.5ns
MV64460的保持时间 Toutput_hold = 0ns
Tfly_time<TCYCLE-TCO_MAX-TCLOCK_CKEW-TCROSSTALK 5-2.8-1.5-0.3="0.4(暂时忽略了串扰的影响)
Tfly_time>Toutput_hold- Tco min--TClock_ckew-TCrosstalk
Toutput_hold = 0ns,也可以看成是NA,估计下来,不等式右边也是负数,负数意味着Tfly_time的最短长度没有要求
综合读写时序的计算结果,要求PPC总线飞行时间的延迟小于0.4ns,实际仿真结果如下:
Data组选择最长网络PPC1_D0,仿真波形如下:
CPU写时序

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

测量得到Tflight time max = 0.769ns

CPU读时序

[url=http://forum.edc-cn.com/images/attachments/201202/8106544836_TIME_1330409084446.jpg][url=http://forum.edc-cn.com/images/attachments/201202/8106544836_TIME_1330409084446.jpg][/url][/url]
测量得到Tflight time max = 0.69ns
实际布线情况下仿真结果无法满足要求,这时候就是常见系统降频才能稳定工作,比如CPU频率降到166M,可以多出1ns的时序余量,那就可以满足时序要求了。
还有一个办法是综合读写时序建立保持时间的裕量,比如这个例子,写时序有1.2ns的裕量,比较充裕,而保持时间的要求都可以满足,这时候可以想办法通过人为调整布线的时钟Skew,达到系统时序设计的目标。
总结:
1. 共同时钟系统的时序并不简单,尤其是时钟频率超过100M的时候,需要严格时序计算和仿真,超过166M的共同时钟系统,时序非常紧张
2. 共同时钟的时序关系不是数据和时钟线等长,也不是数据地址总线等长,在大部分的共同时钟的时序系统中,保持总长度尽量短是非常关键的
3. 因为并不存在时序要求而做的整个总线绕等长,而又为了绕等长而导致这个总线的布线长度增加,串扰增加,这样的设计是错误的,失败的例子非常多
4. 特殊情况下,需要人为改变PCB布线时钟Skew,达到系统时序设计的目标,这种情况下,会对最短走线长度相应做下控制
返回列表