What is an FSM in the context of a vending machine?
FSM stands for Finite State Machine. It is a model used to design the control logic of the vending machine, managing states like waiting for coins, selecting items, dispensing, and returning change.
Click to reveal answer
beginner
In VHDL, how do you represent states in a vending machine FSM?
States are usually represented using an enumerated type in VHDL, for example: type state_type is (IDLE, COIN_INSERTED, DISPENSE, CHANGE_RETURN); This helps clearly define each state the machine can be in.
Click to reveal answer
beginner
What triggers state transitions in a vending machine FSM?
State transitions are triggered by inputs such as coin insertion, item selection, or completion of dispensing. These inputs cause the FSM to move from one state to another.
Click to reveal answer
intermediate
Why is a clock signal important in a VHDL FSM for a vending machine?
The clock signal synchronizes state changes. It ensures that the FSM updates its state only at specific times, avoiding unpredictable behavior.
Click to reveal answer
beginner
What is the role of a reset signal in a vending machine FSM?
The reset signal initializes the FSM to a known state, usually the IDLE state, so the vending machine starts fresh and predictable after power-up or error.
Click to reveal answer
Which VHDL construct is commonly used to define the states of a vending machine FSM?
AEnumerated type
BInteger variable
CArray
DRecord
✗ Incorrect
States are best represented as an enumerated type for clarity and ease of use.
What input typically causes the vending machine FSM to move from IDLE to COIN_INSERTED state?
AItem selection
BReset signal
CDispense complete
DCoin insertion
✗ Incorrect
Inserting a coin triggers the transition from IDLE to COIN_INSERTED.
Why do we use a clock signal in the FSM process?
ATo reset the machine
BTo synchronize state changes
CTo input coins
DTo select items
✗ Incorrect
The clock signal ensures state changes happen in a controlled, timed manner.
What happens when the reset signal is activated in the vending machine FSM?
AFSM goes to IDLE state
BFSM dispenses item
CFSM waits for coin
DFSM returns change
✗ Incorrect
Reset initializes the FSM to the IDLE state.
Which state would the vending machine FSM enter after dispensing an item?
ACOIN_INSERTED
BIDLE
CCHANGE_RETURN
DERROR
✗ Incorrect
After dispensing, the machine usually returns change before going back to IDLE.
Describe the main states and transitions of a vending machine FSM in VHDL.
Think about what happens when you insert a coin, select an item, and get change.
You got /5 concepts.
Explain how clock and reset signals control the behavior of a vending machine FSM in VHDL.
Consider how the machine knows when to change states and how it starts fresh.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of a vending machine FSM in VHDL?
easy
A. To perform complex mathematical calculations
B. To control the sequence of accepting coins and dispensing items
C. To store large amounts of data permanently
D. To display graphics on a screen
Solution
Step 1: Understand FSM role in vending machine
The FSM (Finite State Machine) controls the order of operations like accepting coins and dispensing items.
Step 2: Compare options to FSM purpose
Only To control the sequence of accepting coins and dispensing items describes controlling the sequence of actions, which matches FSM's role.
Final Answer:
To control the sequence of accepting coins and dispensing items -> Option B
Quick Check:
FSM controls sequence = To control the sequence of accepting coins and dispensing items [OK]
Hint: FSM controls steps in process flow, not data storage or math [OK]
Common Mistakes:
Confusing FSM with memory storage
Thinking FSM does math or graphics
Ignoring the sequence control aspect
2. Which VHDL statement correctly declares a state type for a vending machine FSM?
easy
A. signal state : integer := 0;
B. variable state : std_logic_vector(1 downto 0);
C. type state_type is (IDLE, COIN_INSERTED, DISPENSE);
D. constant state : boolean := true;
Solution
Step 1: Identify correct state type declaration
States in FSM are usually declared as an enumerated type listing all states.
Step 2: Check options for enumerated type
type state_type is (IDLE, COIN_INSERTED, DISPENSE); declares a type with named states, which is correct for FSM states.
Final Answer:
type state_type is (IDLE, COIN_INSERTED, DISPENSE); -> Option C
Quick Check:
State type enum = type state_type is (IDLE, COIN_INSERTED, DISPENSE); [OK]
Hint: FSM states use enumerated types, not integers or booleans [OK]
Common Mistakes:
Using integer or boolean instead of enumerated type
Confusing signal and type declarations
Using variable instead of type for states
3. Given this VHDL snippet inside a vending machine FSM process:
case state is
when IDLE =>
if coin = '1' then
next_state <= COIN_INSERTED;
else
next_state <= IDLE;
end if;
when COIN_INSERTED =>
next_state <= DISPENSE;
when DISPENSE =>
next_state <= IDLE;
end case;
What will be the next state if current state is IDLE and coin = '0'?
medium
A. COIN_INSERTED
B. Undefined
C. DISPENSE
D. IDLE
Solution
Step 1: Analyze the IDLE state condition
If coin = '1', next_state is COIN_INSERTED; else next_state remains IDLE.
Step 2: Apply coin = '0' condition
Since coin = '0', the else branch applies, so next_state stays IDLE.
Final Answer:
IDLE -> Option D
Quick Check:
coin '0' in IDLE = next_state IDLE [OK]
Hint: Check coin input condition in IDLE state carefully [OK]
Common Mistakes:
Assuming coin '0' moves to COIN_INSERTED
Confusing next_state with current state
Ignoring else branch in if statement
4. Identify the error in this VHDL FSM process snippet for a vending machine:
process(clk)
begin
if rising_edge(clk) then
case state is
when IDLE =>
if coin = '1' then
state <= COIN_INSERTED;
end if;
when COIN_INSERTED =>
state <= DISPENSE;
when DISPENSE =>
state <= IDLE;
end case;
end if;
end process;
medium
A. No reset condition for state initialization
B. State variable should be a signal, not variable
C. No default case in case statement
D. Missing else branch in IDLE state causes latch
Solution
Step 1: Check for reset condition in FSM process
FSM processes usually include a reset to initialize the state at start.
Step 2: Identify missing reset
This code lacks any reset signal or condition to set initial state, which is an error.
Final Answer:
No reset condition for state initialization -> Option A
Quick Check:
Missing reset = No reset condition for state initialization [OK]
Hint: Always include reset to set initial FSM state [OK]
Common Mistakes:
Thinking else branch missing causes latch in synchronous process
Confusing signal and variable usage
Ignoring importance of reset in FSM
5. You want to extend a vending machine FSM to accept two coin types: 5 cents and 10 cents. The FSM should dispense an item when total inserted coins reach 15 cents or more. Which approach correctly updates the FSM to handle this?
hard
A. Add a coin_value input and a coin_total signal; update coin_total on each coin and transition to DISPENSE when coin_total >= 15
B. Use two separate FSMs for 5 and 10 cent coins and combine outputs
C. Ignore coin values and dispense after 3 coins inserted
D. Add a timer to dispense item after fixed time regardless of coins
Solution
Step 1: Understand requirement to track coin values
We must track total coin value inserted, not just count coins.
Step 2: Choose approach to accumulate coin values
Add a coin_value input and a coin_total signal; update coin_total on each coin and transition to DISPENSE when coin_total >= 15 uses a coin_value input and coin_total signal to sum coins and trigger dispense when total >= 15, which fits requirement.
Final Answer:
Add a coin_value input and a coin_total signal; update coin_total on each coin and transition to DISPENSE when coin_total >= 15 -> Option A
Quick Check:
Track coin values and total = Add coin_value and coin_total, dispense at 15+ [OK]
Hint: Sum coin values, dispense when total reaches target [OK]
Common Mistakes:
Using separate FSMs instead of one with coin total
Counting coins instead of summing values
Dispensing by time, not coin total
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.