This assignment is should be uploaded to Homework 5 on moodle by 5:00 PM on Friday 26 September.
There are two parts for this problem.
Implementation of Finite State Machines
Problem 4 of Homework 4 asked you to draw a diagram or create a table to represent the finite state machine representated by the following Java methods.
enum State { S0, S1, S2 } ;
private static char output(State presState) {
return presState == State.S0 ? '1' : '0' ;
}
private static State nextState(State presState, char inChar) {
State nxtState ;
if (inChar == '0') {
if (presState == State.S0) {
nxtState = State.S0 ;
} else if (presState == State.S1) {
nxtState = State.S2 ;
} else /* presState == State.S2*/ {
nxtState = State.S1 ;
}
} else /* inChar == '1' */ {
if (presState == State.S0) {
nxtState = State.S1 ;
} else if (presState == State.S1) {
nxtState = State.S0 ;
} else /* presState == State.S2*/ {
nxtState = State.S2 ;
}
}
return nxtState ;
}
Or you can use this tabular representation of the next state function.
| present state | input | next state |
|---|---|---|
S0 | 0 | S0 |
S0 | 1 | S1 |
S1 | 0 | S2 |
S1 | 1 | S0 |
S2 | 0 | S1 |
S2 | 1 | S2 |
Or of the output function.
| state | output |
|---|---|
S0 | 1 |
S1 | 0 |
S2 | 0 |
For this homework, you are to implement this finite state machine in Logisim. Try to keep it simple. You can use AND-gates and flip-flops or you can use a ROM and register.
Be sure to include a reset line for starting your circuit in the right state.
Testing of the Finite State Machines
Describe your plan for testing your finite state machine. This should be a couple of paragraphs long.
What to turn in
Turn in the Logisim .circ file for your implementation and and either a text or PDF file describing your testing strategy.