In this chapter, you will learn how to apply VHDL to design complex finite state machines
(CFSMs) with the two-process PS/NS method. Our definition of a complex finite state
machine is a state machine that has external inputs to change the state sequence, excluding the
SET, RESET, and INITIALIZE inputs. The following description is an example of a complex
state machine: If a state sequence requires a binary up counter at one time and a binary down
counter at a different time, then an external input called UP can be included in the design to
allow switching between the two state sequences. Complex finite state machines, or complex
state machines (CSMs), and simple state machines are sometimes called controllers, because
they are often used to control other circuits. In addition to flip-flop outputs, Moore and Mealy
outputs are presented for complex state machines.
Synchronizers are introduced to improve the reliability of complex state machines. To
complete our the discussion, we present two additional state machine design methods: the twoassignment
PS/NS method and the hybrid PS/SN method. You can implement and download the
last complex state machine design example, to observe it working in hardware, if you so desire.