Abstract:
An asynchronous digital arbiter circuit suitable for use in computer systems applications requiring fast asynchronous arbitration between two asynchronous inputs. The arbiter resolves which of two input signals is to be granted access, and provides a busy signal to the source of the other input signal. The arbiter consists solely of standard digital logic circuit elements including logic gates, flip-flops, and inverters.

Description:
BACKGROUND OF THE INVENTION 
     This invention relates a digital signal arbiter which multiplexes access by two ports into a single port. The arbiter is totally digital and asynchronous. 
     Many electronic systems, such as computers, must resolve which of two competing inputs will receive priority. A typical case is a dual port memory controller where two asynchronous data input ports compete for access to a user-defined single port random access memory (RAM). The controller must resolve which of the two asynchronous signal inputs is the winner and gets access to RAM. The controller then signals that the other asynchronous signal input is the loser. The loser gets a busy signal to indicate it must wait for access to RAM. 
     It is desirable to perform this arbitration by totally digital means. Existing arbiters fall into two classes: 
     Synchronous arbitration using clocks. By definition, not suitable for this application where asynchronicity is required. 
     Asynchronous arbitration by non-linear (analog) techniques to solve the problem of meta-instability. These arbiters typically have hard-wired priority rules and imprecise guard band times during access switching. They also have the major disadvantage of including analog circuit elements. 
     SUMMARY OF THE INVENTION 
     The present invention is an asynchronous arbiter that is all digital, and includes only standard digital logic circuit elements. Therefore, the arbiter can be implemented in discrete logic, standard LSI, gate arrays, megacells, or standard cells. 
     The arbiter has two input terminals that each accept an asynchronous input signal. Each input terminal is connected to a D-type flip-flop that serves as a memory element. The two D-type flip-flops are each connected to a logic circuit consisting of several logic gates. The arbiter also includes two output logic circuits and a reset circuit. Each of the two output logic circuits is capable of generating an output signal to one of the providers of the input signals, indicating a busy signal. Thus the arbiter inhibits one of the input signals. 
     The present invention has the further advantage over the prior art of being more reliable, more predictable in its operation, and glitch-free. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of the present invention. 
     FIG. 2 is a schematic diagram of the present invention. 
     FIGS. 3-6 are timing diagrams of the circuit of FIGS. 1 and 2. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The arbiter is shown in block diagram form in FIG. 1. An asynchronous input signal 9 is provided to D-type flip-flop 10 at data (D) input terminal 12. A second asynchronous input signal 13 is provided to D-type flip-flop 14 at data (D) input terminal 16. The two input signals 9 and 13 also are provided to logic circuit 18 at, respectively, input terminals 20 and 22. 
     The second input signal 13 is provided to the first output logic circuit 24 at input terminal 26. The first input signal 9 is provided to the second output logic circuit 28 at input terminal 30. 
     The output (Q) terminal 32 of the first flip-flop is connected to input terminal 34 of first output logic circuit 24 and to input terminal 36 of second output logic circuit 28 The output (Q) terminal 38 of the second flip-flop 14 is connected to input terminal 40 of the first output logic circuit 24. The inverted output (Q) terminal 42 of the first flip-flop 10 and the inverted output (Q) terminal 44 of the second flip-flop 14 are connected to logic circuit 18 at, respectively, input terminals 46 and 48. 
     Output terminal 50 of logic circuit 18 is connected to input clock (C) terminal 52 of the first flip-flop 10, and is also connected to input clock (C) terminal 54 of the second flip-flop 14. A second output terminal 56 of logic circuit 18 is connected to the first output logic circuit 24 at input terminal 58 and to the second output logic circuit 28 at input terminal 60. 
     A reset circuit 62 is provided that is connected to the first flip-flop 10 at reset (R) terminal 64 and to the second flip-flop 14 at reset (R) terminal 66. 
     The first output logic circuit 24 has an output terminal 68 to provide a busy signal 69 to inhibit the first input signal 9. The second output logic circuit 28 has an output terminal 70 to provide a busy signal 71 to inhibit the second input signal 13. 
     Further detail of the arbiter is shown in FIG. 2. 
     Inverter 80 connects first input signal 9 to data (D) input terminal 12. Similarly, inverter 82 connects second input signal 13 to data (D) input terminal 16. 
     The reset circuit 62 consists, in sequence, of AND gate 84, inverter 86, NOR gate 88, inverter 90, NAND gate 92, and AND gate 94. AND gate 94 has external reset (RST) input 96. Reset circuit 62 also has as inputs on input terminals 98 and 100, respectively, first output signal 69 and second output signal 71. 
     The second output logic circuit 28 consists of NAND gate 102. The first output logic circuit 24 consists of NAND gate 104 and NAND gate 106, connected so that the inputs to NAND gate 104 are from output (Q) terminal 32 and from output (Q) terminal 38. NAND gate 106 has as inputs the output 108 of NAND gate 104 and also the inverted second input signal 13, the signal on output (Q) terminal 38, and the signal on output terminal 56 of the logic circuit 18. 
     The logic circuit 18 consists of NAND gate 110, AND gate 112, NAND gate 114, and inverter 116. NAND gate 110 has as inputs, terminals 20 and 22. AND gate 112 has as its inputs terminals 46 and 48. The outputs 118 and 120 of gates 110 and 112 are connected as inputs to NAND gate 114. The output 122 of NAND gate 114 is connected to terminal 56 and also is an input to inverter 116. 
     The output (Q) terminal 42 is converted to two inverters 124 and 126 in series. Similarly, the output (Q) terminal 44 is connected to two inverters 128 and 130 in series. 
     The operation of the arbiter is as follows: 
     In one embodiment, the arbiter is an integrated circuit and used as a controller for RAM. There are two RAM ports, left and right. The input signals are, CSR L  (Chip Select RAM-left) and CSR R  (Chip Select RAM-right), where left and right designate the two RAM ports. Thus CSR L  corresponds to input signal 9 in FIGS. 1 and 2. CSR R  corresponds to input signal 13 in FIGS. 1 and 2. The waveform symbols on FIGS. 1 and 2 denote negative-going pulses and trailing-edge clock and reset pulses. Once arbitration is complete, the arbiter sends out a busy signal to the loosing (non-selected) port. Thus BUSY L  (busy-left) is the busy signal corresponding to output signal 69 in FIGS. 1 and 2. BUSY R  (busy-right) corresponds to output signal 71 in FIGS. 1 and 2. 
     In this embodiment using a standard 2 micron CMOS gate array technology with TTL Input/Output, the arbiter is provided a DC supply voltage of 5.0 volts±10% and operates at an ambient temperature of 25° C. Under these typical conditions, the operating parameters of the arbiter are as follows (corresponding to FIG. 3): 
     
         ______________________________________PARAMETER TABLE (see FIGS. 3,4,5)      Parameter Timing - nanoseconds (ns)Parameter  Number    Minimum  Typical                                Maximum______________________________________CSR cycle time      1         --       &gt;50    -- ##STR1##   2         15       25     55time from CSR ##STR2##   3          5       10     20signal release timearbitration      4         --        5     10priorityset up time______________________________________ 
    
     From the Parameter Table, parameter number 4 (also see FIG. 4) states that under typical conditions, if input signals CSR L  and CSR R  are separated by greater than 5 ns, then whichever signal (CSR L , CSR R ) was first, will be the winner of the arbitration, and the losing signal will have its BUSY output activated. If parameter 4 is not met under typical conditions, in which input signals CSR L  and CSR R  are not separated by at least 5 ns (typical conditions), then CSR L  is biased to be the winner of the arbitration and thus BUSY R  will be activated. If parameter 4 is not met as stated above, and for some reason the supply voltage or the ambient temperature are higher or lower than the nominal value specified above, CSR L  is not necessarily the winner. However, either CSR L  or CSR R  will be the winner. Thus proper arbitration will occur even outside the nominal operating conditions. This is a satisfactory outcome, since it does not matter which input is selected as the winner by the arbiter as long as one is definitely chosen. Thus the arbiter is &#34;meta-stable.&#34; 
     FIG. 3 shows a timing diagram for the input (CSR) and output (BUSY) signals. The emphasized (bolded) numerals 1 2, 3, 4 designate the parameters as numbered in the Parameter Table, supra. In FIG. 3, each timing line refers to both ports. Thus CSR L/R  designates CSR L  or CSR R . 
     At nominal operating conditions, FIG. 4 shows the timing diagram of CSRHD L winning the arbitration, and FIG. 5 shows the timing diagram of CSR R  winning the arbitration. 
     DETAILED THEORY OF OPERATION 
     The following discussion presents the detailed operation of the arbiter circuit as shown in FIG. 2. 
     Upon reset (RST, signal 96), terminals 66 and 64 receive logic low signals (hereinafter referred to as &#34;low&#34;), which reset D-type flip-flops 10 and 14 creating a logic high (hereafter referred to as &#34;high&#34;) at inputs 46 and 48. Also logic low is created at the Q outputs 32 and 38 which forces a high output at gates 102 and 106 respectively. 
     After reset, if either asynchronous signal inputs 9 or 13 go low, then a high is created at output 118 which is NANDed by gate 114 with the signal on output 120 (high from inputs 46 and 48 being high from reset) which forces the signal on output 122 of gate 114 to go low. The signal on output 122 goes low to momentarily disable gates 102 and 106 by the signal on terminal 56 while arbitration is completed. 
     The signal on output 122 is inverted by gate 116 and used as a common clock signal on terminal 50 to clock the D-type flip-flops 10 and 14 by clock signals to inputs 52 and 54 respectively. This latches the state of the asynchronous signal inputs of 9 and/or 13 at terminals 12 and 16 of the D-type flip-flops. 
     Any possible meta-instability at the D-type flip-flops will eventually be resolved with one or the other of Q outputs at terminals 32 and 38 going high. This will cause the output signals on either terminal 46 or 48 to go low, and force the signal on output 120 low which forces the signal on output 122 high and the signal on output 50 low. Also, the signal on output 56 is forced high, enabling gates 102 and 106. Then for example, if the signal on output 32 was latched high and the signal on output 38 was latched low and since the signal at input 30 would be high, gate 102 would force signal 71 low. This would be the case where signal input 9 (left port) goes low and wins arbitration and forces the (right port) signal output 71 to go low. 
     Gate 104 is used to resolve the conflict where both signal inputs 9 and 13 go low within a defined time window of one another (see parameter 4 of Parameter Table, under typical conditions) and hence both signals are latched in their respective D-type flip-flops, forcing the Q-output signals on outputs 32 and 38 to both go high simultaneously. In this case gate 104 senses this and forces output signal 69 of gate 106 high, while allowing output signal 71 of gate 102 to go low. This means that under these circumstances, the (left port) input signal 9 is biased to win the arbitration, under typical conditions. 
     The D-type flip-flops are cleared, by the trailing, low-to-high edge of output signal 69 or 71. This is done by creating a reset pulse by reset circuit 62. This reset pulse is a negative-going low pulse which reset the D-type flip-flops by signals on reset input terminals 64 and 66. The port (left or right) that wins the arbitration always causes this pulse from reset circuit 62 when its input signal goes high again which causes the signal on inputs 12 or 16 to go low and forces the output signals 71 or 69 from gates 102 or 106 respectively, to go high. This trailing, low-to-high edge of output signal 71 or 69 causes reset circuit 62 to produce the reset pulse. The negative reset pulse of reset circuit 62 can be lengthened or shortened by adding more delay elements similar to delay gate 90, 88, and 86. 
     When both D-type flip-flops 10 and 14 are reset by reset circuit 62, by the release (low to high) of input signal 9 or 13, then if the input signal that originally lost the arbitration, is still low, then logic circuit 18 will operate as previously discussed and create a new clock signal on output 50. 
     The critical timing of the basic circuit is to keep the reset pulse from reset circuit 62 as short as possible, but yet long enough to reset the D-type flip-flops 10 and 14 of the particular embodiment. This reset pulse causes the signals on outputs 42 and 44 to go high. The delay path from output 42 to input 46 or from output 44 to input 48 added to the delay path from input 46 or input 48 to output 50 through logic circuit 18, must be longer than the pulse width of the reset pulse of reset circuit 62 (see FIG. 6). 
     If this reset pulse is not of the right length as described supra., more delay can be added by use of gates similar to delay gates 124, 126 and 128, 130. 
     The above description of the invention is illustrative and not limiting. Further modifications and equivalents may be employed without departing from the true spirit and scope of the invention.