C 10 C 67 Finite State Machines To see how this works let s choose a data word say 0110 whose error correction code is 011 Here are the four 1 bit error possibilities for this data 1110 0010 0100 and 0111 Now look at the data item with the same code 011 which is the entry with the value 0001 If the error correction decoder received one of the four possible data words with an error it would have to choose between correcting to 0110 or 0001 While these four words with error have only one bit changed from the correct pattern of 0110 they each have two bits that are different from the alternate correction of 0001 Hence the error correction mechanism can easily choose to correct to 0110 since a single error is a much higher probability To see that two errors can be detected simply notice that all the combinations with two bits changed have a different code The one reuse of the same code is with three bits different but if we correct a 2 bit error we will correct to the wrong value since the decoder will assume that only a single error has occurred If we want to correct 1 bit errors and detect but not erroneously correct 2 bit errors we need a distance 4 code Although we distinguished between the code and data in our explanation in truth an error correction code treats the combination of code and data as a single word in a larger code 7 bits in this example Thus it deals with errors in the code bits in the same fashion as errors in the data bits While the above example requires n 1 bits for n bits of data the number of bits required grows slowly so that for a distance 3 code a 64 bit word needs 7 bits and a 128 bit word needs 8 This type of code is called a Hamming code after R Hamming who described a method for creating such codes C 10 Finite State Machines As we saw earlier digital logic systems can be classified as combinational or sequential Sequential systems contain state stored in memory elements internal to the system Their behavior depends both on the set of inputs supplied and on the contents of the internal memory or state of the system Thus a sequential system cannot be described with a truth table Instead a sequential system is described as a finite state machine or often just state machine A finite state machine has a set of states and two functions called the next state function and the output function The set of states corresponds to all the possible values of the internal storage Thus if there are n bits of storage there are 2n states The next state function is a combinational function that given the inputs and the current state determines the next state of the system The output function produces a set of outputs from the current state and the inputs Figure C 10 1 shows this diagrammatically The state machines we discuss here and in Chapter 4 are synchronous This means that the state changes together with the clock cycle and a new state is computed once every clock Thus the state elements are updated only on the clock edge We use this methodology in this section and throughout Chapter 4 and we do not finite state machine A sequential logic function consisting of a set of inputs and outputs a next state function that maps the current state and the inputs to a new state and an output function that maps the current state and possibly the inputs to a set of asserted outputs next state function A combinational function that given the inputs and the current state determines the next state of a finite state machine C 68 Appendix C The Basics of Logic Design Next state Current state Next state function Clock Inputs Output function Outputs FIGURE C 10 1 A state machine consists of internal storage that contains the state and two combinational functions the next state function and the output function Often the output function is restricted to take only the current state as its input this does not change the capability of a sequential machine but does affect its internals usually show the clock explicitly We use state machines throughout Chapter 4 to control the execution of the processor and the actions of the datapath To illustrate how a finite state machine operates and is designed let s look at a simple and classic example controlling a traffic light Chapters 4 and 5 contain more detailed examples of using finite state machines to control processor execution When a finite state machine is used as a controller the output function is often restricted to depend on just the current state Such a finite state machine is called a Moore machine This is the type of finite state machine we use throughout this book If the output function can depend on both the current state and the current input the machine is called a Mealy machine These two machines are equivalent in their capabilities and one can be turned into the other mechanically The basic advantage of a Moore machine is that it can be faster while a Mealy machine may be smaller since it may need fewer states than a Moore machine In Chapter 5 we discuss the differences in more detail and show a Verilog version of finite state control using a Mealy machine Our example concerns the control of a traffic light at an intersection of a northsouth route and an east west route For simplicity we will consider only the green and red lights adding the yellow light is left for an exercise We want the lights to cycle no faster than 30 seconds in each direction so we will use a 0 033 Hz clock so that the machine cycles between states at no faster than once every 30 seconds There are two output signals C 10 Finite State Machines NSlite When this signal is asserted the light on the north south road is green when this signal is deasserted the light on the north south road is red EWlite When this signal is asserted the light on the east west road is green when this signal is deasserted the light on the east west road is red In addition there are two inputs NScar Indicates that a car is over the detector placed in the roadbed in front of the light on the north south road going north or south EWcar Indicates that a car is over the detector placed in the roadbed in front of the light on the east west road going east or west The traffic light should change from one direction to the other only if a car is waiting to go in the other direction otherwise the light should continue to show green in the same direction as the last car that crossed the intersection To implement this simple traffic light we need two states NSgreen The traffic light is green
View Full Document
Unlocking...