A Finite State Machine (FSM) is a kind of digital circuit, (and, possibly, other types of machines, including virtual ones) that is used to process information in steps (states). At every state a different part of the information can be processed. This has many advantages in terms of reduced hardware requirements over combinational logic networks (CLNs).
It is a mathematical model of computation used to design both computer programs and sequential logic circuits. It is conceived as an abstract machine that can be in one of a finite number of states. The machine is in only one state at a time; the state it is in at any given time is called the current state. It can change from one state to another when initiated by a triggering event or condition, this is called a transition. A particular FSM is defined by a list of its states, and the triggering condition for each transition.
Finite State Machines, or automata, originated in computational theory and mathematical models in support of various fields of bioscience. However, their popularity today in the computer science and engineering fields can be attributed to the pioneering efforts of George H. Mealy and Edward F. Moore performed at Bell Labs and IBM (circa 1960s). Mealy and Moore's Finite State Machine concepts proved valuable in two important engineering disciplines: language parsing (compilers) and sequential circuit design. Gradually, the software engineering community partially adopted FSM concepts as more structured analysis and design methods were needed to validate this originally arcane endeavor.
Definition and Operation
It is common to distinguish Finite State Machines as either a Mealy or Moore machine. The difference between the two machines, as we shall explore later, are noteworthy, but not necessarily paramount to successful Finite State Machine design for software application architecture, but likely important in sequential circuit design.
Finite State Machines