Peter D. Minns

Digital System Design using FSMs


Скачать книгу

completed this task.

      

Schematic illustration of a block diagram for the FSM. Schematic illustration of the state diagram of single-pulse generator with a multipulse feature.

      The new state diagram is essentially the same as that in Frame 1.13 except that now if r = 1 the state diagram sequence (with s = 1) becomes s0 → s1 → s2 → s1 → s2, and so on.

      However, if s = 1 and r = 0 the sequence will be s0 → s1 → s2 → s3, which then stops until s = 0 then goes to s0.

      From this you should understand that if we make r = 0 before we make s = 1 the state diagram will follow a single pulse on output P.

       The Boolean equation for L can be active high or active low.

      As active high, we look for states when the value of L is 1.

equation

      The Boolean equation for P was P = s1 = A/B (see Frame 1.12).

      The Boolean equation for L = s1 + s2 + s3 = A + B since only in states s1, s2 and s3 is the output L = 1.

      Note that an alternative equation for L could be the inverse equation for L, otherwise known as ‘active low’. Here we look for the states that make L = 0.

equation

      In practice there is a tendency to show this active low output as:

equation

       Note that to obtain the L = 0 the reader needs to invert s0 (/s0). This idea will be used later.

      This is less complex so it may be used.

      The latter equation is in terms of NOT L. This means that when in state s1, s2, or s3, L will be logic 1. Only when the FSM is NOT in any of these states will L = 0.

      So in summary:

       Input r is used with a two‐way branch from state s2.

       If r = 0 there is no change in the operation of the FSM (single pulse from P).

       However, if r = 1 the FSM will keep looping between s1 and s2 so as to keep turning the output P on and off, in effect using input r to change the operation of the FSM.

      This shows how easily it is to change the behaviour of the FSM (in this case).

       Note that this change was done in the state diagram then transferred to the actual FSM.

Schematic illustration of a block diagram showing secondary state variables in the FSM.

      They are called ‘secondary state variables’ because they are (from the FSM architecture viewpoint) internal to the FSM (i.e. secondary not primary). If we consider the outside world inputs and outputs as being primary then it seems sensible to call the flip‐flop outputs SSVs (and state variables because they define the states of the state machine).

       Moore and Mealy state diagram

      The outputs in our FSM are seen to be dependent upon the SSVs or flip‐flops internal to the FSM. If you look back to Frame 1.5 you will see that Moore FSM outputs are dependent upon the flip‐flop outputs only. The output decoding logic in our P pulse example is:

equation

      That is it consists of an AND gate and a NAND gate. This means that a single P pulse is a Moore FSM.

       How could we make our single‐pulse design into a Mealy FSM?

      One way would be to make the output P depend on the FSM being in state s1 (A/B), but we could say that the output was to be the width of a single logic 0 of the clock pulse.

       How would we modify our state diagram to do this?

Schematic illustration of the state diagram with Mealy output P.

      Notice that now the output P is only equal to logic 1 when:

       FSM