Mealy 状态机:输出不仅取决于当前状态,还取决于输入状态。
Moore 状态机:组合逻辑的输出只取决于当前状态,而与输入状态无关。
举例 可乐机
波形
rtl代码
module simple_fsm
(
input wire sys_clk,
input wire sys_rst_n,
input wire pi_money,
output reg po_cola
);
//独热码 三个状态三个位宽
parameter idle=3'b001;
parameter one=3'b010;
parameter two=3'b100;
reg [2:0] state;
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n==1'b0)
state <= idle;
else case(state)
idle: if(pi_money==1'b1)
state <= one;
else
state <= idle;
one: if(pi_money==1'b1)
state <= two;
else
state <= one;
two: if(pi_money==1'b1)
state <= idle;
else
state <= two;
default:state <= idle;
endcase
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n==1'b0)
po_cola <= 1'b0;
else if(state==two && pi_money==1'b1)
po_cola <= 1'b1;
else
po_cola <= 1'b0;
endmodule