Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 03/09/2021 09:39:56 AM
- // Design Name:
- // Module Name: coffee_moore
- // Project Name:
- // Target Devices:
- // Tool Versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module coffee_moore(
- input clk,
- input insert,
- input reset,
- input [1:0] coins,
- output reg coffee = 0,
- output reg [2:0] state_display
- );
- localparam state_initial = 3'b000,
- state_1 = 3'b001,
- state_2 = 3'b010,
- state_3 = 3'b011,
- state_4 = 3'b100;
- reg [2:0] CurrentState = state_initial;
- reg [2:0] NextState = state_initial;
- reg previous_insert = 0;
- always @(*) begin
- if(insert!=previous_insert || reset) begin
- previous_insert <= insert;
- if(insert || reset) begin
- case(CurrentState)
- state_initial: begin
- if(coins==2'b10) begin NextState = state_1;
- //coffee <= 1'b0;
- //state_display <= state_1;
- end
- if(coins==2'b01) begin NextState = state_2;
- //coffee <= 1'b0;
- //state_display <= state_2;
- end
- if(coins==2'b00) begin NextState = state_initial;
- //coffee <= 1'b0;
- //state_display <= state_initial;
- end
- if(reset) begin NextState = state_initial;
- //coffee <= 1'b0;
- //state_display <= state_initial;
- end
- end
- state_1: begin
- if(coins==2'b10) begin NextState = state_2;
- //coffee <= 1'b0;
- //state_display <= state_2;
- end
- if(coins==2'b01) begin NextState = state_3;
- //coffee <= 1'b1;
- //state_display <= state_3;
- end
- if(coins==2'b00) begin NextState = state_1;
- //coffee <= 1'b0;
- //state_display <= state_1;
- end
- if(reset) begin NextState = state_initial;
- //coffee <= 1'b0;
- //state_display <= state_initial;
- end
- end
- state_2: begin
- if(coins==2'b10) begin NextState = state_3;
- //coffee <= 1'b1;
- //state_display <= state_3;
- end
- if(coins==2'b01) begin NextState = state_4;
- //coffee <= 1'b1;
- //state_display <= state_4;
- end
- if(coins==2'b00) begin NextState = state_2;
- //coffee <= 1'b0;
- //state_display <= state_2;
- end
- if(reset) begin NextState = state_initial;
- //coffee <= 1'b0;
- //state_display <= state_initial;
- end
- end
- state_3: begin
- if(coins==2'b10) begin NextState = state_1;
- //coffee <= 1'b0;
- //state_display <= state_1;
- end
- if(coins==2'b01) begin NextState = state_2;
- //coffee <= 1'b0;
- //state_display <= state_2;
- end
- if(coins==2'b00) begin NextState = state_initial;
- //coffee <= 1'b0;
- //state_display <= state_initial;
- end
- if(reset) begin NextState = state_initial;
- //coffee <= 1'b0;
- //state_display <= state_initial;
- end
- end
- state_4: begin
- if(coins==2'b10) begin NextState = state_2;
- //coffee <= 1'b0;
- //state_display <= state_2;
- end
- if(coins==2'b01) begin NextState = state_3;
- //coffee <= 1'b1;
- //state_display <= state_3;
- end
- if(coins==2'b00) begin NextState = state_1;
- //coffee <= 1'b0;
- //state_display <= state_1;
- end
- if(reset) begin NextState = state_initial;
- //coffee <= 1'b0;
- //state_display <= state_initial;
- end
- end
- default begin
- NextState = state_initial;
- //coffee <= 1'b0;
- //state_display <= state_initial;
- end
- endcase
- CurrentState = NextState;
- end
- end
- end
- always@(posedge clk) begin
- case(CurrentState)
- state_initial: begin
- state_display <= CurrentState;
- coffee <= 1'b0;
- end
- state_1: begin
- state_display <= CurrentState;
- coffee <= 1'b0;
- end
- state_2: begin
- state_display <= CurrentState;
- coffee <= 1'b0;
- end
- state_3: begin
- state_display <= CurrentState;
- coffee <= 1'b1;
- end
- state_4: begin
- state_display <= CurrentState;
- coffee <= 1'b1;
- end
- endcase
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement