Method and apparatus for arbitrating bus access amongst competing devices

Information

  • Patent Grant
  • 6430194
  • Patent Number
    6,430,194
  • Date Filed
    Tuesday, February 23, 1999
    25 years ago
  • Date Issued
    Tuesday, August 6, 2002
    22 years ago
Abstract
Bus access is arbitrated among modules connected to a common bus. Each module has a priority level and an arbitration number assigned to it. More than one module can have the same priority level. For each priority level, the arbitration numbers assigned are unique. When two or more modules attempt bus access at the same time, the one with the higher priority level wins access. If the priority levels are the same but one module has already accessed the bus, the module that has been waiting wins access. If the modules have the same priority level and have been waiting then the module with the highest arbitration number wins access.
Description




BACKGROUND OF THE INVENTION




1. Field of the Invention




The present invention relates to the field of digital data processing systems, and more particularly, to the field of networks wherein units of the network are connected to a high speed bus requiring arbitration for access and data transfer.




2. Discussion of the Related Art




As is well known in the art, as computer networks have grown in size and complexity, the need for high speed data transfer has increased. Among the types of data transfer devices which provide high speed transport between shared resources, such as bridges or switches, is the use of a high speed shared channel or bus. With such an arrangement, network efficiency and utilization is strongly affected by the procedure for controlling access to the high speed bus or channel.




As is also known, in general a transmission of data between two units over a high speed bus or channel requires two steps, since more than one unit has the capability of originating a transmission. The first step is for the transmitting unit to obtain control of the bus for some more or less defined interval. Once the selection step is completed, a second (or transfer) step is used to complete the transfer that is controlled by the selected transmitting unit.




Obtaining control of the bus requires contending with other units desiring bus access, to arbitrate and determine which one will be selected. As is known in the art, there are two principal generic approaches to arbitration. These are central arbitration and distributed arbitration. In the central arbitration approach, a single, central priority circuit or device receives all the requests for bus access and determines which requesting unit at any given time should be accorded the greatest priority and allowed to use the bus. Once the unit is selected, it is allowed to control the bus and effect the transfer. By contrast, in distributed arbitration, each unit connected to a bus is assigned a specific priority and each unit individually determines whether it has sufficient priority to obtain control of the bus when it desires to do so. If a unit of higher priority simultaneously seeks bus access, a device of lower priority must wait until some later time when it is the highest priority requester.




As is also known, in choosing a method of arbitration, fairness is assured when each unit connected to the bus has substantially equal average priority for obtaining bus access. One such approach to guaranteeing fairness is a primitive round robin method. With such a method, for each unit, two delay interval possibilities exist; the delay selection for each unit is switched from time to time, on a round-robin basis, such that all units are given equal average priority.




In today's networks, data of more than one protocol may also coexist and be transferred from unit to unit in the network via the high speed bus. Examples of different protocols are Ethernet, FDDI, and Asynchronous Transfer Mode (ATM). Therefore, a method of arbitration is required that will not only guarantee fairness, but one that can handle data of both similar and different protocols.




SUMMARY OF THE INVENTION




In accordance with one embodiment of the present invention, a method of granting bus access to one of first and second modules seeking control of a common bus, includes assigning a first module priority level to the first module; assigning a second module priority level to the second module; assigning a first arbitration number to the first module and assigning a second arbitration number to the second module. When the first and second module priority levels are not the same, bus access is granted to the module having a higher priority module priority level. When the first and second module priority levels are the same, it is determined whether one of the first and second modules has been previously granted bus access and is asserting a new request and the other has been waiting its turn bus access is granted to the module that has been waiting its turn. Finally, when the first and second priority levels are the same and each of the first and second modules has been waiting its turn, the first and second arbitration numbers are compared and access is granted to the module with a higher arbitration priority arbitration number.




Additionally, the present invention provides a method of granting bus access to one of first and second modules seeking control of a common bus, including assigning a first module priority level to the first module; assigning a second module priority level to the second module; assigning a first arbitration number to the first module and assigning a second arbitration number to the second module.




