状态机描述的是一种状态跳转,FPG现在使用的有一段式状态机,两段式状态机,还有三段式状态机,下面分别介绍一下这三种状态机设计。
状态机可以分为两类:
Mealy状态机:时序逻辑的输出不仅取决于当前状态,还与输入有关。
Moore状态机:时序逻辑的输出只与当前状态有关。
时序与稳定性:在时钟脉冲的有效边沿触发后,Moore状态机的输出经过有限的逻辑门延迟即可稳定,并保持到下一个时钟周期 。即使输入信号在周期内发生变化,输出仍维持不变,确保了时序逻辑电路的可靠性。
输入输出隔离:通过同步输出机制,Moore状态机将输入信号与输出信号完全隔离。这种设计避免了输入变化直接干扰输出,适用于需要严格时序控制的场景,如数字信号处理与硬件控制模块。
1.一段式状态机
整个状态机写到一个 always 模块里面。在该模块中既描述状态转移,又描述状态的输入和输出 。
下面代码描述了一个简单的状态跳转,从1->2->3->4的状态跳转。
简单的状态转移可以使用一段式状态机。
module FSM(
input wire clk,
input wire rst,
input wire [2:0] din,
output reg [2:0] dout
);
parameter IDLE = 3'b000;
parameter ONE = 3'b001;
parameter TWO = 3'b010;
parameter THREE = 3'b011;
parameter END = 3'b100;
always@(podedge clk or negdedge rst)begin
if(!rst)begin