default:...
endcase
end
第三个。三段式(多段式)。简单描述就是将第三段的输出,在分为多段。
举例:(我不知道我这么写例子是否恰当,只能表达一个意思吧)
always @ (posedge clk or negedge rst_n)
case (next_state)
S1:
out1 <= 1'b1;
out2 <= 1'b0;
S2:
out2 <= 1'b0;
out2 <= 1'b1;
default:...
endcase
end
-------------------------------------------------------------------
always @ (posedge clk or negedge rst_n)
case (next_state)
S1:
if (x)
out3 <= 1'b0;
else
out3 <=1'b1;
S2:
if (y)
out3 <= 1'b0;
else
out3 <=1'b1;
default:...
endcase
end
第四个。状态机的拆分,讲连续变化的状态机,从大的状态机里面拿出来。我只能这么说,没办法举例子了。这里涉及的编程思想也比较多了,没法描述但是要有这个思想。
第五个。独热码好像有时候也不够稳定。你可以使用fifo来做状态缓存。当然这里只是理论概念,因为我还没写过,三段式,独热码,程序拆分后,还是不稳定的程序。但是如果以上内容你都做了,速度和稳定性还不够,你可以考虑的。主要的想法是这样的,fifo在多时钟域都可以良好的切换,就说明它的亚稳态现象很低,为什么状态机不稳定,就是对状态采样的时候,出现的问题。所以,它应该能做到更好的效果。