赛灵思
直播中

何壮梦

7年用户 292经验值
私信 关注
[问答]

为什么逻辑信号完全不稳定?

你好!
我以前看过很多基于时间无关逻辑的FPGA设计,比如“assign time_o =(time_sel)?time1_r:time2_r”。
但是当我设计一个以200Mhz时钟速率运行的计算机视觉算法时,我发现来自这些与时间无关的逻辑的信号完全不稳定。
所以我用时间依赖的逻辑部分替换了这些逻辑部分。
我终于得到了正确而稳定的输出信号。
所以我的问题是这种不稳定的情况是由我的设计代码,Spartan 6的糟糕表现还是其他原因引起的?
因为我确实看到许多案例使用与时间无关的逻辑,从互联网,书籍和其他人的源代码,他们必须有充分的理由使用它。
最好的祝福!

回帖(2)

姜雨孜

2019-8-9 10:13:07
你能举一个“完全不稳定”的例子吗?
只要设计满足时序(并且正确指定时序),就可以保证信号足够稳定以供芯片使用。
对于它的价值,几乎每个FPGA设计都在每种类型的FPGA上使用大量的组合(即时间无关)逻辑 - 从XC2000到Virtex Ultrascale +。
由于所有这些都可以正常工作,我的猜测是你的代码中存在导致问题的东西。
显而易见的原因是:
(1)错误指定的时序(或忽略的时序故障)。
在几MHz时,很难失败计时,所以你可以在很大程度上忘记它。
然而,在200MHz时,你将会进入一个在Spartan 6上获得正确的时机确实很重要的地区。
(2)没有注意时钟域。
例如,如果time1_r和time2_r来自FPGA振荡器,而time_sel来自摄像机,那么您实际上并没有任何关于它们如何相互关联的信息。
如果time_sel在FPGA上的时钟上升沿之前发生变化,则在时钟边沿发生之前没有时间来改变time_o。
纠正这一点可能需要重新考虑不同时钟如何相互作用,以及如何安全地处理它们。
在原帖中查看解决方案
举报

姜雨孜

2019-8-9 10:23:28
你能举一个“完全不稳定”的例子吗?
只要设计满足时序(并且正确指定时序),就可以保证信号足够稳定以供芯片使用。
对于它的价值,几乎每个FPGA设计都在每种类型的FPGA上使用大量的组合(即时间无关)逻辑 - 从XC2000到Virtex Ultrascale +。
由于所有这些都可以正常工作,我的猜测是你的代码中存在导致问题的东西。
显而易见的原因是:
(1)错误指定的时序(或忽略的时序故障)。
在几MHz时,很难失败计时,所以你可以在很大程度上忘记它。
然而,在200MHz时,你将会进入一个在Spartan 6上获得正确的时机确实很重要的地区。
(2)没有注意时钟域。
例如,如果time1_r和time2_r来自FPGA振荡器,而time_sel来自摄像机,那么您实际上并没有任何关于它们如何相互关联的信息。
如果time_sel在FPGA上的时钟上升沿之前发生变化,则在时钟边沿发生之前没有时间来改变time_o。
纠正这一点可能需要重新考虑不同时钟如何相互作用,以及如何安全地处理它们。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分