Asynchronous inputs can be difficult to handle since data can arrive at unpredictable times, and may not meet the setup and hold time requirements. Various techniques have been developed to deal with this.
One approach is to carefully craft the state diagram. Branching dependencies on more than one asynchronouus input should be avoided. Logical adjacency principles could be used when possible. The go-no go configuration of Figure 73 is useful.
Here, X is the asynchronouus input, and a and b are logically adjacent states. The machine will stay in state a while X is inactive, and move to state b when X is activated. This is a commonly used and reliable scheme.
It may even be useful to add in extra states, as the enhanced reliability would more than compensate for the cost of the additional states.
In some situations the asynchronouss input might be of the form of a short pulse, and circuitry is required to catch the pulse, stretch it as needed, and synchronise it with the clock signal before passing it on to the state machine, Figure 74.
The signal X2 will meet the setup and hold time requirements for a falling edge triggered state machine.
ANU Engineering - ENGN3213