Page 529 - Engineering Digital Design
P. 529

11.3 DETECTION AND ELIMINATION OF STATIC HAZARDS                     499


                  D flip-flop. Notice that one-half of a clock cycle is lost because of the action of the filter. If
                  the D flip-flop is triggered in phase with the FSM memory flip-flops, an entire clock cycle
                  will be lost in the filtering process. To help understand how the filtering process eliminates
                  logic noise such as ORGs, the following is presented for reference purposes:

                    Remember: All forms of logic noise (glitches), including ORGs, occur immediately
                    following the triggering edge of the clock waveform, and the duration of any logic
                    noise pulse will always be much less than one-half the clock period.

                    Because logic noise occurs immediately following the triggering edge (RET or FET) of
                  the clock waveform, it is very easily filtered. Another type of noise, called analog noise, is
                  more difficult to filter since it is usually produced randomly from sources outside the logic
                  system. The filtering of analog noise will not be discussed in this text.

                  Which Methods Should Be Used to Eliminate a Potential ORG? If possible, make the
                  proper choice of don't-care values in output K-maps or change the state code assignments as
                  needed to eliminate ORGs. These two reliable methods are least likely to increase hardware
                  requirements and slow down FSM operation. Choosing the output hardware in accordance
                  with Fig. 10.18 is somewhat "iffy," since this method may depend on a single gate delay
                  to force branching along a particular non-ORG race path (see Fig. 11.4.). Unlike methods
                  1 and 2, method 3 does not offer assurance that a given ORG will not form.
                    Methods 4 and 5 both involve delays in the performance of the FSM and in most cases
                  increase the hardware requirements. The filter method (4) is the most desirable of the two,
                  since only a half CK cycle (plus the path delay through the D flip-flop) is involved. The
                  filter method also has another advantage. By using a bank of such flip-flops (called an
                  output holding register) to filter multiple outputs from an FSM, the outputs can be delivered
                  synchronously to the next stage. Use of a buffer state (5) to eliminate a race condition in
                  a branching path (one that caused the ORG) introduces an additional clock cycle in that
                  branching path, and this may not be an acceptable option.
                    Least desirable, usually, is method 6. Although increasing the number of state variables
                  may not alter the performance appreciably, this method does require an additional flip-flop
                  and additional feedback paths for each state variable that is added. Thus, method 6 usually
                  requires additional NS logic and may even require additional output-forming logic. The
                  one-hot code method, discussed in Section 13.5, offers some advantages over conventional
                  coding methods, but at the expense of requiring as many state variables (hence, also flip-
                  flops) as there are states in the state diagram (see Table 2.11).



                  11.3 DETECTION AND ELIMINATION OF STATIC HAZARDS
                  IN THE OUTPUT LOGIC

                  A detailed treatment of static hazards in combinational logic circuits is provided in Sections
                  9.1 and 9.2 and forms the basis for discussion of hazards in the output logic of FSMs
                  presented in this section. It is recommended that the reader review these sections before
                  continuing on in this section. Unique to state machines is the fact that the static hazards can
                  be either externally initiated (as in combinational logic) or internally initiated because of
   524   525   526   527   528   529   530   531   532   533   534