Engineering Homework Help

Engineering Homework Help. help with Verilog and basys 3 board

I am implementing a vending machine using Verilog, the only thing that I can’t get it to work is the board, can someone help editing the code and make it work on basys3 board?

this is my code:

`timescale 1ns / 1ps

module VendingMachine( input clk,

input btnC,

input [1:0] coin,

input cancel,

output [3:0] an,

output reg [2:0] led,

output reg [6:0] seg);

wire rst = 1’b1;

wire rstout;

reg [3:0] CState, NState;

reg [10:0] waitingTime;

parameter idle = 4’b0000; //state0 = 0

parameter FiveC = 4’b0001; //state1 = 5 cents

parameter TenC = 4’b0010; //state2 = 10 cents

parameter FifteenC = 4’b0011; //state3 = 15 cents

parameter TwentyC = 4’b0100; //state4 = 20 cents

parameter TwentyFiveC = 4’b0101; //state5 = 25 cents

parameter ThirtyC = 4’b0110; //state6 = 30 cents

parameter ThirtyFiveC = 4’b0111; //state7 = 35 cents

parameter FourtyC = 4’b1000; //state8 = 40 cents

parameter FourtyFiveC = 4’b1001; //state9 = 45 cents

// State Register

always @ (posedge clk or posedge rstout) begin

if (rstout) CState <= idle;

else CState <= NState;

end

//Next state logic

always @ (posedge clk)begin

if(btnC == 1) begin

CState = 0;

NState = 0;

led = 2’b00;

seg = 7’b0000001;

end

else CState <= NState;

end

always @ (coin) begin

NState <= 0; //initialay zero

CState <= NState;

case(CState)

idle: if(coin == 2’b00) begin

NState <= idle;

seg <= 7’b0000001;

led <= 2’b00; end

else if(coin==2’b01) begin

NState <= FiveC;

seg <= 7’b0000001;

led <= 2’b01; end

else if(coin==2’b10) begin

NState <= TenC;

seg <= 7’b0000001;

led <= 2’b10; end

else if(coin==2’b11) begin

NState <= TwentyFiveC;

seg <= 7’b0000001;

led <= 2’b11; end

FiveC: if(coin== 2’b00) begin

NState <= FiveC;

seg <= 7’b0000001;

led <= 2’b00; end

else if(coin==2’b01) begin

NState <= TenC;

seg <= 7’b0000001;

led <= 2’b01; end

else if(coin==2’b10) begin

NState <= FifteenC;

seg <= 7’b0000001;

led <= 2’b10; end

else if(coin==2’b11) begin

NState <= ThirtyC;

seg <= 7’b0000001;

led <= 2’b11; end

TenC: if(coin== 2’b00) begin

NState <= TenC;

seg <= 7’b0000001;

led <= 2’b00; end

else if(coin==2’b01) begin

NState <= FifteenC;

seg <= 7’b0000001;

led <= 2’b01; end

else if(coin==2’b10)begin

NState <= TwentyC;

seg <= 7’b0000001;

led <= 2’b10; end

else if(coin==2’b11) begin

NState <= ThirtyFiveC;

seg <= 7’b0000001;

led <= 2’b11; end

FifteenC: if(coin== 2’b00) begin

NState <= FifteenC;

seg <= 7’b0000001;

led <= 2’b00; end

else if(coin==2’b01) begin

NState <= TwentyC;

seg <= 7’b0000001;

led <= 2’b01; end

else if(coin==2’b10) begin

NState <= TwentyFiveC;

seg <= 7’b0000001;

led <= 2’b10; end

else if(coin==2’b11) begin

NState <= FourtyC;

seg <= 7’b0000001;

led <= 2’b11; end

TwentyC: if(coin==2’b00) begin

NState <= TwentyC;

seg <= 7’b0000001;

led <= 2’b00; end

else if(coin==2’b01) begin

NState <= TwentyFiveC;

seg <= 7’b0000001;

led <= 2’b01; end

else if(coin==2’b10) begin

NState <= ThirtyC;

seg <= 7’b0000001;

led <= 2’b10; end

else if(coin==2’b11) begin

NState <= FourtyFiveC;

seg <= 7’b0000001;

led <= 2’b11; end

TwentyFiveC: if(coin==0) begin

NState <= TwentyFiveC;

seg <= 7’b0000001;

led <= 2’b00; end

else if(coin==2’b01) begin

NState <= ThirtyC;

seg <= 7’b0000001;

led <= 2’b01; end

else if(coin==2’b10) begin

NState <= ThirtyFiveC;

seg <= 7’b0000001;

led <= 2’b10; end

else if(coin==2’b11) begin

NState <= idle; //reaches 50 cents, dispense a soda and goes back to first state

seg = 7’b1111001;

led <= 2’b11; end

ThirtyC: if(coin== 2’b00) begin

NState <= ThirtyC;

seg <= 7’b0000001;

led <= 2’b00; end

else if(coin==2’b01) begin

NState <= ThirtyFiveC;

seg <= 7’b0000001;

led <= 2’b01; end

else if(coin==2’b10) begin

NState <= FourtyC;

seg <= 7’b0000001; end

default: NState = idle;

endcase

end

assign an = 4’b1110;

endmodule

//

//

//// integer i;

//// always @ (waitingTime) begin

//// for ( i=0; i <=waitingTime; i=i+1) begin

//// if ( i == waitingTime ) begin

//// seg <= 7’b1111111;

// end

// end

// if (cancel == 1)

// begin

// NState <= idle;

// end

//end

//endmodule

please make sure u have the board before biding

Engineering Homework Help

 
"Our Prices Start at $11.99. As Our First Client, Use Coupon Code GET15 to claim 15% Discount This Month!!"