| So far, we've studied both S-R and D latch 
    circuits with an enable inputs. The latch responds to the data inputs (S-R 
    or D) only when the enable input is activated. In many digital applications, 
    however, it is desirable to limit the responsiveness of a latch circuit to a 
    very short period of time instead of the entire duration that the enabling 
    input is activated. One method of enabling a multivibrator circuit is called
    edge triggering, where the circuit's data inputs have control only 
    during the time that the enable input is transitioning from one state 
    to another. Let's compare timing diagrams for a normal D latch versus one 
    that is edge-triggered:
     
      
      In the first timing diagram, the outputs respond to input D whenever the 
    enable (E) input is high, for however long it remains high. When the enable 
    signal falls back to a low state, the circuit remains latched. In the second 
    timing diagram, we note a distinctly different response in the circuit 
    output(s): it only responds to the D input during that brief moment of time 
    when the enable signal changes, or transitions, from low to 
    high. This is known as positive edge-triggering.  There is such a thing as negative edge triggering as well, and it 
    produces the following response to the same input signals:  
      Whenever we enable a multivibrator circuit on the transitional edge of a 
    square-wave enable signal, we call it a flip-flop instead of a 
    latch. Consequently, and edge-triggered S-R circuit is more properly 
    known as an S-R flip-flop, and an edge-triggered D circuit as a D flip-flop. 
    The enable signal is renamed to be the clock signal. Also, we refer 
    to the data inputs (S, R, and D, respectively) of these flip-flops as 
    synchronous inputs, because they have effect only at the time of the 
    clock pulse edge (transition), thereby synchronizing any output changes with 
    that clock pulse, rather than at the whim of the data inputs.  But, how do we actually accomplish this edge-triggering? To create a 
    "gated" S-R latch from a regular S-R latch is easy enough with a couple of 
    AND gates, but how do we implement logic that only pays attention to the 
    rising or falling edge of a changing digital signal? What we need is a 
    digital circuit that outputs a brief pulse whenever the input is activated 
    for an arbitrary period of time, and we can use the output of this circuit 
    to briefly enable the latch. We're getting a little ahead of ourselves here, 
    but this is actually a kind of monostable multivibrator, which for now we'll 
    call a pulse detector.  
      The duration of each output pulse is set by components in the pulse 
    circuit itself. In ladder logic, this can be accomplished quite easily 
    through the use of a time-delay relay with a very short delay time:  
      Implementing this timing function with semiconductor components is 
    actually quite easy, as it exploits the inherent time delay within every 
    logic gate (known as propagation delay). What we do is take an input 
    signal and split it up two ways, then place a gate or a series of gates in 
    one of those signal paths just to delay it a bit, then have both the 
    original signal and its delayed counterpart enter into a two-input gate that 
    outputs a high signal for the brief moment of time that the delayed signal 
    has not yet caught up to the low-to-high change in the non-delayed signal. 
    An example circuit for producing a clock pulse on a low-to-high input signal 
    transition is shown here:  
      This circuit may be converted into a negative-edge pulse detector circuit 
    with only a change of the final gate from AND to NOR:  
      Now that we know how a pulse detector can be made, we can show it 
    attached to the enable input of a latch to turn it into a flip-flop. In this 
    case, the circuit is a S-R flip-flop:  
      Only when the clock signal (C) is transitioning from low to high is the 
    circuit responsive to the S and R inputs. For any other condition of the 
    clock signal ("x") the circuit will be latched.  A ladder logic version of the S-R flip-flop is shown here:  
      Relay contact CR3 in the ladder diagram takes the place of the 
    old E contact in the S-R latch circuit, and is closed only during the short 
    time that both C is closed and time-delay contact TR1 is closed. 
    In either case (gate or ladder circuit), we see that the inputs S and R have 
    no effect unless C is transitioning from a low (0) to a high (1) state. 
    Otherwise, the flip-flop's outputs latch in their previous states.  It is important to note that the invalid state for the S-R flip-flop is 
    maintained only for the short period of time that the pulse detector circuit 
    allows the latch to be enabled. After that brief time period has elapsed, 
    the outputs will latch into either the set or the reset state. Once again, 
    the problem of a race condition manifests itself. With no enable 
    signal, an invalid output state cannot be maintained. However, the valid 
    "latched" states of the multivibrator -- set and reset -- are mutually 
    exclusive to one another. Therefore, the two gates of the multivibrator 
    circuit will "race" each other for supremacy, and whichever one attains a 
    high output state first will "win."  The block symbols for flip-flops are slightly different from that of 
    their respective latch counterparts:  
      The triangle symbol next to the clock inputs tells us that these are 
    edge-triggered devices, and consequently that these are flip-flops rather 
    than latches. The symbols above are positive edge-triggered: that is, they 
    "clock" on the rising edge (low-to-high transition) of the clock signal. 
    Negative edge-triggered devices are symbolized with a bubble on the clock 
    input line:  
      Both of the above flip-flops will "clock" on the falling edge 
    (high-to-low transition) of the clock signal.  
      REVIEW: A flip-flop is a latch circuit with a "pulse detector" circuit 
      connected to the enable (E) input, so that it is enabled only for a brief 
      moment on either the rising or falling edge of a clock pulse. Pulse detector circuits may be made from time-delay relays for ladder 
      logic applications, or from semiconductor gates (exploiting the phenomenon 
      of propagation delay).  |