集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 7626|回复: 13

如果状态机里的一个状态在一个时钟周期里没有执行完会怎样呢?

[复制链接]
longt 发表于 2010-6-26 01:23:43 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-11-18 16:23 编辑

如果一个状态要执行的时间超过了系统的时钟周期,那么下一个时钟周期还是重新执行这个状态吗?那么不是进入死循环了?还是接着上次没执行完的语句继续执行?还是不管这个状态有没有执行完都将执行下一个状态?
CHA 发表于 2010-6-26 01:26:16 | 显示全部楼层
状态机的状态是用时钟周期分成一段一段的,如果你说的"一个状态要执行的时间超过了一个时钟周期",那也就是在下一个时钟周期来后,仍是上一状态啊,这在状态机里是很常见的情况,<br>
比如IDLE状态,在没有触发信号来的时候,维持IDLE状态,<br>
至于是继续执行还是执行下一个状态,那就要看你的状态机的设计了
usb 发表于 2010-6-26 01:50:24 | 显示全部楼层
如果状态机里有的电路只完成一半(电路延时比较长,我用的是阻塞赋值)这时下一个时钟信号又来了,那么又要从状态机的头开始执行吗?那么不是进入死循环了,因为永远没有结束啊。还是用没有完成的地方开始呢?
FFT 发表于 2010-6-26 03:01:20 | 显示全部楼层
看是怎么设计的了,同步更新state的话就到下一个状态,如果是组合部分和时序部分分开的话i可能死循环了。
interi 发表于 2010-6-26 03:40:41 | 显示全部楼层
你可以在这个状态里加上一个flag指示,运算完成后flag有效,转到下一个状态,没有运算完的话,维持当前状态。
VVC 发表于 2010-6-26 05:10:19 | 显示全部楼层
原帖由 summerxyh 于 2007-1-26 16:40 发表<br>
你可以在这个状态里加上一个flag指示,运算完成后flag有效,转到下一个状态,没有运算完的话,维持当前状态。 不错的办法!
longtim 发表于 2010-6-26 05:35:20 | 显示全部楼层
如果一个状态要执行的时间超过了系统的时钟周期??<br>
那就把这个状态分成几个小状态行不:)
ANG 发表于 2010-6-26 06:30:14 | 显示全部楼层
可以分成几个状态来写吧
FFT 发表于 2010-6-26 06:43:39 | 显示全部楼层
时间不够就拆分啊
interi 发表于 2010-6-26 07:54:09 | 显示全部楼层
原帖由 ffffffff 于 2007-1-25 14:26 发表<br>
如果一个状态要执行的时间超过了系统的时钟周期,那么下一个时钟周期还是重新执行这个状态吗?那么不是进入死循环了?还是接着上次没执行完的语句继续执行?还是不管这个状态有没有执行完都将执行下一个状态? 如果组合逻辑延迟时间太大,那么会导致状态机时序逻辑的建立时间不足,从而导致状态机进入非法状态(触发器处于亚稳态)。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-6 17:17 , Processed in 0.066014 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表