Abstract:
The invention is a method of operating a system having multiple finite state machines and a controller. Each finite state machine enters an offline state upon detection of anomalous operation. The controller detects whether all finite state machines are offline. The controller transmits an online activation event signal to each finite state machine when all are offline. Each finite state machine evaluates entering the online state if current conditions permit. Reentering the online state includes loading a predetermined set of operating parameters. The finite state machines are responsive only to a reset event and an online activation event when in the offline state.

Description:
CLAIM OF PRIORITY 
       [0001]    This application claims priority under 35 U.S.C. 119(e)(1) to U.S. Provisional Application No. 61/090,815 filed Aug. 21, 2008. 
     
    
     TECHNICAL FIELD OF THE INVENTION 
       [0002]    The technical field of this invention is synchronous systems using multiple finite state machines. 
       BACKGROUND OF THE INVENTION 
       [0003]    This invention operates in systems using multiple finite state machines. The finite state machines may be asynchronous in that their operations required differing amounts of time. Using such a system is complicated by the need to synchronize the operation of these multiple finite state machines. 
       SUMMARY OF THE INVENTION 
       [0004]    The invention is a method of operating a system having multiple finite state machines and a controller. Each finite state machine entering an offline state upon detection of anomalous operation. The controller detects whether all finite state machines are offline. The controller transmits an online activation event signal to each finite state machine when all are offline. Each finite state machine evaluates entering the online state if current conditions permit. Reentering the online state includes loading a predetermined set of operating parameters. The finite state machines are responsive only to reset and online activation when offline. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0005]    These and other aspects of this invention are illustrated in the drawings, in which: 
           [0006]      FIG. 1  illustrates an example system using multiple finite state machines; 
           [0007]      FIG. 2  illustrates an example of information exchange in a system such as illustrated in  FIG. 1 ; and 
           [0008]      FIG. 3  illustrates a high level conceptual view of Online/Offline operation of a system such as illustrated in  FIG. 1 ; 
           [0009]      FIG. 4  illustrates a pull-up and a pull-down input bias circuit according to the prior art; and 
           [0010]      FIG. 5  illustrates the input bias circuit of this invention. 
       
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
       [0011]    There are times where multiple finite state machines are operated in parallel. These state machines may or may not be able to provide input an output at the same pace. In this case these state machines provide a system ready indication when they are able to accept input and provide output. This system ready output is combined in a manner to determine when all of these machines are ready to proceed. These state machines literally vote on when to proceed. A unanimous vote to proceed is required before the state machines proceed. 
         [0012]      FIG. 1  illustrates an example system using multiple finite state machines.  FIG. 1  illustrate finite state machine  0   110 , finite state machine  1   111  and finite state machine  9   119  representing the multiple finite state machines. Each finite state machine  110  to  119  receives a clock signal from bus  125 . Each finite state machine  110  to  119  has a combined input/output (I/O) and ready signal (RDY) line connected to bus  125 . This single line serves both as input and output to the finite state machine and enables ready signaling as detailed below. Controller  120  is also connected to bus  125 . Controller  120  can supply the clock signals to the finite state machines  110  to  119 , supply inputs, receive outputs and control the system. 
         [0013]    If the voting is needed but not available a loss of synchronization of some of the machines may occur with a corresponding system malfunction. This could result in a catastrophic failure in certain system applications. A method to detect that this may occur and prevent this from happening is described herein. 
         [0014]    With minimum pin interfaces illustrated in  FIG. 1  the information being exchanged and the vote to proceed can exchanged serially with a bit or bits in the stream providing a means for the voting to proceed.  FIG. 2  illustrates an example of such an exchange. 
         [0015]      FIG. 2   a  illustrates the clock signal CLK supplied to all finite state machines  110  to  119 .  FIG. 2   b  illustrates the separation of time defined by clock pulses into a state machine input period and a state machine output period. The example illustrated in  FIG. 2  shows two clock cycles in the state machine input period and five clock cycles in the state machine output period. These intervals are exemplary only, other time lengths are feasible. 
         [0016]      FIGS. 2   c  and  2   d  illustrate further division of the state machine input period and the state machine output period into specific signaling intervals. In this example, a least significant bit In 0  of an input is signaled during a first clock cycle of the state machine input period. As noted in  FIG. 2   c , this value is kept on the signaling line. A most significant bit In 1  of the input is signaled during a second clock cycle of the state machine input period.  FIG. 2   c  shows this value is also kept on the signaling line.  FIG. 2   e  illustrates that these clock cycles are “reserved for input drive.” 
         [0017]    The first clock cycle of the state machine output period is reserved for precharge. As detailed below the voting using ready signals involves a precharge-conditional discharge sequence. The first clock cycle of the state machine output period is this precharge driven by controller  120  during a first half cycle and held by a keeper circuit during a second half cycle. 
         [0018]      FIG. 2   d  shows the next clock cycle in this example devoted to the finite state machine casting votes. This exact mechanism will be further explained below.  FIG. 2   c  shows that a first half cycle is devoted to being driven or kept. Whether this is driven to zero or kept high depends upon the vote cast.  FIG. 2   c  shows the second half cycle which is kept only.  FIG. 2   d  shows a second voting cycle called “Sustain Vote” which is the same as the initial “Cast Vote” cycle. 
         [0019]      FIG. 2   d  then shows another precharge sequence. The next clock cycle of the state machine output period is this precharge driven by controller  120  during a first half cycle and held by a keeper circuit during a second half cycle.  FIG. 2   d  then shows an output cycle based upon a conditional discharge sequence.  FIG. 2  shows output of only a single bit, however this is exemplary only and more bits can be transmitted as needed. 
         [0020]    In order to increase efficiency controller  120  selects the information that is transferred in the exchange template shown in  FIG. 2 . The input, voting and output can be included and excluded. A means to inform all participants of the format of the exchange is provided. 
         [0021]    The participants in an exchange may be defined by a procedure other than the procedure defining the format. It is therefore possible to specify the use of a format that does not support voting when a vote to proceed is needed. 
         [0022]    The RDY bit(s) with some transfer formats is used to indicate the participants have completed the processing of the input information received previously and are ready to output information. When the RDY bit in the exchange is reached a participant indicates it is not ready to proceed until it has met the above mentioned criteria. 
         [0023]      FIG. 3  illustrates a high level conceptual view of Online/Offline operation. When operating parameters are changed (block  311 ) they are checked (block  322 ) to determine whether they are compatible with the entity that the finite state machine controls. When this check (block  311 ) finds compatibility (Yes response from block  322 ), the online operation is resumed. When this check (block  311 ) finds no compatibility (No response from block  321 ), the finite state machine is placed offline (block  321 ). Likewise, the finite state machine is also placed offline (block  321 ) when an entity selection is about to occur or has already occurred and there is a known incompatibility (Incompatible entry selection output of block  311 ). 
         [0024]    Online activation events to block  321  are provided to place an offline participant (block  321 ) online. Such events initiate a sequence that may place the participant online. This sequence may include testing criteria (block  331 ) that must be met for online placement and the load of the operating parameters that would be used if the participant is placed online. When this check (block  331 ) finds the online criteria is not met (Online criteria not met response from block  331 ), the system remains in offline operation. When this check (block  331 ) finds the online criteria is met (Online criteria is met response from block  331 ), then block  332  loads operation parameters with possible external input. The check for compatibility with the entity is performed before the finite state machine is placed online. Then the system advances to block  322  to again test for compatibility and returns online at block  311 . 
         [0025]    This is compared to the capability of the protocol being used or about to be used to determine whether the protocol is compatible with the entity selected or about to be selected. When the two are incompatible the finite state machine is placed offline before operation with the incompatibility is attempted. 
         [0026]    It is possible to specify a feature that is not supported by any participant. In this case they are all placed offline. While offline they ignore subsequent input except for reset events and an online activation event. They may also respond to a limited number of other conditions if desired but they do not process information in the same manner as if they were online. 
         [0027]    The system behavior for all offline case is that all finite state machines are parked in a safe and known state where system operation is corrupted. The finite state machines ignore input except as described above. When this input includes stall information there is no response from offline finite state machines. Consequently there is a system hang. This system hang is non-disturbing to the system as the participants are offline and controller  120  sees the hang. 
         [0028]    Controller  120  can detect the hang described above. Since all finite state machines are offline controller  120  can take actions to ignore the not ready condition and proceed. It can then place itself in a state where it initiates the Online Activation Event. Following this event the operating parameters are loaded with values that at least one finite state machine determines it supports. When the check for support occurs, one or more finite state machines is placed online. The system operation is not aware of this malfunction and recovery and is not affected by it. 
         [0029]    Normally inputs are created with circuitry that biases them in a way that they do not float. This is commonly handled with a weak drive pull-up or pull-down device.  FIG. 4  illustrates this prior art. In  FIG. 4  circuits inside the module are to the left of the module boundary. In  FIG. 4   a  external input IN supplies input buffer  411 . Pull-up keeper  412  pulls the input line to the positive supply voltage V+ to avoid a floating input. In  FIG. 4   b  external input IN supplies input buffer  421 . Pull-down keeper  422  pulls the input line to the ground to avoid a floating input. It is known in the art to construct transistors  412  and  422  with narrow channel widths capable of supplying only limited current. The current supplied by these transistors is smaller than the drive current of circuit driving the input line.  FIGS. 4   a  and  4   b  illustrate N-channel transistors but P-channel transistors may be used. 
         [0030]    If the normal operation of the interface includes a keeper as illustrated in  FIG. 4 , the pull-up or pull-down operation of the input of a powered ON device conflicts with the operation of keepers in already operating entities. 
         [0031]    There are several ways to avoid this disruption of the system. The inputs could be constructed having no bias when initially powered up. An input buffer could be constructed having circuitry that negates the effects of a floating input. The presence of controller  120  could be detected in some manner. This may be by detecting the presence of a clock. The input circuitry could be enabled with the timing most compatible with the operation of the interface operating with unknown characteristics. The input circuitry could be enabled with the timing most compatible operating mode with the operation of the interface operating with unknown characteristics. 
         [0032]      FIG. 5  illustrates the biasing circuit of this invention. Circuits to the left of the module boundary are within the module. External input IN supplies input buffer  511 . External clock CLOCK supplies internal circuits (not shown). Clock detect  512  detects the presence of a clock signal. Clock detect  512  signals operational state detect  513  via signal CLK. Operational state detect  513  is responsive to the operational state of the corresponding finite state machine. As noted above, this operational state is preferably responsive to other inputs not shown. Operational state detect  513  supplies enable signals to pull-up transistor  521 , pull-down transistor  522  and input buffer  511 . EnableB signal from operational state detect  513  enables input buffer  511  at an appropriate time following clock detect corresponding to the operational mode. EnableH signal from operational state detect  513  enables pull-up transistor  521  at an appropriate time following clock detect corresponding to the operational mode. EnableL signal from operational state detect  513  enables pull-down transistor  522  at an appropriate time following clock detect corresponding to the operational mode. 
         [0033]    For example, after detecting an interface clock with a clock pin with a fixed bias in clock detect  512 , input buffer  511  could be enabled on the clock edge where data changes. At the same time an appropriate keeper operation is enabled. The enabled keeper provides the correct bias. Correct operation of the input may require the keeper bias to be enabled a time delay after the input buffer is enabled.