This program is in verilog and need help to get it working
correctly. This is the code i have so far. Please help.
Simple testbench would be great. Thanks\
'define vend_a_drink {D,dispense,collect} = {IDLE,2'b11};
module drink_machine(nickel_in, dime_in, quarter_in,
collect, nickel_out, dime_out,
dispense, reset, clk) ;
parameter IDLE=0,FIVE=1,TEN=2,TWENTY_FIVE=3,
FIFTEEN=4,THIRTY=5,TWENTY=6,OWE_DIME=7;
input nickel_in, dime_in, quarter_in, reset, clk;
output collect, nickel_out, dime_out, dispense;
reg collect, nickel_out, dime_out, dispense;
reg [2:0] D, Q; /* state */
// synopsys state_vector Q
always @ ( nickel_in or dime_in or quarter_in or reset )
begin
nickel_out = 0;
dime_out = 0;
dispense = 0;
collect = 0;
if ( reset ) D = IDLE;
else begin
D = Q;
case ( Q )
IDLE:
if (nickel_in) D = FIVE;
else if (dime_in) D = TEN;
else if (quarter_in) D = TWENTY_FIVE;
FIVE:
if(nickel_in) D = TEN;
else if (dime_in) D = FIFTEEN;
else if (quarter_in) D = THIRTY;
TEN:
if (nickel_in) D = FIFTEEN;
else if (dime_in) D = TWENTY;
else if (quarter_in) 'vend_a_drink;
TWENTY_FIVE:
if( nickel_in) D = THIRTY;
else if (dime_in) 'vend_a_drink;
else if (quarter_in) begin
'vend_a_drink;
nickel_out = 1;
dime_out = 1;
end
FIFTEEN:
if (nickel_in) D = TWENTY;
else if (dime_in) D = TWENTY_FIVE;
else if (quarter_in) begin
'vend_a_drink;
nickel_out = 1;
end
THIRTY:
if (nickel_in) 'vend_a_drink;
else if (dime_in) begin
'vend_a_drink;
nickel_out = 1;
end
else if (quarter_in) begin
'vend_a_drink;
dime_out = 1;
D = OWE_DIME;
end
TWENTY:
if (nickel_in) D = TWENTY_FIVE;
else if (dime_in) D = THIRTY;
else if (quarter_in) begin
'vend_a_drink;
dime_out = 1;
end
OWE_DIME:
begin
dime_out = 1;
D = IDLE;
end
endcase
end
end
always @ (posedge clk ) begin
Q = D;
end
endmodule
No Answer is Posted For this Question
Be the First to Post Answer
Can we put breakpoint inside isr?
How can to check the working of a sensor deployed in a project?
Please explain what is interrupt latency? How can you reduce it?
Why we use embedded systems?
What is a semaphore? What are the different types of semaphore?
What is priority inheritance?
Tell me what is the need for dmac in es?
What are the different types of embedded systems?
Tell me what are the qualifiers in c?
Explain how does combination of functions reduce memory requirements in embedded systems?
Tell me how many types of ipc mechanism you know?
Is count down_to_zero loop better than count_up_loops?