The ASM block is an 8-state asynchronous state machine. There are 24 state transition inputs, one nRESET input, and 8 output lines. The ASM block is defined using state transitions and state outputs.

Activation


To activate the ASM, connect nRESET to a non-Gnd signal.

Parameters


The ASM block can be defined through either the properties panel on the left, or the ASM editor. The ASM editor is a graphical interface for defining the ASM and editing labels. Double-click on any ASM component to open ASM Editor.
In the properties tab, you can select a state, edit its name, and configure all of its transition enable switches. Also, you can define the ASM Outputs, edit the label names for each output, and set the Initial/reset state.

State Selection:

Select a State to edit the transitions for.

State name:

Rename the state selected in ‘State selection’

Initial/Reset state:

Select which State is the Initial/Reset state.

Transitions:

Select a state to transition to from the current ‘state selection’.

RAM:

Set the Initial values of the RAM.
Use the bulk operations to set all values to 0, 1, invert or default.

Pin names:

Rename the outputs.

Connections


There are three main connections. The transitions, the outputs and the nRESET.

Transitions:

The state machine is constructed by defining the one-way connections between two states gated by a transition control input. The state machine will transition to another state any time these two conditions are met: the current state has a transition connection to another state, and that transition enable signal is HIGH. The transition enable signals are controlled by the 24 inputs, and there are 3 transition enable signals per state.

Outputs:

The ASM block has 8 outputs to the connection matrix. You can define the output of the 8 outputs based on the current state. This is done in the properties tab by double clicking the desired output for a given state and output line to invert its output.

nReset:

The ASM block will power up to the state defined as the Initial/reset state. It is by default State 0, but can be changed to any state. It also defines which state the ASM will be reset to. When the logic on nRESET is LOW, the ASM will be kept at the Reset state until the logic at nRESET goes HIGH.