hello friends....
I am providing u verilog code for candy vending machine with test bench.
I am providing u verilog code for candy vending machine with test bench.
CANDY MACHINE module candy(d,n,q, reset, clk, y); output reg y; input d,n,q; //n=5,d=10,q=25; input clk; input reset; reg [2:0] cst, nst; parameter S0 = 3'b000, S1 = 3'b001, S2 = 3'b010, S3 = 3'b100, S4 = 3'b101, S5 = 3'b110, S6 = 3'b111; always @(cst or d or n or q) begin case (cst) S0: if (n== 1'b1 && d==1'b0 && q==1'b0) begin nst = S1; y=1'b0; end else if(n== 1'b0 && d==1'b1 && q==1'b0) begin nst=S2; y=1'b0; end else if(n== 1'b0 && d==1'b0 && q==1'b1) begin nst=S5; y=1'b0; end else begin nst = cst; y=1'b0; end S1: if (n== 1'b1 && d==1'b0 && q==1'b0) begin nst = S2; y=1'b0; end else if(n== 1'b0 && d==1'b1 && q==1'b0) begin nst=S3; y=1'b0; end else if(n== 1'b0 && d==1'b0 && q==1'b1) begin nst=S6; y=1'b0; end else begin nst = cst; y=1'b0; end S2:if (n== 1'b1 && d==1'b0 && q==1'b0) begin nst = S3; y=1'b0; end else if(n== 1'b0 && d==1'b1 && q==1'b0) begin nst=S4; y=1'b0; end else if(n== 1'b0 && d==1'b0 && q==1'b1) begin nst=S0; y=1'b1; end else begin nst = cst; y=1'b0; end S3: if (n== 1'b1 && d==1'b0 && q==1'b0) begin nst = S4; y=1'b0; end else if(n== 1'b0 && d==1'b1 && q==1'b0) begin nst=S5; y=1'b0; end else if(n== 1'b0 && d==1'b0 && q==1'b1) begin nst=S0; y=1'b1; end else begin nst = cst; y=1'b0; end S4: if (n== 1'b1 && d==1'b0 && q==1'b0) begin nst = S5; y=1'b0; end else if(n== 1'b0 && d==1'b1 && q==1'b0) begin nst=S6; y=1'b0; end else if(n== 1'b0 && d==1'b0 && q==1'b1) begin nst=S0; y=1'b1; end else begin nst = cst; y=1'b0; end S5: if (n== 1'b1 && d==1'b0 && q==1'b0) begin nst = S6; y=1'b0; end else if(n== 1'b0 && d==1'b1 && q==1'b0) begin nst=S0; y=1'b1; end else if(n== 1'b0 && d==1'b0 && q==1'b1) begin nst=S0; y=1'b1; end else begin nst = cst; y=1'b0; end S6: if (n== 1'b1 && d==1'b0 && q==1'b0) begin nst =S0; y=1'b1; end else if(n== 1'b0 && d==1'b1 && q==1'b0) begin nst=S0; y=1'b1; end else if(n== 1'b0 && d==1'b0 && q==1'b1) begin nst=S0; y=1'b1; end else begin nst = cst; y=1'b0; end default: nst = S0; endcase end always@(posedge clk) //or posedge reset) begin if (reset) cst <= S0; else cst <= nst; end endmodule TEST BENCH module candy_tb; reg n,d,q,clk,reset; wire y; candy m1(n,d,q,reset, clk, y); initial begin reset=0 ;clk=0;n=0;q=0;d=0; $monitor($time, , ,"c=%b",clk,,"y=%b",y,,"r=%b",reset,,"d=%b",d,,"n=%b",n,,"q=%b",q); #10 d=0;n=1;q=0; #10 d=1;n=0;q=0; #10 d=1;n=0;q=0; #10 d=0;n=1;q=0; #10 d=0;n=1;q=0; #10 d=0;n=1;q=0; #10 d=0;n=1;q=0; #10 d=0;n=1;q=0; #10 d=0;n=0;q=0; end always #5 clk=~clk; initial #100 $finish ; endmodule

Could you please explain the output
ReplyDeleteIt is very simple. You can consider n = $5 ,d =$10 ,q=$25 . here three input available so 7 state will possible. Candy will generate on >=$35 . Now you have to start S0 state and check three condition of n,d,and q and check what will be next state.Every state tx. happen at $5. Ex. First you are in state S0 .now u enter n = $5 then next state will be S1. Now u enter q =$25 so next state will be S6( $25 means 5 state ahead).now u will enter n or q or d then output y = 1 and next state is reset to S0. Same way every scenario u can consider.
DeleteI made state diagram above. So it will be easy for u to understand.
Deletecould you please send verilog code for vending 4 items like candy,coffee,ice cream,coke.
DeleteGreat, Thanks for sharing your knowledge with us...
ReplyDeleteThe information is very useful for me...
can you help me ... how i want to do verilog coding of microwave that function when you insert money... it will be a help to me if you can help me
ReplyDeletecan u forward if u have plz
ReplyDeletewhat is cst and nst?
ReplyDeletedude are you still here, you didn't reply since 2017 did corona affected you sir???
ReplyDeletecan you please make a coke state-machine for me if you are allright?(we need 3 inputs, 3 coins 1 5 10, and the price is 3 and we need to give change also, and we have only 1 drink in our machine(coke)) Thank you very much and God bless you sir.!!!
Deletewe need it by tomorrow, can you move faster sir?
DeleteSir we are actually in a hurry, can you help us???? ^.^
DeleteI'm not gonna pass this subject at university if I am not gonna present this project by tomorrow can you please help us??? ^.^
does ur code explains about the balance giving ot by the vending machine
ReplyDeleteChoosing vending services clear Humble means experiencing reliable, modern, and efficient vending solutions customized for local business needs.
ReplyDelete