本人刚入门FPGA不久,请教verilog大神一个关于状态机的问题
一种verilog常用状态机的写法是always @(posedge clk, negedge reset)
begin
if(!reset )begin
current_state <=state_idle;
end else begin
current_state <= next_state;
end
end
always @(*)
begin
next_state =current_state ;
case(current_state )
state1:
case(in)
in1: //do something
in2: //do something
state2:
case(in)
in1: //do something
in2: //do something
endcase
end
这里我有一个问题是第一段代码中,current_state 和next_state都是idle而且输出in也没有更新的情况下,第一段中的 current_state <= next_state;会引起第二段的执行吗?
比如输入in是一个空/满的标志,根据这个标志来决定内部做一些事情,但是可能存在外设先工作,FPGA刚工作in已经为满标志了,如果我提的问题结果是没有执行,岂不是FPGA还是一直处于等待之中???
非常感谢
本文来自论坛,点击查看完整帖子内容。