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
"Our Prices Start at $11.99. As Our First Client, Use Coupon Code GET15 to claim 15% Discount This Month!!"
![](https://courseworkgeeks.com/wp-content/uploads/2018/08/order_now-1.png)