soda水1块钱,硬币有五毛和一块两种:
soda水1块钱,硬币有五毛和一块两种:
module soda( input clk, input rst_n, input [1:0]din, //投币 【0】:五毛 【1】:一块 output reg[1:0]dout //给水 【0】:给水 【1】:找钱 ); parameter idle=2'b0; parameter st5 =2'b01; parameter st10=2'b10; parameter st15=2'b11; reg [1:0]cur_state; reg [1:0]nxt_state; always@(posedge clk or negedge rst_n) if(~rst_n) cur_state<=idle; else cur_state<=nxt_state; always@(*) begin case (cur_state) idle: begin if(din==2'b01) nxt_state=st5; else if(din==2'b10) nxt_state=st10; end st5: begin if(din==2'b01) nxt_state=st10; else if(din==2'b10) nxt_state=st15; end st10: begin nxt_state=idle; end st15: begin nxt_state=idle; end default:; endcase end always@(posedge clk or negedge rst_n) if(~rst_n) dout<=2'b00; else if(nxt_state==st10) dout<=2'b00; else if(nxt_state==st15) dout<=2'b11; endmodule