When the first and second module priority levels are not the same, bus access is granted to the module having a higher priority module priority level. When the first and second module priority levels are the same, it is determined whether one of the first and second modules has been previously granted bus access and is asserting a new request and the other has been waiting its turn bus access is granted to the module that has been waiting its turn. Additionally, when the first and second module priority levels are the same and each of the first and second modules has been waiting its turn, comparing the first and second arbitration numbers are compared and access is granted to the module with a higher arbitration priority arbitration number.




Additionally, the present invention provides an apparatus for granting bus access to one of first and second modules seeking control of a common bus, the first module having a first module priority level and a first arbitration number assigned to it and the second module having a second module priority level and a second arbitration number assigned to it. The apparatus includes a first circuit that grants bus access to the module having a higher priority module priority level when the first and second module priority levels are not the same; a second circuit that determines, when the first and second module priority levels are the same, whether one of the first and second modules has been previously granted bus access and is asserting a new request and the other has been waiting its turn and then grants bus access to the module that has been waiting its turn; and a third circuit that compares, when the first and second module priority levels are the same and each of the first and second modules has been waiting its turn, the first and second arbitration numbers and then grants access to the module with a higher arbitration priority arbitration number.











BRIEF DESCRIPTION OF THE DRAWINGS




The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as other features and advantages there of, will be best understood by reference to the detailed description of specific embodiments which follows, when read in conjunction with the accompanied drawings, wherein:





FIG. 1

is a block diagram illustrating an exemplary local area network (LAN);





FIG. 2

is a block diagram illustrating an exemplary switch;





FIG. 3

is a high level flowchart illustrating the arbitration process in accordance with the principles of the invention;





FIG. 4

is a state diagram detailing the arbitration process in accordance with the principles of the invention; and





FIG. 5

is a timing diagram showing the timing relation between the data bus and the arbitration bus.











DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS




Referring to

FIG. 1

, an exemplary local area network (LAN)


10


is shown to include four nodes or modules labeled as


12


,


14


,


16


, and


18


, respectively. The exemplary LAN


10


is also shown as including two switches labeled as


20


and


22


, respectively. Switch


20


includes three ports labeled as


24


,


26


, and


28


, respectively, while switch


22


is shown having three ports labeled as


30


,


32


, and


34


, respectively. Switch


20


is shown to be connected to a high speed bus


36


via port


28


, while switch


22


is shown connected to the high speed bus


36


via port


34


.




An exemplary transmission of data from node


12


(source) to node


18


(destination) proceeds in the following manner. A frame of data leaves node


12


and travels into switch


20


via the port


24


. While in the switch


20


, the frame is analyzed and checked for a source and destination address. If the source address and the destination address are valid, the data leaves the switch


20


and arbitrates for bus access. Once bus access is obtained, the frame of data is placed on the high speed bus


36


via port


28


. The data on the high speed bus


36


arrives at switch


22


via port


34


, and flows on to node


18


via port


32


.




It will be appreciated that the exemplary LAN


10


may contain more than the number of nodes or modules and switches illustrated. In addition, in the exemplary transmission explained above, node


12


(or any of the other nodes) may be an Ethernet network adhering to the Ethernet protocol, while node


18


(or any of the other nodes) may be a Fiber Distributed Data Interface (FDDI) network adhering to the FDDI protocol. Furthermore, one or more of the nodes illustrated in

FIG. 1

may be of the Asynchronous Transfer Mode (ATM) type, and thus adhere to the ATM protocol.




Referring now to

FIG. 2

, the switch


20


of

FIG. 1

is shown to include a Data Moving Engine (DME)


50


, a frame memory


52


, and a lookup memory


54


. Further, the DME


50


is shown to be connected to the ports


24


,


26


, and


28


. In addition, each port is shown to have a corresponding buffer memory in the switch


20


. Thus, port


24


is associated with buffer memory


56


, port


26


is associated with buffer memory


58


, and port


28


is associated with buffer memory


60


. Furthermore the switch


20


is shown to include a bus interface


