The present invention relates to data communication, and in particular, to a system and method for providing bidirectional half duplex communications signals between two devices. Embodiments of the invention provide the ability for the mentioned signals to traverse voltage boundaries with different ground references, thus providing greater safety and signal integrity.
Existing complex programmable logic devices (CPLD), field programmable gate array (FPGA), and application specific integrated circuit (ASIC) technologies do not directly support implementation of internal bidirectional signals without the use of a dedicated direction control signal. Current architectures allow for I/O pins to be configured as bidirectional signals. However, these architectures do not allow for two of these pins to be directly tied together while maintaining a truly asynchronous bidirectional data path. The only existing solution to this unique problem is the introduction of a data direction control signal, which makes asynchronous bidirectional communication impossible.
A common method of implementing an asynchronous bidirectional half duplex communications link is the use of an open drain or open collector driver and a logic receiver at each end of the communications link which has a pull up resistor to a common voltage. It is possible for multiple devices to be connected to the same link. In the case of multiple devices on the same link, when one device talks, all other devices on the net receive the message. In this case, an agreed means of addressing is used so that an intended recipient knows the message is for him. At times it is desirable or necessary to isolate certain devices on such a link. This can arise because multiple devices may share the same address or there may not be enough addresses to accommodate the number of devices. Alternately it may be desirable to isolate a failing device from the link so that the failing device does not render the link inoperative. Many other instances arise where it is desirable to be able to inexpensively route and manipulate such communications links. Typically open drain and open collector communication links can be isolated, switched and routed using analog switches. Analog switches are large and expensive and this limits the complexity of the switching which can be easily achieved. Therefore, it is desirable to be able to switch and route such signals using logic gates which could reside on a CPLD, FPGA, ASIC or other highly integrated, inexpensive device.
Common system management buses, such as I2C and SM Busses, fall short in their ability to be transmitted across high voltage isolation boundaries. The inherent open collector architecture of these busses provides that any item on the bus brings the bus state to ground. An isolation boundary implies two different ground references. It should be noted that this invention is different than traditional serial interfaces in which transmit and receive lines are present. For example, a standard full duplex UART can simply transmit and receive data across an isolation boundary using optical couplers. In the present invention, optical couplers are used to provide isolation whereas typically, optical couplers are inherently viewed as single direction devices and therefore are not applicable for use with a bidirectional half duplex data line.
The shortcomings of the prior art are overcome and additional advantages are provided through a communication system for isolating and level shifting of a bidirectional data communication bus between a first device and a second device. The communication system includes decomposition logic for decomposing the bidirectional data communication bus into a unidirectional transmit data communication bus and a unidirectional receive data communication bus. An optoisolator can then be used to transmit the unidirectional transmit data communication bus and the unidirectional receive data communication bus thereby providing electrical isolation and level shifting, and recomposition circuitry is connected to the optoisolated communication subsystem for recombining the isolated unidirectional transmit data communication bus and the isolated unidirectional receive data communication bus into the bidirectional data communication bus.
In another aspect, a system is provided which includes a first device having a bidirectional first input/output pin and a second device having a bidirectional second input/output pin. The system further includes a communication system coupling the bidirectional first input/output pin with the bidirectional second input/output pin without a data direction control line therebetween. The communication system includes an optically isolated bidirectional data communication bus wherein a portion of the bidirectional data communication bus is decomposed into unidirectional transmit and receive data communication buses which are optically isolated employing an isolated communication subsystem.
In the yet further aspect, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine is provided to perform a method of optically isolating a bidirectional data communication bus between a first device and a second device. The method includes: decomposing the bidirectional data communication bus into a unidirectional transmit data communication bus and a unidirectional receive data communication bus; employing an optically isolated communication subsystem to electrically isolate the unidirectional transmit data communication bus and electrically isolate the unidirectional receive data communication bus; and reestablishing the bidirectional data communication bus by recombining the extended unidirectional transmit data communication bus and the extended unidirectional receive data communication bus.
A further aspect of the invention provides an I2C bus implemented in a programmable logic device, where control signals are available to facilitate a robust high voltage noise immune interface while maintaining full software compatibility with the well known I2C specification. Although the invention is embodied in connection with an I2C bus as an example, it will be understood that the invention may be applied to any generic half duplex resistively pulled up communications scheme.
A method and system is presented to allow bidirectional, one-wire, open-collector (drain) signals to traverse voltage boundaries with different ground potentials using a novel configuration of conventional components as well as custom logic implemented in a CPLD or FPGA. The current invention allows such signals to traverse the abovementioned boundaries, and is particularly useful as system distribution voltages increase. For example, high voltage distribution systems for midrange and high-end computers, as well as the high voltage bus present in electric vehicles, necessitate a safe, drop-in solution to use simple and well established busses in connection with new environments.
The present invention also provides a system which is invulnerable to ground potential shift and other common mode anomalies. Safety isolation by use of optical isolation, widely recognized as being acceptable by worldwide safety agencies, is also achieved by the proposed embodiment of this invention.
Further, additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.
The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
The communication system includes a first bus driver 104 and a second bus driver 204. The first signal M is provided to an input buffer 106 and then to first asynchronous encoder logic 108. The first asynchronous encoder logic 108 receives the first signal M, current first state A, current second state B and second signal S and generates a next first state X. The next first state X is provided to gate 110 (e.g., D flip flop) that outputs the next first state X as the current first state on the state machine clock. The current first state A is fed back as an input to the first asynchronous encoder logic 108 and second asynchronous encoder logic 208. Gate 110 also generates an inverted second drive signal which is provided to second bus driver 204. The second bus driver 204 connects the input/output pin 202 to ground and may be a switch element such as a BJT (i.e., in open collector configuration), FET (i.e., in open drain configuration), etc. The second drive signal activates second bus driver 204 that connects the input/output pin 202 to ground. As described in further detail herein, this corresponds to first device 100 sending a logic low to second device 200.
The second signal S is provided to an input buffer 206 and then to second asynchronous encoder logic 208. The second asynchronous encoder logic 208 receives the first signal M, current first state A, current second state B and second signal S and generates a next second state Y. The next second state Y is provided to gate 210 (e.g., D flip flop) that outputs the next second state Y as the current second state B on the state machine clock. Current second state B is fed back as an input to the first asynchronous encoder logic 108 and second asynchronous encoder logic 208. Gate 210 also generates an inverted first drive signal which is provided to first bus driver 104. The first bus driver 104 that connects the input/output pin 102 to ground and may be a switch element such as a BJT (i.e., in open collector configuration), FET (i.e., in open drain configuration), etc. The first drive signal activates first bus driver 104 connects the input/output pin 102 to ground. As described in further detail herein, this corresponds to second device 200 sending a logic low to first device 100.
In operation, either first device 100 or second device 200 desires to send data to the other device. To send data, the transmitting device drives input/output pin to a logic low which, when the system 10 is in the idle state, drives the input/output pin of the receiving device to a logic low. This initiates transmission of data from the transmitting device to the receiving device.
If only the first device 100 is attempting to send data, the first device 100 drives the M signal to a logic low. The state transitions to AB=01 as shown in
To send a logic high from the first device 100 to the second device 200, the first device 100 releases the bus allowing the M signal to return to a logic high via pull up resistor 101. This results in the state transitioning to state AB=11 which in turn deactivates both bus drivers 104 and 204. The second signal S is no longer driven low, and returns to a logic high by virtue of pull up resistor 201. The first device 100 can continue sending logic low signals and logic high signals by driving the M signal as described above.
The second device 200 sends data to the first device 100 in a similar fashion. When the second device drives the S signal to a logic low, assuming the system state is AB=11, the system state transitions to state AB=10. The second device 200 sends logic low and logic high signals in a manner similar to that described above with reference to the first device 100. The second device 200 controls the first drive signals applied to first bus driver 104 to establish the value of the M signal.
State registers 302 latch the next state as the current state and correspond to gates 10 and 210. The output logic 304 uses the current state information to generate the appropriate outputs. This corresponds to the inverted output on gates 10 and 210. The state machine provided by the communication system 10 provides the current state as a feedback directly to the input of the next state logic 300. This is contrasted with a typical Moore state machine. The communication system 10 provides synchronous feedback directly to the inputs of the combinational logic.
Communication system 10 enables asynchronous, half duplex, bidirectional communication without the use of a directional control line. Communication system 10 is also transparent to the first device 100 and second device 200 and autonomously determines the direction of communication. The first device 100 and second device 200 behave as if they are directly tied together by a copper wire. The communication system 10 may be implemented using individual logic elements, as part of an integrated circuit (such as a memory controller, serial communications multiplexer, or an interrupt arbitrator). The communication system 10 may also be as part of a larger system in a custom ASIC, FPGA, or CPLD. The communication system 10 provides a mechanism to separate the bidirectional signal into two unidirectional push-pull signals that can be routed and switched using standard logic gates. The system may also be used to create high level switching and routing functions such as multiplexers and demultiplexers.
The separation mechanism of communication system 10 can further advantageously be employed in an enhanced communication system which extends the range of a bidirectional data communication bus from that presently available. One embodiment of this enhanced communication system is depicted in
As shown, a first device 800, such as a master device, is to communicate with a second device 810, for example, a slave device, employing a bidirectional data bus 805 which comprises a single line data transmission bus. In this example, bidirectional data bus 805 is broken into two portions with one embodiment of an enhanced communication system being inserted therebetween. Specifically, an autosensing bidirectional bus transceiver state machine 820 is employed adjacent to the first device 800 for separating the single line bidirectional communication bus into a unidirectional transmit data communication bus (serial data out (SDA OUT)) 822 and a unidirectional receive data communication bus (serial data in (SDA IN)) 824. Autosensing bidirectional bus transceiver state machine 820 can, in one example, comprise the communication system components described above in connection with
A differential communication subsystem comprising multiple differential drivers/receivers 830, 840, 860 & 870 is employed to extend the length of the unidirectional transmit and receive data communication buses 822, 824. As shown, differential driver/receiver 830 includes a driver D which drives serial transmit data across a half duplex differential communication bus 832 to a receiver R disposed within differential driver/receiver 840. Resistance RT comprises a conventional termination resistance for the differential communication bus. Serial receive data from second device 810 is driven by a differential driver D within differential driver/receiver 840 across a second half duplex differential communication bus 834 to a receiver R within differential driver/receiver 830 for output as the SDA IN (on the unidirectional receive data communication bus 824).
At a distal end of the differential communication subsystem, the SDA OUT signal gates a transistor 850, which in this example, converts the transmit data communication to an open collector transmit data communication with its base tied to Vcc across a resistor R. The SDA OUT communication and the SDA IN communication are recombined at a connect terminal 852 into, for example, an open collector bidirectional data bus 805, which is also connected to second device 810. Advantageously, state machine 820, the differential communication subsystem, and the recomposition circuitry are all transparent to first device 800 and second device 810, and there is no required data direction control bit or line. Consistent communication protocols are used throughout data transfers on the bidirectional data bus and the state machine a 820, differential communication subsystem and recomposition circuitry can be resident within the connection lines between the first device and the second device. [0043] A unidirectional, serial clock signal (SCL) is also shown in
Those skilled in the art will note from the above description that provided herein is a system and method to electrically isolate, for example, a half duplex open collector or open drain communication bus. Employing the state machine described in connection with
Referring to
Referring to
The present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately.
Additionally, at least one program storage device readable by a machine embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.
The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention.
While the invention has been described with reference to an exemplary embodiment, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the scope of the invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the invention without departing from the essential scope thereof. Therefore, it is intended that the invention not be limited to the particular embodiment disclosed as the best mode contemplated for carrying out this invention, but that the invention will include all embodiments falling within the scope of the appended claims.
This application contains subject matter which is related to the subject matter of the following applications, which are assigned to the same assignee as this application and which are hereby incorporated herein by reference by their entirety: “Method and System For Providing Bidirectional Asynchronous Communication”, Barus et al., Ser. No. 10/668,488 filed Mar. 23, 2003; “System, Method and Program Product for Extending Range of a Bidirectional Data Communication Bus”, Behrendt et al., Ser. No. 10/838391 filed May 4, 2004.