1. Field of the Invention
This disclosure relates to inter-device data communication buses in general, and, in particular, to a multi master bus enabling coupled devices to have reduced bus pin count and reduced logic for device enumeration and bus arbitration.
2. Description of the Related Art
Data communication among electronic devices typically uses a parallel and/or a serial bus. A bus is a multiplicity of connections among devices, each connection having a defined function. Digital data is typically in the form of multi-bit “words” such as 8 bits (a “byte”). Wider data words—for example 32 or 64 bits—are used in high-speed system architectures to enable processing of more data per unit of time (clock transition or cycle).
A parallel bus passes multiple bits (typically one or more words) on each clock transition, using one connection for each bit in the word. An example of a known parallel bus is the PCI bus, widely used in personal computers (PC's). The advantage of the parallel bus is that many data bits are transferred per clock cycle, increasing data transfer speed for a given number of clock cycles. For example, a 32-bit bus will pass 32 bits of information each cycle.
Some systems utilizing a parallel bus have a second bus for address data, adding many more lines to the bus. Other systems send address words and data words sequentially, on the same bus. Additional wires or traces are typically required for a clock signal, flow control signals, device enumeration signals, and bus arbitration signals. The resulting parallel buses for complex systems thus require large numbers of conductive traces on a printed wiring board (PWB), leading to increased PWB area, potential for crosstalk between traces, and reduced reliability, especially as trace widths become narrow.
The serial bus uses a smaller number of connections between devices, transmitting data bits sequentially rather than in parallel. A typical serial bus is point-to-point, connecting two devices, and has a first connection for data, sent one bit at a time, and a second connection for a clock signal having a transition per bit time. An example of a serial bus is the IEEE1394 (Firewire) bus used for high-speed data transfer from PC's to peripheral devices such as video cameras. A serial bus typically sends control, address, and data on the same connection, so well-defined signaling protocols must be developed. For example, a serial data packet might include bits uniquely defining the destination device for the packet, the memory address to which the data will be stored, the length of the data to be sent, and finally the data itself. The logic required to decode such a protocol, especially when multiple devices share the bus, can be complex, increasing device size and power consumption.
Buses connecting only two devices are known as point-to-point, simplifying communication because each device knows that any message coming to it can only be coming from a single known device. Often such point-to-point connections have a clear master-slave hierarchy, wherein the single master controls all aspects of bus communication; an example is a PC (master) coupled to a printer (slave). Some such buses have a forward data path (device 1 to device 2) and a reverse path (device 2 to device 1), allowing concurrent bidirectional data transfer device to device, but having the disadvantage of requiring a larger number of interconnecting traces.
More complex buses connect multiple devices, and allow more than one device to be the master. The device which is the master takes control of bus activity, and controls the flow of data on the bus to prevent multiple devices placing data on the bus at the same time. Devices coupled to this type of bus often must be able to communicate with any other device on the bus, even supporting near-simultaneous communication among two or more sets of devices.
Buses connecting a plurality of devices typically require enumeration, arbitration, and flow control. Enumeration is the process by which each device on the bus is assigned a unique identification, used as a form of device address during bus communication; arbitration is the process by which it is determined which device on the bus will gain control of the bus next (become the master); flow control is the process by which the flow of data from one device to others can be interrupted and restarted. For example, if the receiving device has a more urgent task to complete or is low on receive buffer memory, it can refuse a data transfer, or interrupt a transfer in process. Flow control also typically manages the hierarchy of data types, allowing more time-critical data to interrupt the transfer of data types of lower time sensitivity. Flow control is useful in systems passing video or voice data, such as Voice Over Internet Protocol (VOIP). In VOIP systems, speech delays longer than tens of milliseconds can be noticeable and annoying to the speakers. Flow control can be used to set the maximum allowable delay or latency in such an application.
A class of data bus often used for such data communication among multiple devices is called Multi Master Bus (MMBUS). Each device on such a bus can act as master to gain control of the bus, for example when it needs to pass data from itself to another device on the bus, or request data from another device on the bus. Various hierarchical or round-robin approaches to handling contention for the bus have been developed. Arbitration and flow control in MMBUS architectures typically requires additional logic in each device on the system, and additional connections (bus lines) among devices.
It is desirable to minimize the number of lines the bus requires, minimize the required logic (hardware and software) in each device, maximize the data throughput (bits per clock cycle), and provide efficient flow control and bus arbitration.
The present application describes a method and an apparatus for communication among multiple devices on a data bus with relatively few connections to the bus and reduced logic for enumeration, arbitration, and data flow control. A Very Little Multi Master Bus (VLMMB) couples various devices in a bit-rotated manner. When one or more devices seek ownership (control) of the bus, that device raises its assigned bus request line to a predetermined logic (e.g., “1” or “0”). Because there are as many bus request lines as devices, each device can “see” the devices requesting the ownership of the bus. If multiple devices request ownership, the requesting devices determine which one gains ownership by a hierarchical, round-robin, or similar logical decision. Hierarchical systems assign each device a priority, and the highest priority device needing bus ownership wins arbitration. Round-robin systems keep track of which device last had bus ownership, and devices take turns gaining ownership. Systems can also use a combination of hierarchical and round-robin. Whichever approach is used, all devices that determine they should not have ownership drop their bus request line, leaving a single device with the bus request line asserted. This device then has the ownership until such time that arbitration begins again.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. As will also be apparent to one of skill in the art, the operations disclosed herein may be implemented in a number of ways, and such changes and modifications may be made without departing from this invention and its broader aspects. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
The pin B0-212 of device 202 is coupled to line DQ0 of the bus 201; the following pins of device 202 are then coupled as follows—B1214 to DQ1, B2216 to DQ2, B3 to DQ3, and B4220 to DQ4. The second device 204 has its pins B0 through B4 also coupled to bus lines DQ0 through DQ4, but one bit rotated with respect to the connections of the device 202. That is, B0222 of the device 204 is coupled to DQ1, B1224 is coupled to DQ2, B2 is coupled to DQ3, B3 is coupled to DQ4, and B4230 is coupled to DQ0. On the third device 206, B0232 is coupled to DQ2, B1234 is coupled to DQ3, B2 is coupled to DQ4, B3238 is coupled to DQ0, and B4240 is coupled to DQ1. Similarly, on the fourth device 208, B0242 is coupled to DQ3, B1244 is coupled to DQ4, B2246 is coupled to DQ0, B3248 is coupled to DQ1, and B4250 is coupled to DQ2; and on the fifth device 210, B0252 is coupled to DQ4, B1254 is coupled to DQ0, B2256 is coupled to DQ1, B3258 is coupled to DQ2, and B4260 is coupled to DQ3.
The rotation of the LSB connection B0 (and other lines B1-BN) to the bus lines in this novel manner has several key advantages over known art, enabling simplified enumeration of devices; simplified arbitration for bus ownership, requiring minimal logic in each device; and simplified handling of devices which may be in a power-down or sleep mode to conserve power.
Enumeration of each device on the bus is denoted physically by the unique connection of its B0-B4 pins to bus lines DQ0-DQ4. When a known data pattern (for example B0 “1”, all other lines B2 through B4 “0”) is applied by a single device, all other devices can determine the enumeration of this transmitting device by noting on which input B1-B4 the data is received. For example, B0 of device 202 always appears at B4 of device 204, B3 of device 206, B2 of device 208, and B1 of device 210. A similar correlation exists for B0 output from any of the five devices; a simple mapping in each device therefore signals which other device has gained ownership of the bus. In some systems there is no requirement for enumeration, and no mapping is required.
After raising its B0 line to “1”, each device desiring the ownership of the bus, reads the status of DQ0-DQ4 lines to determine which other device also desires the ownership and determines whether to remain in a requesting state (B0=“1”) or drop its request for the bus. This determination is typically made by 1) a hierarchical ordering, wherein each device is given a priority level, and the device with the highest priority gains bus ownership; or 2), round-robin, where each device takes its turn, in order, or 3) some combination of hierarchical and round-robin. If hierarchical arbitration is used, each device is given a priority (for example, in the range 1 to 5 for a 5-device system) and a table of priorities of all other devices on the system. When a requesting device sees other devices also requesting the ownership, each device compares its priority level to that of other requesters to decide whether to drop or maintain its request. The round-robin arbitration typically uses a memory element (counter) in each device N to store which device N-X last had its turn at the bus ownership (whether that turn was used or not), and logic to determine if any devices between device N-X and device N are requesting ownership; if not, device N gains control of the bus. This round-robin approach gives devices ownership in turn, but avoids wasting “turns” of devices not requesting the ownership. Simpler round-robin approaches are known as well. Various combinations of hierarchical and round-robin arbitration can be used as needed. Other approaches to contention handling can also be used, taking advantage of the fact that all devices desiring ownership know which other devices also desire the ownership.
At the end of the clock cycle T3, the arbitration described above leaves a single device with its B0 “1” during the next clock cycle T4 thus asserting control of the bus and signaling to all other devices the winner of the arbitration phase. During the clock cycle T5, all other devices tri-state their outputs and prepare to listen for data from the device about to transmit, which continues to hold its B0 line at “1” as indicated by the dashed line in cycle 310 on DQ4-0.
Referring to
The received data is bit-rotated due to the bit-rotated connection of each device to the bus. De-rotation of the receive data word is typically (and simply) achieved by the receiving device noting which of its lines B0-B4 was logic “1” during arbitration cycle 308 or 310 of
In the example embodiment with data format as shown in
Another advantage of the bus architecture of this embodiment is its ability to deal with devices on the bus that may enter sleep or power-down modes to conserve energy. During sleep or power-down, any inactive device typically presents a high-impedance (tri-state condition) to the bus lines. On awakening, the device simply waits for the next arbitration phase signified by “0” on all lines DQ0-DQ4, and proceeds with arbitration as detailed above. If the device has been powered down and has lost knowledge of its “turn” in a round-robin arbitration scheme, it will wait until it again determines the order before requesting ownership.
Flow control can be optimized through protocol design. An upper bound on data latency can be set by limiting the number of data packets sent before arbitration re-starts. This sets the maximum time a device having high priority data to send must wait for the next arbitration opportunity. For example, given a 62.5 MHz clock and DDR clocking of 4-bit data words, 64 data bytes are sent in 64 clock cycles (1.024 microseconds). Thus, with a limit of 64 data bytes per arbitration/transfer cycle, a device with high-priority data waits no more than approximately 1 microsecond (not counting overhead) for another chance to arbitrate for ownership of the bus. The hardware and software logic required to implement a system using the exemplary embodiments described herein for VLMMB is significantly less than the known art. The exemplary embodiments simplify the bus arbitration and enumeration.
The arbitration start cycle at clock cycle T1 is the only time that all lines DQ0-DQN will be at logic “0”. Thus, recognition of the entry of arbitration at clock cycle T1 by any device 202-210, requires only a logical NOR of the five bus data lines DQ0-DQ4. The output of such a logical NOR gate will be “1” only during the arbitration cycle at T1. Similarly, during cycle T3 (the time during which any device desiring bus ownership takes its B0 to “1”), the same NOR gate output will be “0” only if one or more devices are requesting ownership. During this same cycle, devices requesting ownership are determined (enumerated) simply by reading the state of lines DQ0-DQ4. If hierarchical arbitration is in use, a simple map of priority levels of all devices, plus minimal hardware logic, allows any device to determine during cycle T3 if it has the highest priority of those requesting ownership. Known art solutions require either more lines on the bus, or a more complex protocol with software support to handle enumeration, arbitration, and flow control.
The novel features of the example embodiment can be applied to other variants of data bus. For example, given a 62.5 MHz clock and DDR clocking:
The most general variant is an N-pin variant, with N-3 bit data bus and N-2 devices, at clock rate F MHz, with or without DDR clocking. Another variant use all available lines DQ0-DQN for data, rather than reserving one for parity. This increases bus bandwidth, especially for those buses with very limited number of connections. For example, a 5-wire bus (DQ0, DQ1, DQ2, CLK, DACK), with three devices, using three data lines DQ0, DQ1, and DQ2 has nearly 50% more throughput can be achieved than a bus using only two of the DQ lines for data packet transfer. In this case, devices on the bus are designed to ignore an all-0's condition on data lines DQN during the data packet DAT times. This approach is facilitated if the protocol, as described herein, uses a LEN (length) descriptor preceding DAT (data) packets, to indicate how many data packets follow. An alternative approach using all DQ lines for data, while avoiding data “0”, is to RLL code the data as described above. Finally, all other data packets sent in the transfer packets cycles must be constrained to avoid an all-zero condition on DQ0-DQN (for example by reserving one of the DQN lines and holding it at logic “1”, or using odd parity as described above). In the exemplary embodiment described above, certain logic levels and timing relationships are described; functional equivalence is achievable with opposite or alternative logic levels and/or alternative timing relationships.
Those skilled in the art to which the invention relates will appreciate that yet other substitutions and modifications can be made to the described embodiments, without departing from the spirit and scope of the invention as described by the claims below. Realizations in accordance with the present invention have been described in the context of particular embodiments. These embodiments are meant to be illustrative and not limiting. Many variations, modifications, additions, and improvements are possible. Other allocations of functionality are envisioned and may fall within the scope of claims that follow. Finally, structures and functionality presented as discrete components in the exemplary configurations may be implemented as a combined structure or component. These and other variations, modifications, additions, and improvements may fall within the scope of the invention as defined in the claims that follow.