微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 保持时间为负怎么处理?

保持时间为负怎么处理?

时间:10-02 整理:3721RD 点击:
保持时间为什么负值,是时钟频率太高吗?大虾通常都是怎么处理的?另外大虾能否给出建立时间、保持时间的计算公式?小弟对Altera定义的建立、保持时间公式有点疑问

保持时间为负怎么处理?
大虾给个建议吧

保持时间为负怎么处理?
今天刚看了这方面的文章,保持时间为负就是你的信号都结束了,可是有效时钟延还没有到达。
自己感觉应该是把数据的时间延长吧!  
个人的一点见解,不对还请指正:)

保持时间为负怎么处理?
是这个理儿
数据的时间延长,不知道怎么做啊?fpga里信号都是被clocked ,能延时吗?brotherjam 能否把你那篇文章共享一下?谢了先

保持时间为负怎么处理?
呵呵,是看的书,ic设计基础,西电的
我想把采样时钟的频率升高应该可以吧!  然后用个D锁住,再由系统时钟采样
可是怎么会出现数据采不上的情况呢?  能不能把实际问题帖出来

保持时间为负怎么处理?
是不是有误会啊?
保持时间为负,表示的是信号在时钟沿前就可以撤销。跟你采样频率什么的没有关系,即使你频率再高,对于那个触发器它的Hold time还是负值。负值是好事,不必担心什么的。

保持时间为负怎么处理?
没错,register 的setup time 对你设计的最高工作频率有限定,而hold time 与频率没关系。

保持时间为负怎么处理?
负值是好事?
对于FF要想得到正确的数据不是要求一定的建立、保持时间吗,保持时间可以为负?老扁兄解释一下

保持时间为负怎么处理?
保持时间为负,肯定是由时序分析工具计算出来的,这主要是由于数据路径和时钟路径延时不同造成的。这时给出的建立/保持时间值是包括了路径延时,而不纯粹是FF的建立/保持时间。

保持时间为负怎么处理?
其实很好理解这个问题,我们知道setup和hold时间形成一个时间窗,只要在这个时间窗里信号稳定就ok啦。所以不必在乎hold相对时钟沿是正是负的绝对值。
对于绝大多数FF来说,我们发现基本hold时间都是0;而对于一些特殊的FF,这个时间窗可以在时钟沿的前面,其实也就是FF内部存在输入延迟功能。而这种特殊的FF,对于实现移位功能非常有用,因为你不必做hold time fix,也就不会有任何hold time violation。
当然大部分设计都是用hold为0的FF来做的。
而叹息的解释是另一方面的。不冲突。

明白叹息兄的意思,不过对老扁兄的第一句话还是有疑问:setup和hold时间形成一个时间窗,信号在此时间窗稳定,但FF读取信号实在时钟控制下读的,而setup和hold时间的计算又是以系统时钟为基准的,若是此时间窗在时钟沿的前面,也就是hold时间为负,那么FF就不可能读到正确地数据。另外“对于绝大多数FF来说,我们发现基本hold时间都是0”是不是FF内部结构使然?

保持时间为负怎么处理?
是不是小弟对FF的内部结构理解有误,hold时间为负还是0没有影响都是因为FF的内部的延时保证了能够正常读取数据?若是这样hold时间为负时的绝对值也应该有限制?

保持时间为负怎么处理?
你也不要对FF内部结构有其他猜测,俺说的是一种hold时间为负的FF,它不是通用FF。由于内部的额外延迟,它照样可以正确读取数据。
当然,这种FF的hold time绝对值不会很大。
其他情况hold time为负时,还是应该参照一声叹息的解释来理解。

保持时间为负怎么处理?
呵呵 ,谢谢两位小编的解答
那我就问到底吧 。hold 时间=数据路径延时-时钟路径延时+FF内部hold 时间,这个公式对吗?若是hold 时间为负的话怎么解决呢?指的是普通的FF

保持时间为负怎么处理?
加buffer

保持时间为负怎么处理?
加buffer是asic里的方法吧,fpga里综合时工具会自动去掉的

保持时间为负怎么处理?
[这个贴子最后由一声叹息在 2004/09/13 02:24pm 第 1 次编辑]
有必要非要使HOLD TIME大于或等于0吗?
你需要解决的信号应该是FPGA的输入信号吧?如果是的话,我们可以分三种情况进行讨论:
(1)假如该信号是一个异步输入信号:这种情况下分析setup/hold time是没有意义的,这应该是一条false path。
(2)假如该信号是一个源同步的输入信号:除非时钟路径的延时大大大于数据信号的路径延时,否则不会出现违背保持时间的情况;
(3)假如该信号是一个系统同步的数据信号:除非时钟网络的skew很大,否则不会出现违背保持时间的情况;

保持时间为负怎么处理?
非常感谢叹息兄
我的目的只是保证电路正常工作,如果对于普通的FF在hold 时间为负时能保证正常工作也就没比要管hold 时间为正为负了

保持时间为负怎么处理?
保持时间为负好像是因为考虑到CLock trasition的原因,所以才会出来一个负值,只要满足这个负值条件,已经可以保证了clock 采样到数据了。

保持时间为负怎么处理?
不大明白啊,能不能解释得清楚点,“只要满足这个负值条件”是说这个负值的绝对值小于某个数?

保持时间=数据延迟-时钟延迟+器件本生的最小延迟(与工艺有关)
器件本身的延迟较小,因此保持时间为负,一般是由于时钟延迟大于数据延迟造成的。
因此可以通过增加数据延迟来解决。
另外还有一种方法是通过设置multicycle

数据传输延时大于时钟传输延时。

学习了,呵呵

同意前面的观点,保持时间为负应该是由于数据延迟大于时钟的延迟所造成的。
(当然也有可能是因为小编对quartus timing analyser的设置不当 ^_^ )
不过,一般来讲时钟信号在fpga默认走的是clock network,就是所谓的等长线,本身已经是对时钟走线有优化了,clock skew等问题很少可能会发生。但是,如果是采用门电路对clock加以处理后,那么这个clock的fpga的片上走线就可能不在clock network上了,而是走interconnection的普通线,也就是和数据走线一样了。最常见的例子就是用一个not gate来对clock做反相,或者用一个dff的出口做另一个dff的clock。如果design用的片上资源很大,而系统频率又相对来讲比较高,那么这样的gate clock多半会让你恶梦连篇的^_^。

在电路间加buffer就行了.

楼上说的对!

Maybe it is imposible.

保持时间为负,肯定是由时序分析工具计算出来的,这主要是由于数据路径和时钟路径延时不同造成的。这时给出的建立/保持时间值是包括了路径延时,而不纯粹是FF的建立/保持时间。

看得一头雾水

看看大家讨论学知识阿

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top