日志档案

发表于 2007-8-6 16:29:36

2

标签: FPGA  时序问题  

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

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

系统分类: CPLD/FPGA   |   用户分类: 亡羊补牢   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1125)    回复(3)  

投一票您将和博主都有获奖机会!

  • 猫鱼

    2007-12-17 9:47:59

    我刚刚接触电路设计,目前也遇到了时序问题。别人设计出的电路工作不稳定,希望我能进行一下时序分析,看看是不是时序的问题,并找出解决的方法,目前我完全没有头绪,希望指点一下。

    电路核心是arm  由于还没有拿到板子,太具体的我也不清楚呢。

  • 孟玉

    2008-3-18 10:29:29

    以前,由于做的项目少,要么是在别人做好的项目上小修小补,遇到的多是逻辑问题;要么接口的芯片时序要求比较宽泛,不需要特殊处理也能过得去。近来,随着接触的项目越来越多,遇到和解决的时序问题也逐渐多了起来,先前对时序问题的畏难情绪也逐渐减弱了,随之而来的是对于时序问题理性的认识和解决的信心! 说的很好,坦白的讲,我遇到的时序问题很少,印象中只有一次,两块FPGA之间连接,由于都是时序电路,简单约束一下就可以通过叻。 不过,还是很佩服楼主,很系统的介绍叻一下!感谢!

  • songchao01

    2008-7-26 10:36:07

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