《【2017年整理】EDA先锋关于双沿触发的讨论》由会员分享,可在线阅读,更多相关《【2017年整理】EDA先锋关于双沿触发的讨论(2页珍藏版)》请在金锄头文库上搜索。
1、以下摘自EDA 技术月刊第 1 期:请高手解释:既用时钟正沿又用负沿打数据为什么不好? 编者提示:很多人入门的时候觉得一个 clock 两个边沿, 为什么不充分利用那?而且一个边沿出数据一个边沿打数据,恰当合理,但是注意物理实现并不像功能仿真那么简单的时序, 其中设计到 timing closure 等问题。evergreen: 在 Westor 的FPGA 设计指导手册中有这样的叙述:“.还有一些设计者为了有稳定的采样,生成了很多相差 90 度的时钟信号,时而用正沿打一下数据,时而用负沿打一下数据,用以调整数据的采样位置。这两种做法是万万取不得的。 ” 可是我的一个设计中,有很多级,上一级的
2、计算结果数据是下一个模块的输入数据,我就是使用的这样的方法:上一级输出的数据以上升沿为准,有一个一个周期的数据有效信号,对应于上升沿,那么下一级就从下降沿采样,正好从数据有效信号的中间采样,输出的数据以下降沿为准;再下一级的模块,又从上升沿采样,. 。 我觉得这样挺好的。 如果不是这样,则第二级也从上升沿采样,不仅晚了一个周期,而且数据有效信号只有一个周期,采样的同时,数据有效信号也正在变为无效,岂不是更不保险? Liuth: 我的观点: 1、从速度的角度,如果利用时钟的上下沿分别采样能完成的电路,那么肯定可以用双倍时钟的上升沿进行采样。而且由于采用上下沿采样,系统的最高频率减半,从而影响到不
3、需要上下沿工作的电路。 2、用上升沿采样的时间非常短,而两级电路之间的延迟远远大于它,所以不会出现采样不稳定。此外,只要是时钟边沿采样信号就必然要满足 Tsetup 和Thold。 westor: 这个问题讨论的这么热烈!我也凑一下热闹。 这个问题简单的说有以下几点: 1、就像 liuth 前面提到的,如果你用一个时钟的上下沿同时操作,用该时钟的同相倍频时钟也能实现相同的功能。换句话说,你使用一个时钟的上下沿同时操作,相当于你使用了一个同相的倍频时钟! 2、 实使用时钟的上下沿同时操作,如果作者清晰的意识到了注意事项,也不是不可以接收的,但是使用者经常意识不到前面大家说的那些注意事项。特别是在
4、 FPGA 中,一般 PLL,DLL 都能较好的保证时钟的正沿的jitter,skew 等各种参数指标,duty cycle 的另一个沿的控制不是那么严格,特别是 synthesis 和 P&R 的软件,如果作者没有明确的约束另外一个沿的指标,这些软件在综合和布局布线时不一定能严格的提取出满足操作要求的时序约束(比如前面说的 Tsetup,Thold 等) ,造成在该沿操作的不稳定。 3、 结第 1,2点,如果作者不十分清晰,同时使用上下沿,不如直接使用同相倍频时钟简单、明确、可靠。 4、 所谓清晰的概念,我想这个贴在前面已经说了很多时序概念,我在前面的帖子也讨论了Tsetup,Thold,T
5、co,采样稳定等概念。大家要明确,功能仿真的原理,明确看到的功能仿真的波形是不能准确反应 FPGA 实际运行的结果的。 5、 关于 DDR,QDR,大家说的很对,DDR,QDR 本身就是利用了上下沿采样的原理。这是因为,存储器件高速发展,时钟速度已经成为存取器件的瓶颈,所以可用时钟上下沿操作缓解对 Single edge RAM 时钟振荡器的要求。但是大家必须清晰,DDR, QDR 的时钟电路是专用高速设计电路,对时钟的正沿、负沿的 jitter,布线的 skew 等等指标都有详细和明确的要求,这一点是和 FPGA 中的情况截然不同的。不知道是不是上面的那段让有的朋友产生了误解,认为 FPGA
6、 不能实现DDR。其实恰恰相反,现在所有的 FPGA 都支持,DDR 是 FPGA 的一个重要应用, Xilinx,Altera,Lattice等等。Altera 和 Lattice 还有 DQS 功能。DDR IP Core 的情况如下,100M,133M 比较常见,几乎都有,166MDDR 和 200M DDR 有些型号的 FPGA 已经成功开发。 在 FPGA 内 DDR 的应用主要有两类:一是DDR Interface,一是 DDR Register。技术细节随便翻一篇比较新的器件的 DataSheet 就能看到。 编者小结:Westor 和 Liuth 从 FPGA 设计的角度谈了关
7、于能否在设计中使用时钟双边沿问题, 结合自己在 asic 设计的体会,谈谈为什么在设计中要尽量避免使用时钟的双边沿问题。 1.Timing Closure 的问题, 现在 IC 运行速度越来越快,若使用 100Mclock,同时使用了时钟双边沿打数据,两个 FF 之间只有 5ns 的 logic delay+wire delay,若到了 200M clock 那?两个 FF 之间只有 2.5ns 的 logic delay+wire delay,这对设计来说是十分困难的。我们曾在一个芯片中使用双边沿,DSP 在一个 clock(150M)内把数据从 ram 取回,上升沿送出地址, 下降沿 ra
8、m 送出数据,结果表明这是一条 critical path,由于设计前过高的估计处理能力,最后无法实现 timing closure。 2.DFT 的问题,芯片设计不仅要关心 function 是否正确, 同时也关心自己的芯片在流片到封装整个流程是否出现物理,制造上面问题, 因此对芯片要做中测和成测。其中 DFT(Design For Testable)就是说在前端设计的时候就考虑测试的问题,代码要符合 DFT 的要求。DFT 中广泛采用的是在网表中加入 Full Scan Chain 的方式,就是把芯片中的 mux FF 通过旁路信号串成一条扫描链,这条链要求在同一个时钟边沿做操作,若设计中使用双边沿时钟, 在对网表做 DFT 的时候就会遇到困难,降低 faults coverage。而一般tape out 一个芯片要求 95%-99% faults coverage,所以尽量避免使用时钟双边沿打数据。时钟分频模块中若用双沿打了(针对同一数据流) ,只是要注意实现的时钟频率应为原时钟的 2 倍值,即若原时钟为 100M,则实现中至少应保证 IC 中该模块能工作在 200M 频率下