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
ReplyDelete