The problem is to design a Nabs dispenser. The Nabs machine has two inputs, x and y, which encode the following information:
| x | y | Meaning |
|---|---|---|
| 0 | 0 | nothing is happening |
| 0 | 1 | nickel inserted |
| 0 | 1 | dime inserted |
| 1 | 1 | Nabs button pushed |
There is a single output, z. When z is 0, the machine produces nothing. When z is 1, the machine outputs a package of Nabs.
Assume that Nabs cost 15 cents. Nabs are returned only if the Nabs button is pushed after 15 cents are deposited. Assume that this %!@%$# machine returns no change and just keeps any money you deposit over 15 cents.
Draw the finite state machine for the Nabs dispenser below.
| x | y | A | B | z | A | B | jA | kA | jB | kB |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ? | 0 | ? |
| 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | ? | ? | 0 |
| 0 | 0 | 1 | 0 | 0 | 1 | 0 | ? | 0 | 0 | ? |
| 0 | 0 | 1 | 1 | 0 | 1 | 1 | ? | 0 | ? | 0 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | ? | 1 | ? |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | ? | ? | 1 |
| 0 | 1 | 1 | 0 | 0 | 1 | 1 | ? | 0 | 1 | ? |
| 0 | 1 | 1 | 1 | 0 | 1 | 1 | ? | 0 | ? | 0 |
| 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | ? | 0 | ? |
| 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | ? | ? | 0 |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 | ? | 0 | 1 | ? |
| 1 | 0 | 1 | 1 | 0 | 1 | 1 | ? | 0 | ? | 0 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | ? | 0 | ? |
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | ? | ? | 0 |
| 1 | 1 | 1 | 0 | 0 | 1 | 0 | ? | 0 | 0 | ? |
| 1 | 1 | 1 | 1 | 1 | 0 | 0 | ? | 1 | ? | 1 |
These Boolean functions were optimized by espresso. Two optimizations were performed: one for the implementation with D flip-flops and another for the implementation with JK flip-flops.
| z = Sigma(15) | |
| z = x y A B | |
| dA = Sigma(2, 3, 5, 6, 7, 8, 9, 10, 11, 14) | |
| dA = x' y B + A B' + x y' + x' A B | |
| dB = Sigma(1, 3, 4, 6, 7, 9, 10, 11,13) | |
| dB = x' y B' + x A' B + x y' A + x' A B + y' B | |
| jA = Sigma(5, 8, 9) | jA = d(2, 3, 6, 7, 10, 11, 14, 15) |
| jA = x' y A' B + x y' | |
| jB = Sigma(4, 6, 10) | |
| jB = d(1, 3, 5, 7, 9, 11, 13, 15) | |
| jB = x' y + x y' A | |
| kA = Sigma(15) | kA = d(0, 1, 4, 5, 8, 9, 12, 13) |
| kA = x y A B | |
| kB = Sigma(5, 15) | kB = d(0, 2, 4, 6, 8, 10, 12, 14) |
| kB = x' y A' B + x y A B | |
Press here to retrieve a copy.
Press here to retrieve a copy.
Return to CSCI 274 home page
Return to Dean Brock's
home page
Return to the UNCA Computer Science home page