62


. The bus interface


60


provides an interface between the DME


50


and the bus


36


through buffer memory


60


and port


28


. In a preferred embodiment, the DME


50


is a custom ASIC designed by Digital Equipment Corporation; it performs unicast transparent bridge forwarding (i.e., switching) at up to 1,000,000 pps, (packets per second), advanced bridge filtering, and core LAN functions at very high speeds. The DME


50


can support up to forty-eight bridged ports. The lookup memory


54


is used for data structures required by bridging and application code, while the frame memory


52


is used to store the configuration and operational code, and to run the code. When a frame of data arrives on a port, port


24


for example, the DME


50


checks the frame memory


52


and the lookup memory


54


to insure that the frame contains a valid source address and a valid destination address. Data leaving switch


20


flows from the DME


50


and on to the bus


36


via port


28


.




Data arriving at switch


20


comes off the bus


36


and flows into the DME


50


via port


28


. Again the DME


50


checks the received data for valid source and destination address in the frame memory


52


and the lookup memory


54


, and then forwards the data to the appropriate node via the appropriate port, node


12


via port


24


, for example.




The present invention resides in the bus interface of the switch, bus interface


62


in switch


20


, for example. As stated above, the bus interface


62


is an interface between the DME


50


and the bus


36


. In a preferred embodiment, the bus interface


62


is implemented in CMOS technology and typically runs at 50 MHz. It contains an FDDI MAC Transmit Interface (TX) and an FDDI MAC receive interface (RX) with the DME


50


. The TX interface runs at 50 MHz and consists of the following signals: a byte wide TX data path, TX parity, TX control lines, TX ready, and TX abort.




As mentioned previously, the bus interface


62


contains a hub backplane arbitration and bandwidth allocation logic device (Arb)


64


. This Arb


64


includes the following (more fully described below): a distributed arbitration priority mechanism to support different classes of traffic, unique arbitration ID bits for each module, round robin arbitration within a given priority level to produce fair access to the bus


36


, arbitration timeout, and bandwidth allocation between priority levels. The Arb


64


typically runs at 10 MHz.




After the bus interface


62


receives a TX cell from the DME


50


and the bus interface wins arbitration to the bus


36


, a burst transmission process initiates with a transmission of a start cell delimiter onto the bus


36


. The start burst delimiter is defined as a three clock (50 MHZ) sequence of the following: all


13


ten


13


bits


13


zero, all


13


ten


13


bits


13


one, all


13


ten


13


bits


13


zero. For example, for three clock cycles the following pattern is sent out:


0





1





0


on all ten bits. Once a transmitter starts to send the


0





1





0


start delimiter it will continue to send the entire start delimiter. An abort will not occur during the start cell delimiter. Immediately following the start delimiter, eight bits of data, and the parity and frame bits are transmitted. Except for the last two bytes, the frame bit will be high for the entire burst. In order to reduce inter-packet gap, the frame bit is dropped two bytes prior to the end of the burst. A receive logic in the Arb


64


looks at the frame bit to generate a bus idle signal for the transmit logic. With the frame bit dropping early, bus idle is generated earlier and the inter-packet gap is minimized. In addition to the frame bit, one bit provides parity (default is odd); this parity bit covers the eight bits and the frame bit. If the transmit logic encounters an error, such as parity error, protocol error, or the DME


50


