原创 “你好,时序问题,好久不见啊!”

2007-8-6 16:29 6106 4 6 分类: FPGA/CPLD

    一直以来,我都认为时序问题很难解决。原因有四:一是时序问题神出鬼没,可重现性差;二是调试时序问题缺乏有效的工具,定位难;三是有的时序问题很难解决,需要特殊处理;四是上述原因给我造成了一种思维上的障碍,不到万不得已,不去考虑时序问题,总要反复论证后才设想出现了时序问题。以上四个原因导致时序问题调试周期很长,而且很痛苦。 riple


 


    “运行良好的电路都是相似的,有问题的电路各有各的问题”。 riple


    设计良好的电路不会出现时序问题,原因有两点:一是设计者考虑周全,设计不但正确,而且考虑到了可能的时序变化,设计无懈可击;二是电路本身具有一定的鲁棒性,可以容忍一定限度的时序变化。这是“怎样避免时序问题”的问题,属于事前预防。 riple


    时序问题之所以会出现,原因也有两点:一是设计违反了时序要求,设计本来就是错误的;二是特定电路对于特定时序具有一定的敏感性,外部条件稍有变化,电路正常运行的条件就会被干扰。这是“怎样定位和解决时序问题”的问题,属于事后补救。 riple


    应对时序问题需要预防和补救相结合。 riple


 


    如果所有设计都是同步的,我们的生活该是多美好啊! riple


    为了避免出现时序问题,最可靠的方法是采用同步设计,由于同步设计方法可以很容易的进行时序约束(即保证寄存器的建立保持时间),布局布线工具可以明确优化的目标,只要最终实现的电路通过了时序分析,并且有一定的运行余量,就不会出现时序问题。 riple


    但是实际的设计往往不这么简单,大量存在的情况是FPGA芯片需要和外部芯片连接,在接口处存在时序问题;在某些情况下,FPGA内部被划分为多个时钟域,在信号穿越时钟域边界时存在时序问题。遇到这样的情况,需要设计者格外小心,严格遵守芯片的时序参数,严格遵守跨时钟域处理方法,采用一些特殊的但不是不规范的处理。除了步步为营,别无捷径。 riple


    定位已经出现的时序问题,需要大量的时间和精力的投入,大胆假设、小心论证的过程是必不可少的,百折不挠、永不言败的精神也是必需的。 riple


    定位后解决时序问题,也需要步步为营,采用特殊的但不是不规范的处理。 riple


 


    “你好,时序问题,好久不见啊!” riple


    从自己的错误中学习,这是高中英语老师教给我的方法。在经验不足、项目开发时间紧的情况下,出现时序问题是在所难免的,对于防不胜防的时序问题,学习和积累有效的解决方法是我们这些逻辑设计新手需要注意的。从实践中学习,只有多遇到、多解决时序问题,才能逐渐认识时序问题的本质,才能在设计早期加以预防。 riple


    所以,遇到时序问题不要难过,这是一个认识自己设计思路上存在的缺陷的好机会;遇到非常棘手的时序问题更要高兴,这是一个提升能力、积累经验的好机会。 riple


 


    以前,由于做的项目少,要么是在别人做好的项目上小修小补,遇到的多是逻辑问题;要么接口的芯片时序要求比较宽泛,不需要特殊处理也能过得去。近来,随着接触的项目越来越多,遇到和解决的时序问题也逐渐多了起来,先前对时序问题的畏难情绪也逐渐减弱了,随之而来的是对于时序问题理性的认识和解决的信心。 riple


    记得上一次出现时序问题是9个月前,解决那个问题用了我一个月的时间。中间多次反复,时好时坏。那是令人难忘的一个月。 riple


    最近的一个项目临近结尾时,又出现了时序问题,先是一个短期重现的,接着就是一个长期重现的。解决这两个问题用了大约两周时间。 riple


    在接下来的几篇文章里,我就谈谈遇到的这几个时序问题和具体的解决方法。 riple


    一、FPGA与外部芯片的同步接口产生的时序问题 riple


    二、FPGA与外部芯片的异步接口产生的时序问题 riple


    三、FPGA驱动信号的噪声对外部芯片的干扰导致的时序问题 riple

文章评论2条评论)

登录后参与讨论

用户1335338 2010-3-7 22:10

呵呵,我做的一个SRAM得接口时序上出现了问题,时对时错,看了你的文章,觉得你说的很有道理,按照你说的做了些约束,问题解决了,谢谢!

用户131284 2008-7-26 10:36

目前正在遭遇相似的问题,之前有点儿没头绪,看了你的几篇文章,觉得最起码心态好了不少,呵呵

用户60965 2006-10-25 16:08

很不错,谢了

用户65770 2006-10-25 15:13

不错的资料,收藏一下。

相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
2
4
关闭 站长推荐上一条 /2 下一条