可乐机:四元可乐,只投一元硬币。投四元后出可乐,并回到初始状态。
流程图:
module state (
input wire sclk ,
input wire rst_n ,
input wire money ,
output reg coke
);
reg [3:0] state ;
parameter IDLE = 4'b0001 ;
parameter ONE = 4'b0010 ;
parameter TWO = 4'b0100 ;
parameter THREE = 4'b1000 ;
always@(posedge sclk or negedge rst_n)
if(!rst_n)
state <= IDLE ;
else case(state)
IDLE :
if(money==1)
state <= ONE ;
else
state <= IDLE ;
ONE :
if(money==1)
state <= TWO ;
else
state <= ONE ;
TWO :
if(money==1)
state <= THREE ;
else
state <= TWO ;
THREE :
if(money==1)
state <= IDLE ;
else
state <= THREE ;
default : state <= IDLE ;
endcase
always@(posedge sclk or negedge rst_n)
if(!rst_n)
coke <= 0 ;
else if(state==THREE&&money==1)
coke <= 1 ;
else
coke <= 0 ;
endmodule