集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 4394|回复: 7

状态机有问题

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

我编了一个状态机,用onehot,出现了这样一个问题,就是当某一个状态执行到时,其中的语句执行了,但状态机的状态却变为"undefined",接着就一直保持为"undefined"再也不走了,不明白为什么语句执行对了,状态改变却错了,而且我设了default状态,按理说应该可以跑回去的呀
CHA 发表于 2010-6-26 00:48:59 | 显示全部楼层
一个状态机
CHANG 发表于 2010-6-26 02:07:18 | 显示全部楼层
不好意思,由于代码较长,我将出错的那段贴出来<br>
<br>
RCYCAL1:<br>
&nbsp; &nbsp;&nbsp;&nbsp;begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(rear + 1==front)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Rstate &lt;= RCYCAL1;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;else<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;temp[rear+1] &lt;= 16'h0010;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;rear &lt;= rear + 1;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(EF)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Rstate &lt;= STATE_START;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;else if(empty==0)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Rstate &lt;= RCYCAL2;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;else <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Rstate &lt;= RCYCAL3;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;end&nbsp; &nbsp;&nbsp; &nbsp;<br>
&nbsp; &nbsp; end&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp; <br>
&nbsp;&nbsp;temp 是我设的存储器变量,我把它做成环行数组,front,rear是两个指针,<br>
EF,empty是状态标记&nbsp;&nbsp;,程序的执行状况是这样的:front比rear大1,状态停留在RCYCAL1,<br>
front加1后,在下一个时钟沿往temp环行数组写数据,再根据情况转移状态<br>
前几次运行都好,状态成功转移到RCYCAL2,但突然有一次在执行完给temp写数据,rear加1后,状态变为undefined,就不走了,请大侠帮忙看看!
CHANG 发表于 2010-6-26 02:37:15 | 显示全部楼层
你的Rstate不完整啊,光看这个可能还没有用,并不能确定是否从这个状态跑飞的.不过你这个状态机也很怪.尤其temp[rear+1]有风险.
FFT 发表于 2010-6-26 03:23:20 | 显示全部楼层
状态机每次都是运行到RCYCAL1,再向下一个状态转移时发生错误的,还有请问对环形数组操做还有其他办法吗,temp[rear+1]有什么风险?
interig 发表于 2010-6-26 04:57:50 | 显示全部楼层
呵呵,学习一下
VVC 发表于 2010-6-26 06:18:50 | 显示全部楼层
EF是什么信号?<br>
我以前遇到过一种情况:如果判断条件有z或x,状态机就会跑到0状态。
Sunlife 发表于 2015-6-17 10:58:17 | 显示全部楼层

你的Rstate不完整啊,光看这个可能还没有用,并不能确定是否从这个状态跑飞的.不过你这个状态机也很怪.尤其temp[rear+1]有风险.
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2025-5-6 16:59 , Processed in 0.066400 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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