不好意思,由于代码较长,我将出错的那段贴出来<br>
<br>
RCYCAL1:<br>
begin<br>
if(rear + 1==front)<br>
Rstate <= RCYCAL1;<br>
else<br>
begin<br>
temp[rear+1] <= 16'h0010;<br>
rear <= rear + 1;<br>
if(EF)<br>
Rstate <= STATE_START;<br>
else if(empty==0)<br>
Rstate <= RCYCAL2;<br>
else <br>
Rstate <= RCYCAL3;<br>
end <br>
end <br>
<br>
temp 是我设的存储器变量,我把它做成环行数组,front,rear是两个指针,<br>
EF,empty是状态标记 ,程序的执行状况是这样的:front比rear大1,状态停留在RCYCAL1,<br>
front加1后,在下一个时钟沿往temp环行数组写数据,再根据情况转移状态<br>
前几次运行都好,状态成功转移到RCYCAL2,但突然有一次在执行完给temp写数据,rear加1后,状态变为undefined,就不走了,请大侠帮忙看看! |