# Fall 2014 CSCI 255 Homework 5

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 stateinputnext state
`S0`0`S0`
`S0`1`S1`
`S1`0`S2`
`S1`1`S0`
`S2`0`S1`
`S2`1`S2`

Or of the output function.

stateoutput
`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.