Abstract:
A state element having a pair of parallel-connected, inversely-enabled latches forms the basic state-machine building block. A flip-latch is formed by combining this basic element with a multiplexer for selectively outputting alternate outputs of the latches. A litch-latch is formed by using the basic element alone with the two inputs fed from one of a pair of identical logic elements and feeding back the output from each latch to the logic element from which the input is not received. Other outputs of the logic elements are input into a multiplexer for alternately selecting the outputs from the respective logic elements to be the state machine output. These state elements function similarly to a flip-flop but generally produce less propagation delay and require a lower clocking signal frequency for a given state frequency.

Description:
FIELD OF THE INVENTION 
     This invention relates to state machines, and more particularly to state elements comprising a pair of parallel-connected, inversely enabled latches. 
     BACKGROUND OF THE INVENTION 
     A state machine typically converts a time series of input data through some function into a time series of output data appropriate for subsequent circuits. Typically, state machines include state elements, which store the current state of the machine and logic elements which produce the output and determine the next state as functions of the input and the current state. 
     A major and critical component in any synchronous state machine is the state element. Conventionally this element is in the form of a master-slave flip-flop. A conventional flip-flop circuit 10 is shown in FIG. 1 wherein a data line shown as conductor D is input into the D-port of a master latch 12. The Q output of master latch 12 is connected via conductor A to the D-port of a slave latch 14, the Q output of which forms the output of flip-flop 10. 
     A clock signal on conductor CK is inverted prior to input at the enable E-port of latch 12 and input directly into the E-port of latch 14. When the clock signal is low, master latch 12 tracks the D input, but the output is held constant by slave latch 14. On the positive clock edge, the output of master latch 12 is latched at the state of the D input and slave latch 14 passes this new state to the output, Q, causing a state transition. As used herein, an output is latched when held at the state existing on the input when the latch enters the latched mode. This is illustrated in the waveforms of FIG. 7 which relate to the conductors associated with latches 12 and 14 of flip-flop 10. 
     When the clock returns to a low state, the slave latch holds the current state on the output while the master latch tracks the D input to acquire the next &#34;new state&#34;. It can be seen that no state transition occurs at the output on the negative clock edge. Thus, a full clock cycle is required for each output state transition. The clock frequency must therefore be twice that of the maximum frequency of any data line. 
     FIG. 2 illustrates a conventional flip-flop-based state machine 16. The state rate of this machine is equal to the clock frequency rate. Machine 16 includes a block of flip-flops 20 for storing the current state of the machine, and a logic block 18 which produces the state machine output and determines the next state, both as functions of the machine input and the current state. The Q outputs of flip-flop 20 are fed as inputs to the logic block 18, as are the state machine inputs D. The Z outputs of the logic block 18, which carry the next-state information, are coupled to the D inputs of the flip-flop 20. The Y outputs of logic block 18 serve as the state machine&#39;s output. The clocking signal is coupled to flip-flop 20 as shown. 
     It will be appreciated that this diagram is a generalized diagram in that flip-flop 20 may in fact be comprised of a plurality of flip-flops 10. Further, logic block 18 may be composed of a variety of logic elements which are necessary to provide the logic function for a desired application. Accordingly, several flip-flop outputs and several data connections between logic block 18 and flip-flops 20 may exist in this state machine. Also, some of the outputs of logic block 18 may be internally wired directly from inputs of logic block 18, when the logic functions desired for those outputs are equal to single inputs. Reference to the outputs of a logic block or means as being a function of the inputs includes, therefore, the direct connection of some outputs with inputs. 
     Flip-flop based state machines require a clock frequency at least two times the highest frequency of any state variable signal. Thus, the frequency limitations of the technology in use, and the high loading typical of clock distribution can cause very high speed logic designs to be limited first by poor clock fidelity. 
     Another factor often limiting state rates is the total data propagation delay time between state elements. The minimum state cycle time is the data propagation delay time through the logic block plus the data propagation delay time through the state element. (Data propagation delay time through a state element is defined to be the sum of the D to CK set-up time and the CK to Q delay time.) The delay for a flip-flop is roughly two times the propagation delay of each latch, since there are two serially connected latches. 
     The use of digital to analog converter bit-cell structures incorporating parallel-connected latches clocked at a reduced frequency is used to prevent glitches in the converter output. For instance, see HSIEH et al., &#34;A 12-Bit One-Gword/S GaAs Digital-to-Analog Convertor System&#34;, IEEE Journal of Solid-State Circuits, Vol. SC-22, No. 6, December 1987, pages 1048-1054. However, such an arrangement has not been used as a state element in a state machine heretofore. Further, a state element design having a propagation delay of only a single latch has not heretofore been provided. 
     SUMMARY OF THE INVENTION 
     The present invention provides a state machine which can operate at a higher speed, or alternatively, with a lower system clock rate for a given speed, than conventional flip-flop-based state machines. In its simplest form the state element provided by the present invention comprises a pair of latches connected in parallel with the clocking input to one of the latches being inverted relative to the other. The data is input to both latches and the output is selectively taken from the latch which exists in a latching mode. The outputs of the state elements are selected by a multiplexer which is also clock driven. This state element is referred to herein as a flip-latch. 
     A second type of state element made according to the present invention, referred to herein as a litch-latch, has the outputs of the two latches connected to the inputs of corresponding ones of substantially identical logic blocks. The outputs of the logic blocks go to the inputs of the respective other ones of the latches. This provides for the inherent selection of the corresponding output of the latch which exists in a latching mode to be processed by the logic function block and then automatically output to the latch which will next be in a latch state. Thus, the feedback loop avoids the propagation delay inherent within the multiplexer. Multiplexers are required for the selecting of appropriate signals based on the state of the clock only for the state machine&#39;s outputs. 
     These new state elements produce a state transition on both clock edge polarities, and hence require a clocking frequency equal to the highest frequency of any state variable signal. This is half the clock frequency of flip-flop-based state machines for the same state rate. Hence, for circuits that are clock limited, flip-latches and litch-latches offer higher state rates, greater fidelity of the clock signal, or both. These and other features and advantages of the present invention will become apparent from a review of the drawings and the following detailed description of the preferred embodiment. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a conventional flip-flop. 
     FIG. 2 is a block diagram of a conventional state machine incorporating the flip-flops of FIG. 1. 
     FIG. 3 is a block diagram showing the structure of a state element made according to a first preferred embodiment of the present invention. 
     FIG. 4 is a block diagram illustrating a state machine incorporating the state elements of FIG. 3. 
     FIG. 5 is a block diagram showing a second preferred embodiment of the present invention. 
     FIG. 6 is a block diagram illustrating a state machine incorporating the state elements of FIG. 5. 
     FIG. 7 illustrates signal flow through the conventional flip-flop of FIG. 1. 
     FIGS. 8 and 9 correspondingly illustrate signal flows associated with the preferred embodiments of FIGS. 3 and 5, respectively. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     FIGS. 1, 2 and 7 have been discussed previously with reference to conventional flip-flop structure and use in the Background of the Invention section. 
     Referring now to FIG. 3, what is referred to as a flip-latch state element 22 made according to the present invention, is shown. Flip-latch 22 includes parallel-connected first and second latches 24 and 26. Latch 24 has a clock input which is inverted to its enabling port, as compared to that for latch 26. The two data (D) inputs to the latches are from the single D input. The two Q outputs of latches 24 and 26 on conductors B and C are input to the &#34;1&#34; and &#34;0&#34; inputs, respectively, of a multiplexer 28. The two enabling inputs of latches 24 and 26 and the S select input of multiplexer 28 are connected to the system clock (CK). 
     When the clock signal is low, the upper latch 24 tracks the D input while the lower latch 26 holds or latches the current state. Output multiplexer 28 selects the output of latch 26 as the flip-latch state output. 
     On the positive clock edge, latch 24 latches the state of the D input and the multiplexer selects this latch&#39;s output as the new state of the flip-latch output, causing a state transition. Also, latch 26 now tracks the D input to acquire the next &#34;new state&#34;. The same operation with the roles of latches 24 and 26 reversed causes a state transition on the negative clock edge also. 
     This operation is illustrated in FIG. 8. The system clock is shown as the first waveform and the data input on conductor D is shown as being the same as in FIG. 7. The latch outputs on conductors B and C are illustrated by correspondingly identified waveforms. The resultant output Q, illustrated as the bottom waveform, is the same as obtained with the flip-flop shown in FIG. 7. However, the clock frequency is one-half that of the clock frequency shown in FIG. 7 since state transitions occur on both positive and negative going edges of the clock signal. 
     A state machine implemented with flip-latches 22 thus has a state rate twice the clock frequency. Such a state machine 30 is shown in FIG. 4. The similarity between this figure and FIG. 2 is apparent. That is, flip-latches may be substituted directly for conventional flip-flops. In FIG. 4, a flip-latch-based state machine 30 may include the same logic block 18 described with reference to FIG. 2, or any other logic block appropriate for a given application. The logic block outputs Z are connected to flip-latches 32 and the outputs Y of the logic block become the state machine outputs. The flip-latch outputs are fed back to inputs to the logic block, as shown. This is all substantially identical to the block diagram structure of FIG. 2. However, the state machine of FIG. 4 has a state rate twice the clock frequency, rather than the same as the clock frequency as was the case with the flip-flop-based state machine 16 of FIG. 2. Flip-latches 32 of FIG. 4 thus represent a direct replacement of the flip-flops 20 represented in FIG. 2. 
     Referring now to FIG. 5, what is referred to as a litch-latch 34 is illustrated. Litch-latch 34 is formed of two parallel-connected latches 36 and 38 with a clock signal inverted to the enabling port of one of the latches (latch 36) and directly into the enabling port of the other latch (latch 38). This is almost the same as the connection of latches 24 and 26 in FIG. 3. The difference is that the data inputs to latches 36 and 38 are not the same. The data input on a latch 36 is shown as conductor DM for &#34;data master&#34;. Correspondingly, the data input for latch 38 is shown on conductor DS for &#34;data slave&#34;. The use of the terms master and slave are not here intended to refer to any dependency between the two latches, but rather to distinguish the two latches using terminology applied in the description of a flip-flop. 
     Similarly, the Q outputs are output on conductors QM and QS for latches 36 and 38, respectively. Litch-latches require the structure of a different state machine, as shown by state machine 40 in FIG. 6. In state machine 40, two substantially identical logic blocks 18 and 18&#39; are used with the set of litch-latches 42. The litch-latch outputs are directly fed back to the second inputs of logic blocks 18 and 18&#39;. 
     Further, the state machine inputs D are directly fed into both logic blocks. Although the inputs of the logic blocks are shown connected, they may also be connected to separate input signals. The outputs Z of logic blocks 18 and 18&#39; are connected to the opposite data inputs of the litch-latches. That is, the outputs Z of logic block 18&#39; which receives a feedback from the QS outputs are coupled to the DM inputs of litch-latches 42. Correspondingly, the outputs Z of logic block 18 are connected to the DS inputs of litch-latches 42. State machine 40 can thus be seen to require a duplication of the logic block circuitry. 
     Litch-latch 34 operates like flip-latch 22 except that rather than having a multiplexer select which latch output is the litch-latch output, both latch outputs are provided. The state of the litch-latch is defined to be the state of the master latch 36 when the clock signal is high and the state of the slave latch 38 when the clock signal is low. Because of the dual inputs and outputs, the standard state machine design used for flip-flops and flip-latches must be modified as shown in FIG. 6 to use litch-latches as state elements. 
     With the two identical logic blocks 18 and 18&#39;, when the clock level is high, the current data state is held in the master latches, such as latch 36. The logic block connected to the QM output (logic block 18) calculates the next state data, which is applied to the D-ports of the slave latches, such as latch 38. 
     When the clock level goes low, the slave latches 38 hold this new state and the second logic block 18&#39; calculates the next new state to apply to the inputs of the master latches 36. A multiplexer 44 selects appropriate outputs Y of logic blocks 18 and 18&#39; for state machine outputs based on the level of the clock signal. Thus, it can be seen that the feedback signal is directly connected between the appropriate master or slave latch and logic block. There is thus no multiplexing required to connect a given feedback signal to the appropriate latch input after passing through the logic circuitry. 
     The operation of litch-latch 34 is illustrated in FIG. 9. In this case, the data are input alternately on the DM and DS lines according to the state of the clock signal, while the input not accepting data can be in either state, i.e. it is a &#34;don&#39;t care&#34;. The QM and QS outputs can be seen to be the same as the B and C outputs, respectively, from latches 24 and 26 of flip-latch 22. The defined state Q of the litch-latch 34 is equal to the state of QM when CK is high and QS when CK is low. The state of the litch-latch is seen to be identical the Q output of the flip-latch 22. 
     In summary, flip-latches 22 and litch-latches 34 provide a state element usable in state machines for providing state machines with higher state rates, or alternatively, lower clock frequencies, or both. Further, the data propagation delay of flip-latch 22 is roughly the delay through a latch 24 or 26 and the delay through multiplexer 28. Since delay times of multiplexers are usually less than or equal to delay times of comparable latches, a flip-latch also has slightly less delay than a flip-flop. The data propagation delay for litch-latch 34 is the propagation delay of a single latch 36 or 38. Thus litch-latch 34 has approximately only half the delay of flip-flops or flip-latches. Thus, the invention also allows faster state rates for state machines that are delay limited. 
     Flip-latches and litch-latches can be intermixed easily in a state machine design, as represented in FIGS. 4 and 6. Any output of a flip-latch can be connected to a litch-latch by tying it to both the DM and DS inputs of the litch-latch. Any litch-latch output pair can also be converted to a single line for a flip-latch input by using a multiplexer to select the appropriate output based on the current level of the clock signal. 
     Both of these new schemes require additional elements to implement a given state machine compared to the flip-flop-based prior art. Flip-latches contain extra multiplexers and litch-latches require duplicate logic blocks. However, this is much less overhead than is required by the prior art techniques for increasing the speed by adding additional pipeline stages (requiring additional state elements), especially for high speed machines that are already heavily pipelined. 
     It will be understood by those skilled in the art, that although the invention has been described with reference to the foregoing preferred embodiments, variations in detail may be made in the preferred embodiments without varying from the spirit and scope of the invention as defined in the claims. For instance, the logic blocks 18 and 18&#39; may differ slightly if part of the functionality of the state-machine 40 is not required to operate at the maximum state rate. In this case, any functionality provided in one logic block but not the other would be operative only every other state cycle.