This example shows how to use Mealy semantics to model a vending machine.
Model a Vending Machine by Using Mealy Semantics
Logic of the Mealy Vending Machine
In this example, the vending machine requires 15 cents to release a can of soda. The purchaser can insert a nickel or a dime, one at a time, to purchase the soda. The chart behaves like a Mealy machine because its output
soda
depends on both the input coin and current state:
When initial state
got_0
is active. No coin has been received or no coins are left.
The input from the button on the remote control (G) will be processed by a one-shot circuit (given to you in the provided Logisim circuit), which happens to be a finite state machine. This circuit prevents the G input from staying true for more than one clock cycle, even if.
-
If a nickel is received (
coin 1
), outputsoda
remains 0, but stategot_nickel
becomes active. -
If a dime is received (
coin 2
), outputsoda
remains 0, but stategot_dime
becomes active. -
If input coin is not a dime or a nickel, state
got_0
stays active and no soda is released (outputsoda = 0
).
In active state
got_nickel
. A nickel was received.
-
If another nickel is received (
coin 1
), stategot_dime
becomes active, but no can is released (soda
remains at 0). -
If a dime is received (
coin 2
), a can is released (soda = 1
), the coins are banked, and the active state becomesgot_0
because no coins are left. -
If input coin is not a dime or a nickel, state
got_nickel
stays active and no can is released (outputsoda = 0
).
In active state
got_dime
. A dime was received.
-
If a nickel is received (
coin 1
), a can is released (soda = 1
), the coins are banked, and the active state becomesgot_0
because no coins are left. -
If a dime is received (
coin 2
), a can is released (soda = 1
), 15 cents are banked, and the active state becomesgot_nickel
because a nickel (change) is left. -
If input coin is not a dime or a nickel, state
got_dime
stays active and no can is released (outputsoda = 0
).
Design Rules in Mealy Vending Machine
This example of a Mealy vending machine illustrates these Mealy design rules:
-
The chart computes outputs in condition actions.
-
There are no state actions or transition actions.
-
The chart defines chart inputs (
coin
) and outputs (soda
). -
The value of the input
coin
determines the output: whether or not soda is released.