遇到状态机跳转不正常
在state_idle 状态时,满足g_trig_dsb为1 ,但并不跳转至state_alone。
state_idle: begin
if(g_trig_dsb) begin
next_state = state_alone;
end
if (~chi_prepack_fifo_empty||~chq_prepack_fifo_empty) begin
next_state = state_global;
end
else begin
next_state = state_idle;
end
end
调试良久,发现忘记else if。致使之后判断再次生效。
因此应先排查if else 语句是否正确。
state_idle: begin
if(g_trig_dsb) begin
next_state = state_alone;
end
**else** if (~chi_prepack_fifo_empty||~chq_prepack_fifo_empty) begin
next_state = state_global;
end
else begin
next_state = state_idle;
end
end