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

Post New Answer

More Embedded Systems AllOther Interview Questions

What is the purpose of using critical sections?

0 Answers  


Why embedded system is useful?

0 Answers  


What kinds of problems can you hit with locking model? And a lockless model?

0 Answers  


Describe, in as much detail as you think is relevant, as deeply as you can, what happens when I type "cnn.com" into a browser and press "go".

0 Answers  


Tell me what are the different types of customizations that is used with the “volatile” keyword?

0 Answers  






Tell me what are the different types of buses used by the embedded systems?

0 Answers  


Tell me what happens when recursive functions are declared inline?

0 Answers  


Can we use semaphore or mutex or spin lock in interrupt context in linux kernel ?

3 Answers   Broadcom,


If you've integrated new software in an existing system, tell us how you evaluated and identified the requirements for this new technology.

0 Answers  


Why is it better to use multi-threading polling then single threading model?

0 Answers  


Tell me can a variable be both const and volatile?

0 Answers  


What do you do to stay abreast of the latest technologies and tools?

0 Answers  


Categories