aborted the burst, then an abort delimiter (all ten bits forced to 1's) will be transmitted on to the bus


36


.




The bus interface


62


receives a byte of data from the bus


36


every 20 ns (50 MHz). The bus interface


62


receive logic in the Arb


64


samples all ten bits from the bus


36


at an effective sampling rate of 300 MHZ. The receive logic searches for the start burst delimiter,


0





1





0


. This pattern is searched for on each of ten bits. For each bit, the receive logic searches for a start burst delimiter and for the middle of the data, for each of ten bits, i.e., the receiver attempts to find the best sampling point for each bit. Once a start burst delimiter has been detected for all ten bits, the receive logic asserts a valid data signal to a bus interface/DME RX interface (not shown) and the burst is sent to the DME


50


. If a start burst delimiter has been detected on any of the ten bits and within the next 50 MHz clock cycle, the remaining bits have not seen a start burst delimiter, a start burst error will be asserted in an interrupt register. The bus interface


62


receives eight bits of data, a frame bit, and a parity bit covering data and the frame bit from the bus


36


. If an abort delimiter is received, the receive logic sees this as a parity error and the parity error bit at the RX end is asserted high and the DME


50


will drop the burst.




As can be seen in

FIG. 2

, the bus


36


includes a serial two wire bus labeled as


66


A and


66


B, respectively. The serial two wire bus


66


A and


66


B allows arbitration to occur independently of a parallel data bus


68


.




Referring to

FIG. 3

, a high level flowchart of an arbitration process according to the invention is shown to be a sequential process wherein the following definitions will aid in the understanding of the process:


















ARB_STROBE




Backplane WIRED-OR signal asserted by







participating modules during the arbitration







sequence. The assertion of ARB_STROBE







synchronizes the arbitration state machines in all







modules. A module drives the backplane







ARB_STROBE signal by asserting its internal TX







ARB STROBE signal. A module monitors the state







of the backplane ARB_STROBE signal by its







internal RCV_ARB_STROBE signal.






ARB_DATA




Backplane WIRED-OR signal used for the







arbitration signaling process. ARB_DATA is







activated by modules which are PARTICIPATING







in a bus arbitration to signal their priority round







robin bit and arbitration number. A module drives







and monitors the backplane ARB_DATA signal by







the internal TX_ARB_DATA and







RCV_ARB_DATA signals.






RR_BIT_P0,_P1




Module internal signal used to insure fair access to







the bus based on sequencing through arbitration IDs.







Modules set their RR bit whenever the arbitration







process completes with the winning module having







a four-bit arbitration ID number higher than theirs.







When a module wins the arbitration process or if a







module with a lower number wins the arbitration







process, then the module clears its RR bit. Thus if a







module passes up its turn because it does not have a







request to assert, it clears its RR bit and waits in line







again. Modules just entering the arbitration process







should do so with their RR bits cleared to insure







they do not alter the sequence. Modules have







separate RR bits to each priority level. Thus







different priority levels round robin independently of







each other.






PARTICIPATING




A module is a bystander during an arbitration cycle







if it does not have a bus request. If a participating







module loses an arbitration bit period or if its







request is deasserted, the module becomes a







bystander. Bystander modules do not assert







ARB_STROBE. Bystanders must remain in sync







with the arbitration process and monitor the







arbitration in order to update their round robin bits







correctly. During an arbitration sequence a module







may transition from PARTICIPATING to







BYSTANDER but never vice versa.






BUS_REQUEST




Asserted by a module's transmit data path to the Arb







logic to trigger the Arb logic to participate in a bus







arbitration. The PRIORITY line to the Arb logic







must be valid whenever the BUS_REQUEST line







should stay asserted until the Arb logic returns a







BUS_GRANT if the BUS_REQUEST line is







deasserted by the transmit data path prior to the







assertion of BUS_GRANT the Arb logic will abort







the arbitration by transitioning to the BYSTANDER







state.






BUS_GRANT




Asserted by the Arb logic to the transmit data path







upon winning the Arb process and entering the







MASTER_ELECT state. Remains asserted until







BUS_REQUEST is deasserted by the transmit data







path.














The following states can exist on the serial arbitration bus:


















ARB_IDLE




Both ARB_STROBE and ARB_DATA deasserted.






ARBITRATE




ARB_STROBE asserted, ARB_DATA may be asserted







or deasserted. Arbitration runs to completion at which







point the winner (MASTER_ELECT) releases







ARB_DATA and continues to assert ARB_STROBE







until becoming bus master. For a given application, there







will be an upper bound on how long the arbitration bus







may remain in the ARBITRATE state before







transitioning to the ARB_IDLE state. This will depend







upon the max length of the packets allowed by an







application. The arbitration watchdog timer will time the







arbitration process to detect a “hung” arbitration







sequence.






Illegal




ARB_STROBE deasserted, ARB_DATA asserted.














Referring now to

FIG. 3

, the sequence of events occurring in the system represented in

FIG. 2

, during the arbitration process of the invention is as follows: at step


100


the bus


36


is in a WT


13


IDLE state or a WT


13


REQ state until at least one module connected to the bus


36


signals a request. The WT


13


IDLE state is entered under the following conditions:




reset




by the master elect module when it receives an acknowledgment to the bus grant it passed to its data path logic (bus requests deasserts)




when a bystander module exits the ARB


13


ID


13


BIT


0


state




when a participating module looses arbitration and exits the ARB


13


ID


13


BIT


0


state




when the arbitration winner is exiting the ARB


13


ID


13


BIT


0


state and detects that the BUS


13


REQUEST from its data path is no longer asserted (the data path chose to abort the transaction).




At step


102


, all modules wishing to request the bus


36


signal their priority level. The highest signaled priority level is established in this step.




At step


104


, a determination is made whether modules wishing to use the bus


36


have been waiting their turn (RR bit set), or have taken their turn and have a new request (RR bit cleared). Modules waiting in line have a higher priority.




At step


106


, modules having a unique arbitration number (four bits) compete for access to the bus


36


, with the higher arbitration number winning.




During each of the arbitration steps in

FIG. 3

, participating modules assert TX


13


ARB


13


STROBE and signal the value of their arbitration number on the TX


13


ARB


13


DATA line. After settling time, the value of the TX


13


ARB


13


DATA line is sampled. If the value matches what the module signaled, the module continues to participate in the next state. If the bus value does not match what the module signaled, the module loses the competition and ceases to participate (releases the TX


13


ARB


13


STROBE, —DATA lines). The WIRED—OR bus


36


guarantees that the module with the highest number will win the competition.




Referring to

FIG. 4

, a state diagram for the serial arbitration logic found in the Arb


64


as shown in

FIG. 2

, is shown in detail. As mentioned previously, the WT


13


IDLE state


200


is entered under the following conditions:




reset




by the master elect module when it receives an acknowledgment to the bus grant it passed to its data path logic (bus requests deasserts)




when a bystander module exits the ARB


13


ID


13


BIT


0


state




when a participating module looses arbitration and exits the ARB


13


ID


13


BIT


0


state




when the arbitration winner is exiting the ARB


13


ID


13


BIT


0


state and detects that the BUS REQUEST from its data path is no longer asserted (the data path chose to abort the transaction).




Once a module enters the WT


13


IDLE state


200


, it will no longer remain there until the global arbitration bus has reached the ARB


13


IDLE state


202


. Once the arbitration bus has reached the WT


13


IDLE state


200


, any module needing to request the bus


36


can start the arbitration process by asserting ARB


13


STROBE. Modules which do not have an immediate request pending move to the WT


13


REQ state


204


.




Modules enter the WT


13


REQ state


204


from the WT


13


IDLE state


200


if they do not have a request pending when they detect the arbitration bus is idle. They will remain in this state until either they receive a bus request from the transmit data path or some other module(s) start an arbitration cycle.




The arbitration PRIORITY state


206


is used to signal high (ARB


13


DATA=1) or low (ARB


13


DATA=0) priority. Those modules whose priority matches the value signed on the bus


36


continue to participate.




The serial arbitration ROUND


13


ROBIN state


208


is used to signal if any request is from a module waiting a turn (RR bit is set in modules Arb). If a module is participating then it drives the ARB


13


DATA line with its RR bit (each module has two RR bits, one for each priority). Those modules whose RR bit matches the value signaled on the bus


36


continue to participate.




During the serial arbitration ROUND


13


ROBIN states


210


, the participating modules signal their arbitration numbers. The module with the highest number will win. Following the ARB


13


ID


13


BIT


0


state


202


the winning module will transition to the MASTER


13


ELECT state


212


while all other modules transition to the WT


13


IDLE state


200


. If the winning module's BUS


13


REQUEST line has deasserted, this is an indication that the transmit data path wishes to abort the packet—in this case the winning module transitions directly to the WT


13


IDLE state


200


and does not assert a BUS


13


GRANT to the transmit data path.




It should be noted that the number of ARB


13


ID


13


BITx states may be altered to minimize the arbitration time based on the number of modules using the bus


36


. All modules must be programmed for the same number of ARB


13


ID


13


BITx states.




The winning module signals the MASTER


13


ELECT state


212


by releasing the ARB


13


DATA line and keeping the ARB


13


STROBE line asserted. All other modules will have released these lines. The MASTER


13


ELECT module signals a BUS


13


GRANT to its transmit data path and remains in this state until the data bust becomes idle, and its transmit data path logic starts transmission. The transmit data path signals the Arb


64


by deasserting the bus request at this time, allowing transition to the WT


13


IDLE state


200


.




If the MASTER


13


ELECT module decides not to transmit the packet for which it requested the bus


36


, it is required to release ARB


13


STROBE and transition to the WT


13


IDLE state


200


.




Referring to

FIG. 5

, the timing relationship between the data bus


68


and the arbitration bus


66


A/


66


B is illustrated. It should be noted that the arbitration states are not drawn to scale with respect to the data baud interval nor is the inter-packet gap shown to scale.




Having described a preferred embodiment of the invention, it will now become apparent to one skilled in the art that other embodiments incorporating its concepts may be used. It is felt therefore, that this invention should not be limited to the disclosed embodiment, but rather should be limited only by the spirit and scope of the appended claims.



Claims
  • 1. A method of granting bus access to one of first and second modules seeking control of a common bus, the method comprising:assigning a first module priority level to the first module; assigning a second module priority level to the second module; assigning a first arbitration number to the first module; assigning a second arbitration number to the second module; when the first and second module priority levels are not the same, granting bus access to a module with a module priority level having a higher priority; when the first and second module priority levels are the same, granting bus access to the module that has been waiting its turn longer; and when the first and second module priority levels are the same and each of the first and second modules has been waiting its turn, comparing the first and second arbitration numbers and granting access to the module with an arbitration number having a higher arbitration priority.
  • 2. The method as recited in claim 1 wherein the first and second arbitration numbers are unique for a given module priority level.
  • 3. The method as recited in claim 1, wherein a lowest value module priority level has the higher priority.
  • 4. The method as recited in claim 1, wherein a highest value module priority level has the higher priority.
  • 5. The method as recited in claim 1, wherein a lowest value arbitration number has the higher arbitration priority.
  • 6. The method as recited in claim 1, wherein a highest value arbitration number has the higher arbitration priority.
  • 7. The method as recited in claim 1, wherein the first and second modules are connected to an arbitration data bus having two lines on which the first and second arbitration numbers are compared in a round-robin mode of operation.
  • 8. The method as recited in claim 7 wherein the arbitration data bus has a WIRED-OR bus configuration.
  • 9. The method as in claim 1, wherein granting bus access to the module that has been waiting its turn longer comprises determining whether one of the first and second modules has been previously granted bus access and is asserting a new request and the other has been waiting its turn.
  • 10. The method as in claim 1, wherein comparing the first and second arbitration numbers comprises determining whether the first and second modules have been waiting their turns for similar lengths of time.
  • 11. A method of bus arbitration for a system comprising first and second modules connected by a bus having a plurality of data lines and an arbitration unit, the method comprising:signaling a first bus request to the bus for the first module needing to transmit a first plurality of data packets on to the bus, the first module having a first module priority level and a first arbitration number; signaling a second bus request to the bus for the second module needing to transmit a second plurality of data packets on to the bus, the second module having a second module priority level and a second arbitration number; setting a bus priority level according to a comparison of the first module priority level and the second module priority level wherein the bus priority level is set to one of the first and second module priority levels as determined by which module priority level has a higher priority than the other; when the first and second module priority levels are not the same, scheduling the transmission of a module with the module priority level equal to the bus priority level first, when the first and second module priority levels are the same: determining whether each of the first and second modules has either been previously granted bus access and is asserting a new request or has been waiting its turn for the bus; and when one module has been previously granted bus access and the other is waiting, scheduling the transmission of the module that has been waiting for the bus first, and when the first and second module priority levels are the same, and each module has been waiting for the bus: asserting the first arbitration number on the bus for the first module; asserting the second arbitration number on the bus for the second module; comparing the first arbitration number and the second arbitration number; and scheduling the transmission of the module with an arbitration number having a higher arbitration priority first.
  • 12. The method as recited in claim 11 wherein the first and second arbitration numbers are unique for a given module priority level.
  • 13. A method of bus arbitration for a system comprising first and second modules connected by a bus having a plurality of data lines and an arbitration unit, the method comprising:signaling a first bus request to the bus for the first module needing to transmit a first plurality of data packets on to the bus, the first module having a first module priority level and a first arbitration number; signaling a second bus request to the bus for the second module needing to transmit a second plurality of data packets on to the bus, the second module having a second module priority level and a second arbitration number; when the first and second module priority levels are not the same, scheduling transmission of a module with a module priority level having a higher priority; when the first and second module priority levels are the same: determining whether each of the first and second modules has either been previously granted bus access and is asserting a new request or has been waiting its turn for the bus; and when one module has been previously granted bus access the other is waiting its turn for the bus, scheduling the transmission of the module that has been waiting its turn for the bus first, and when the first and second module priority levels are the same, and each module has been waiting for the bus: asserting the first arbitration number on the bus for the first module; asserting the second arbitration number on the bus for the second module; comparing the first arbitration number and the second arbitration number; and scheduling the transmission of the module with an arbitration number having a higher arbitration priority first.
  • 14. The method as recited in claim 13, wherein the bus includes an arbitration data bus including two data lines.
  • 15. The method as recited in claim 14, wherein the arbitration data bus is set to a wait state in response to one of the following conditions:a reset signal on the arbitration data bus; a deasserting signal from one of the modules; an “exit from arbitration” signal from one of the modules; a “lose arbitration” signal from one of the modules; and a “win arbitration” signal from one of the modules.
  • 16. The method as recited in claim 14, wherein the two data lines of the bus include:an ARB13STROBE line, the ARB13STROBE line carrying a WIRED-OR signal asserted by the first and second modules during an arbitration sequence; and an ARB13DATA line, the ARB13DATA line carrying a signal used for an arbitration signaling process.
  • 17. The method as recited in claim 13, wherein a lowest value module priority level has the higher priority.
  • 18. The method as recited in claim 13, wherein a highest value module priority level has the higher priority.
  • 19. The method as recited in claim 13, wherein a lowest value arbitration number has the higher arbitration priority.
  • 20. The method as recited in claim 13, wherein a highest value arbitration number has the higher arbitration priority.
  • 21. The method as recited in claim 13, wherein the first and second modules are connected to an arbitration data bus having two lines on which the first and second arbitration numbers are compared.
  • 22. The method as recited in claim 21, wherein the arbitration data bus has a WIRED-OR bus configuration.
  • 23. A method of granting bus access to one of first and second modules seeking control of a common bus, the first module having a first module priority level and a first arbitration number, and the second module having a second module priority level and a second arbitration number, the method comprising:when the first and second module priority levels are not the same, granting bus access to a module with a module priority level having a higher priority; when the first and second module priority levels are the same, granting bus access to the module that has been waiting its turn longer; and when the first and second module priority levels are the same and each of the first and second modules has been waiting its turn, comparing the first and second arbitration numbers and granting access to the module with an arbitration number having a higher arbitration priority.
  • 24. The method as recited in claim 23, wherein a lowest value module priority level has the higher priority.
  • 25. The method as recited in claim 23, wherein a highest value module priority level has the higher priority.
  • 26. The method as recited in claim 23, wherein a lowest value arbitration number has the higher arbitration priority.
  • 27. The method as recited in claim 23, wherein a highest value arbitration number has the higher arbitration priority.
  • 28. The method as recited in claim 23, wherein the first and second modules are connected to an arbitration data bus having two lines on which the first and second arbitration numbers are compared.
  • 29. The method as recited in claim 28, wherein the arbitration data bus has a WIRED-OR bus configuration.
  • 30. The method as in claim 23, further comprising:assigning the first module priority level to the first module.
  • 31. The method as in claim 23, further comprising:assigning the second module priority level to the second module.
  • 32. The method as in claim 23, further comprising:assigning the first arbitration number to the first module.
  • 33. The method as in claim 23, further comprising:assigning the second arbitration number to the second module.
  • 34. The method as in claim 23, wherein granting bus access to the module that has been waiting its turn longer comprises determining whether one of the first and second modules has been previously granted bus access and is asserting a new request and the other has been waiting its turn.
  • 35. The method as in claim 23, wherein comparing the first and second arbitration numbers comprises determining whether the first and second modules have been waiting their turns for similar lengths of time.
  • 36. An apparatus for granting bus access to one of first and second modules seeking control of a common bus, the first module having a first module priority level and a first arbitration number assigned to it and the second module having a second module priority level and a second arbitration number assigned to it, the apparatus comprising:a first circuit that grants bus access to a module with a module priority level having a higher priority when the first and second module priority levels are not the same; a second circuit that determines, when the first and second module priority levels are the same, whether one of the first and second modules has been previously granted bus access and is asserting a new request and the other has been waiting its turn and then grants bus access to the module that has been waiting its turn; and a third circuit that compares, when the first and second module priority levels are the same and each of the first and second modules has been waiting its turn, the first and second arbitration numbers and then grants access to the module with an arbitration number having a higher arbitration priority.
  • 37. The apparatus as recited in claim 36, wherein the first and second modules are connected to an arbitration data bus having two lines on which the first and second arbitration numbers are compared.
  • 38. The apparatus as recited in claim 37, wherein the arbitration data bus has a WIRED-OR bus configuration.
  • 39. An apparatus for granting bus access to one of first and second modules seeking control of a common bus, the first module having a first module priority level and a first arbitration number assigned to it and the second module having a second module priority level and a second arbitration number, assigned to it, the apparatus comprising:means for granting bus access to a module with a module priority level having a higher priority when the first and second module priority levels are not the same; means for determining, when the first and second module priority levels are the same, whether one of the first and second modules has been previously granted bus access and is asserting a new request and the other has been waiting its turn and for granting bus access to the module that has been waiting its turn; and means for comparing, when the first and second module priority levels are the same and each of the first and second modules has been waiting its turn, the first and second arbitration numbers and for granting access to the module with an arbitration number having a higher arbitration priority.
  • 40. The apparatus as recited in claim 39, wherein the first and second modules are connected to an arbitration data bus having two lines on which the first and second arbitration numbers are compared.
  • 41. The apparatus as recited in claim 40, wherein the arbitration data bus has a WIRED-OR bus configuration.
Parent Case Info

This application is a continuation of Ser. No. 08/774,775 filed Dec. 30, 1996 now U.S. Pat. No. 5,898,694.

US Referenced Citations (11)
Number Name Date Kind
3611305 Greenspan et al. Oct 1971 A
4463445 Grimes Jul 1984 A
5072363 Gallagher Dec 1991 A
5109379 Kume et al. Apr 1992 A
5119292 Baker et al. Jun 1992 A
5282272 Guv et al. Jan 1994 A
5301333 Lee Apr 1994 A
5487170 Bass et al. Jan 1996 A
5594733 Katoen et al. Jan 1997 A
5689657 Desor et al. Nov 1997 A
5796732 Mazzola et al. Aug 1998 A
Foreign Referenced Citations (2)
Number Date Country
0159592 Oct 1985 EP
2287621 Sep 1995 GB
Continuations (1)
Number Date Country
Parent 08/774775 Dec 1996 US
Child 09/256041 US