Abstract:
A bus master controller comprising a plurality of logic modules, each module coupled to a separate bus driver circuit. The logic module operates using a &#34;break-before-make&#34; protocol derived from a finite state machine, delay element and exclusive-OR gate. The finite state machine generates a predetermined sequence that requires an &#34;assert&#34; signal to always be delayed with respect to a &#34;de-assert&#34; signal, thus eliminating the possibility that more than one set of bus drivers will be coupled to the bus at any one time.

Description:
BACKGROUND OF THE INVENTION 
     1. Technical Field 
     The present invention relates to a tri-state bus controller for an integrated circuit and, more particularly, to a tri-state controller that eliminates contention between various drivers for the bus and completes driver changeover during a single clock cycle. 
     2. Description of the Prior Art 
     A classic challenge in ASIC design is the management of internal bidirectional or multi-party tri-state buses. In particular, a problem arises with changeover of &#34;bus mastership&#34; without contention (&#34;contention&#34; being defined as more than one set of drivers momentarily driving the bus). Bus contention, even for a short duration, can result in excessive power dissipation and, ultimately, reduced product reliability. ASICs are more susceptible to this problem than custom integrated circuits since automatic placement and routing tools do not conventionally consider the issue of balancing delays along multiple paths--such delays being a source of bus mastership contention. To minimize contention, one would need to carefully balance the delay paths to the multiple groups of tri-state drivers that are scattered across the integrated circuit. In instances with a large number of drivers and/or a large integrated circuit die size, this &#34;brute force&#34; technique becomes extremely tedious, expensive and time-consuming. Indeed, this solution becomes even more intractable in arrangements that exhibit asymmetric enable/disable times for tri-state drivers (a common occurrence), or even dissimilar driver types sharing the same bus. 
     An alternative solution to controlling bus mastership is to change bus masters across two clock cycles. In the first cycle, all of the masters are disconnected from the bus (i.e., each master is &#34;disabled&#34;). In the second clock cycle, a new master (and only one master) assumes control of the bus. The use of two clock cycles thus guarantees that no two masters will be simultaneously enabled, a significant advantage over other prior solutions. However, in high performance systems, it can be a distinct disadvantage to consume two clock cycles to changeover bus mastership. 
     An exemplary &#34;single clock&#34; prior art solution includes a gating control arrangement associated with each &#34;bus enable&#34; signal, the arrangement requiring that all other &#34;bus enables&#34; be de-asserted before a new &#34;bus enable&#34; can be asserted. It has been found, however, that the gating arrangement is prone to glitching behavior related to recognizing &#34;de-assertion&#34; and, like the &#34;brute force&#34; technique, requires some attention during placement and routing. Further, the gating control arrangement scales poorly as the number of bus masters grows, since each driver circuit must be fully interconnected to every other driver circuit on the bus. 
     Thus, a need remains in the art for a tri-state bus controller that consumes only a single clock cycle, yet eliminates the bus contention problem prevalent in conventional circuit design. 
     SUMMARY OF THE INVENTION 
     The present invention relates to a tri-state bus controller for an integrated circuit and, more particularly, to a tri-state controller that eliminates contention between various drivers for the bus and completes driver changeover during a single clock cycle. 
     In accordance with the present invention, each bus master is configured to include a &#34;break-before-make&#34; logic module, where the module includes a 2-bit gray-coded finite state machine, delay element and exclusive-OR gate that work together to change bus masters in a single clock cycle. The delay element ensures that the current &#34;enable&#34; signal is de-asserted before any other &#34;enable&#34; signal is accepted. Therefore, in a circuit including N bus masters, a plurality of N logic modules would be required, each associated with a separate bus master. A 1-of-N decoder is coupled to the plurality of N logic modules and is used to provide the desired &#34;enabled&#34; signal to the logic modules. That is, the decoder supplies a single &#34;assert enable&#34; signal and a plurality of N-1 &#34;de-assert enable&#34; signals. 
     In particular, each logic module includes one signal path for &#34;de-assert enable&#34; and one signal path for &#34;assert enable&#34;, where the delay element is disposed along the &#34;assert enable&#34; signal path. Therefore, the &#34;break-before-make&#34; protocol is guaranteed and only one bus master will ever be &#34;enabled&#34;. The length of the implemented delay needs to be less than one clock cycle, but should be sufficiently long to compensate for various propagation delays across the integrated circuit. 
     In a preferred embodiment, the finite state machine comprises a pair of flip-flops and an associated pair of multiplexers, with a &#34;reset&#34; signal also applied as an input to each flip-flop to safeguard the logic module from improper operation during start-up or power interruptions. A flip-flop/multiplexer combination is associated with each signal path (i.e., &#34;assert enable&#34; and &#34;de-assert enable&#34;). The output from the delay element (disposed along the &#34;assert enable&#34; path) and the output from the &#34;de-assert enable&#34; path&#39;s flip-flop are provided as inputs to the exclusive-OR gate, the output from the gate being the &#34;output enable&#34; signal for that bus master. 
     Various other arrangements and embodiments of the present invention will become apparent during the course of the following discussion and by reference to the related drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Referring now to the drawings, 
     FIG. 1 is a diagram of an exemplary &#34;break-before-make&#34; tri-state bus controller logic module formed in accordance with the present invention; and 
     FIG. 2 illustrates an exemplary arrangement using a set of four logic modules of the present invention for controlling bus driver selection between inputs BusIn 0  -BusIn 3 . 
    
    
     DETAILED DESCRIPTION 
     An exemplary &#34;break-before-make&#34; logic module 10 of the present invention is illustrated in FIG. 1. As described above, module 10 is coupled between a specific bus master and the bus signal line. A plurality of such modules, operating together as described below in association with FIG. 2, provide the &#34;assert enable&#34; to the desired set of drivers for operating the bus, while providing the &#34;de-assert enable&#34; signal to all remaining drivers. Referring to FIG. 1, module 10 includes a finite state machine 12, delay element 14 and exclusive-OR gate (XOR gate) 16 interconnected as shown. A set of three separate inputs are used to control the operation of logic module 10, an &#34;enable&#34; signal, the integrated circuit &#34;clock&#34; signal, and a &#34;reset&#34; signal. The &#34;enable&#34; signal, as will be discussed in detail below in association with FIG. 2, is the actual decision signal from an element (such as a 1-of-N decoder, not shown in FIG. 1), that controls driver selection. As mentioned above, the &#34;enable&#34; signal will have a first logic value when that particular associated set of drivers are to be used for the bus (&#34;assert&#34; enable) and have a second logic value otherwise (&#34;de-assert&#34; enable). 
     In accordance with the present invention, finite state machine 12 is formed as a 2-bit gray-scale-coded arrangement comprising a pair of flip-flops 18, 20 and an associated pair of multiplexers 22, 24. The &#34;enable&#34; signal is applied as the control input to each multiplexer 22 and 24, as shown. The &#34;clock&#34; and &#34;reset&#34; input signals are applied as their respective inputs to flip-flops 18 and 20 of finite state machine 12. In particular, the &#34;reset&#34; signal is used to return machine 12 to a known condition during &#34;power up&#34; or other situations where there may be interruptions to the operation of the integrated circuit. 
     Referring back to FIG. 1, the output from multiplexer 22 is applied as the &#34;D&#34; input to flip-flop 18 and, similarly, the output from multiplexer 24 is applied as the &#34;D&#34; input to flip-flop 20. The combination of multiplexer 22 and flip-flop 18 is defined as the &#34;de-assert&#34; signal path of finite state machine 12, while the combination of multiplexer 24 and flip-flop 20 is defined as the &#34;assert&#34; signal path. At the completion of a clock cycle, the &#34;D&#34; input to flip-flop 18 will appear as the &#34;Q&#34; output from flip-flop 18 and thereafter used as the &#34;de-assert&#34; input to XOR gate 16. 
     An important aspect of the present invention is the inclusion of delay element 14 in the &#34;assert enable&#34; signal path between the &#34;Q&#34; output of flip-flop 20 and XOR gate 16. With the inclusion of such a delay element, the &#34;assert&#34; enable &#34;Q&#34; output from flip-flop 20 will always arrive at XOR gate 16 after the &#34;Q&#34;output (&#34;de-assert) from flip-flop 18. The magnitude of the delay is a matter of design choice, as long as the delay maintains the bus master changeover during a single clock cycle In fact, the delay may be as short as a guard-band value to ensure that all drivers are de-asserted before a new master is enabled. A longer delay may be advantageous for situations such as that encountered, for example, by staggered delays (as a result of an unstructured layout), a large capacitive load on the bus (resulting in enable-disable timing mismatches), or different types of bus drivers (mixing various types of circuit on the same bus). Other reasons for lengthening the delay are possible, those mentioned are merely considered to be illustrative. 
     Referring back to FIG. 1, the &#34;de-assert&#34; output from flip-flop 18 is fed back as a first input to both multiplexers 22 and 24, where the &#34;de-assert&#34; output is first inverted before being applied as an input to multiplexer 24. The delayed &#34;assert&#34; output from delay element 14 is fed back as a second input to multiplexers 22 and 24. The combination of these feedback signals with the applied enable signal defines the particular arrangement of finite state machine 12 that is capable of generating the 2-bit gray-scale-coded sequence necessary for the proper operation of logic module 10 of the present invention. The operation of state machine 12 is best understood by reference to the following truth table: 
     
                       TABLE 1______________________________________State             Present Next State                               Next{FF20,FF18}   Enable    OutEn   {FF20,FF18}                               OutEn______________________________________{0,0}   0         0       {0,0}     0 (de-assert){0,0}   1         0       {1,0}     1 (assert){0,1}   0         1       {0,0}     0 (de-assert){0,1}   1         1       {0,1}     1 (assert){1,0}   0         1       {1,1}     0 (de-assert){1,0}   1         1       {1,0}     1 (assert){1,1}   0         0       {1,1}     0 (de-assert){1,1}   1         0       {0,1}     1 (assert)______________________________________ 
    
     Since the control sequence is gray-coded (that is, only one bit of the two state bits can change in any given clock cycle), the logic module of the present invention is guaranteed to be completely contention-free. Either the &#34;00&#34; or &#34;11&#34; state represents a &#34;de-assert enable&#34; or disconnected state for a particular bus master, while either &#34;01&#34; or &#34;10&#34; represents an &#34;assert enable&#34; or driving state for that particular bus master. 
     The operation of the logic module of the present invention may best be understood by following through an example of its operation. It is presumed that state machine 12 begins in the &#34;00&#34; state (since a &#34;reset&#34; signal will always returns machine 12 to this condition). Referring to Table 1, it is seen that OutEn is not asserted (i.e., has a logic value of &#34;0&#34;), so this particular bus driver is not the &#34;master&#34; driver at the moment. As long as the &#34;Enable&#34; input is not asserted (that is, remains at the logic &#34;0&#34; level), the state will not change. When the &#34;Enable&#34; is asserted at a particular clock edge, the associated logic &#34;1&#34; value will propagate through flip-flops 18, 20 and multiplexers 22, 24, causing the &#34;OutEn&#34; signal to change to the &#34;10&#34; state, as shown in Table 1. The rising transition on the output of flip-flop 20 thus asserts OutEn to drive the bus, but only after traversing delay element 14. At some subsequent clock edge, &#34;Enable&#34; is de-asserted to relinquish bus control to another master. When this occurs, the &#34;0&#34; introduced along the &#34;enable&#34; path propagates through state machine 12, forming a &#34;11&#34; state. The presence of this rising edge at flip-flop 18 &#34;de-asserts&#34; OutEn through XOR 16. Since this signal does not pass through delay element 14, the &#34;de-assert&#34; signals reaches OutEn relatively quickly when compared to the arrival of an &#34;assert&#34; signal at another logic module. 
     Therefore, as a particular logic module 10 of the present invention cycles through being selected and de-selected as the bus master, finite state machine 12 continues to cycle through the state sequence 00-10-11-01-00-10-11 . . . In general, the particular state sequence implemented in the present invention assures that &#34;turn on&#34;/assert control of the associated bus drivers passes through the delayed signal path and the &#34;turn off&#34;/de-assert control passes through the non-delayed path. 
     FIG. 2 illustrates a particular integrated circuit arrangement utilizing a set of four logic modules of the present invention, denoted 10 0  -10 3 , for use with a set of four bus signals, BusIn 0  -BusIn 3 , respectively. Also illustrated in FIG. 2 are the &#34;reset&#34; and &#34;clock&#34; signals discussed above in associated with the description of logic module 10 in FIG. 1. Referring to FIG. 2, a 1-of-N decoder 40 is used to select the desired &#34;bus master&#34; for a particular period of time. In one example, a set of input signals designated &#34;enable&#34;, and a 2-bit &#34;select master&#34; are applied as inputs to decoder 40 and used to generate a set of four output &#34;enable&#34; signals, one signal designated as the &#34;assert&#34; and the remaining three designated as &#34;de-assert&#34; signals. In conventional logic arrangements, the &#34;assert&#34; may be a logic &#34;1&#34; and the &#34;de-assert&#34; a logic &#34;0&#34; (although the complement may also be used). Each logic module 10 I  thus receives as separate inputs the &#34;enable&#34; output from decoder 40 and the &#34;clock&#34; and &#34;reset&#34; signals. The output of each logic module 10 is thereafter applied as the control input to an associated driver gate 42 0  -42 3 , where the bus driver signals are also applied as inputs to their respective driver gates 42 0  -42 3 , in the manner shown in FIG. 2. Therefore, when a particular logic module 10 receives an &#34;assert&#34; signal as its enable input on a clock edge (for example, logic module 10 2 ), all four logic modules will first &#34;de-assert&#34; and then the (delayed) &#34;assert&#34; will pass through delay element 14 2  of logic module 10 2  (still during the same clock signal), activate gate 42 2 , allowing signal BusIn 2  to thereafter be applied as the driving signal to the bus. 
     It is to be understood that various other finite state machine arrangements may be used to generate the required 00-01-11-10-00 . . . sequence useful in providing the (delayed) &#34;assert&#34; and &#34;de-assert&#34; signals in accordance with the present invention. As long as the same finite state machine circuit is utilized in each logic module of the plurality of N logic modules deployed within a particular integrated circuit, the &#34;break-before-make&#34; bus driver selection of the present invention will be satisfied.