Embodiments relate to the field of integrated circuits; in particular to integrated circuits with input/output circuitry to perform simultaneous bi-directional data transfer.
Ever-larger systems are being implemented on single chips and the number of required input/output (I/O) signals on each of those chips is increasing as a result. But the number of I/O pads on an integrated circuit chip remains limited. Additionally, the speed of the integrated circuit cores has been increasing faster than the speed of the I/O. This drives an increase in the number of necessary I/O pads on a given chip.
Field Programmable Gate Arrays (FPGA) are employed in a wide variety of applications, including prototyping of large systems that will be implemented in more expensive Application Specific Integrated Circuits (ASIC). Prototyping allows system designers to run the prototyped system at hardware or near-hardware speeds to better evaluate performance and operation of the design. The prototype is often necessarily partitioned into multiple FPGA devices which in turn must be connected together consuming many I/O pads on each FPGA.
Techniques have been developed to increase the I/O capabilities of integrated circuits. Double Data Rate (DDR), for example, sends data using both edges of a clock but does not increase the inherent bandwidth of a connection. Moreover, such solutions are inherently synchronous and are not acceptable for applications requiring asynchronous data transfer. Also, bi-directional simultaneous signal transfer is described in “simultaneous Bidirectional Signaling [sic] for IC Systems” Computer Design: VLSI in Computers and Processors, 1990. ICCD '90. Proceedings, 1990 IEEE International Conference on 17-19 Sep. 1990 pp 430-433 written by Dally et al. Also, U.S. Pat. No. 5,604,450 titled “High Speed Bidirectional Signaling Scheme” describes a similar method. In both, a comparator subtracts a comparison voltage corresponding to the output voltage from a voltage at the I/O pad to extract the input voltage.
Embodiments will be readily understood by the following detailed description in conjunction with the accompanying drawings. Embodiments are illustrated by way of example and not by way of limitation in the figures of the accompanying drawings.
a-b illustrate timing diagrams of simultaneous, bi-directional data transfer in accordance with various embodiments;
a and 5b illustrate timing diagrams showing potential glitches in signals when one signal transitions in accordance with various embodiments;
In the following detailed description, reference is made to the accompanying drawings which form a part hereof, and in which are shown by way of illustration embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the disclosure. Therefore, the following detailed description is not to be taken in a limiting sense, and the scope of embodiments is defined by the appended claims and their equivalents.
Various operations may be described as multiple discrete operations in turn, in a manner that may be helpful in understanding embodiments; however, the order of description should not be construed to imply that these operations are order dependent. Also, embodiments may have fewer operations than described. A description of multiple discrete operations should not be construed to imply that all operations are necessary. Also, embodiments may have fewer operations than described. A description of multiple discrete operations should not be construed to imply that all operations are necessary.
The description may use perspective-based descriptions such as up/down, back/front, and top/bottom. Such descriptions are merely used to facilitate the discussion and are not intended to restrict the application of embodiments.
The terms “coupled” and “connected,” along with their derivatives, may be used. It should be understood that these terms are not intended as synonyms for each other. Rather, in particular embodiments, “connected” may be used to indicate that two or more elements are in direct physical or electrical contact with each other. “Coupled” may mean that two or more elements are in direct physical or electrical contact. However, “coupled” may also mean that two or more elements are not in direct contact with each other, but yet still cooperate or interact with each other.
For the purposes of the description, a phrase in the form “A/B” means A or B. For the purposes of the description, a phrase in the form “A and/or B” means “(A), (B), or (A and B)”. For the purposes of the description, a phrase in the form “at least one of A, B, and C” means “(A), (B), (C), (A and B), (A and C), (B and C), or (A, B and C)”. For the purposes of the description, a phrase in the form “(A)B” means “(B) or (AB)” that is, A is an optional element.
The description may use the phrases “in an embodiment,” or “in embodiments,” which may each refer to one or more of the same or different embodiments. Furthermore, the terms “comprising,” “including,” “having,” and the like, as used with respect to embodiments, are synonymous.
Embodiments provide integrated circuits—such as for example field-programmable gate arrays (FPGA) of other integrated circuit types—with sets of input/output (I/O) circuitry for simultaneous bi-directional signal or data transfer. One way to increase bandwidth communication between integrated circuits is to employ contention pads (i.e. I/O circuitry) capable of transmitting and receiving signals simultaneously, either synchronously or asynchronously. In embodiments, the I/O circuitry comprises logic to facilitate the simultaneous bi-directional signal or data transfer, without requiring other changes to the integrated circuit such as is required with other techniques for increasing I/O of an integrated circuit such as DDR.
A resulting signal on I/O terminal 105 may result from the concurrent driving of output signal DA and output signal DB such that those signals appear at I/O terminal 105 at a particular point in time. It is not necessary—and will often not be the case—that DA and DB are driven simultaneously. Input buffer 103 of device A may be configured to accept the resulting signal. Input buffer 103 may include comparison circuitry (not shown) to compare the resulting signal level to one or more comparison voltages and to generate input signal RA corresponding to output signal DB, for the combinatorial or reconfigurable logic (not shown) coupled to input buffer 103. Output signal DB and output signal DA may, in embodiments, be either one of two different signal levels. In embodiments, if output signal DA and output signal DB are the same or substantially the same, then the resulting signal level on signal wire 111 may be substantially the same as DA and DB. But if output signal DA and output signal DB differ, then the resulting signal level may be an intermediate signal level, between DA and DB. In embodiments, input buffer 103 may be configured to generate input signal RA, depending on the results generated by the comparison circuit, corresponding to output signal level DB even if the resulting signal level is the intermediate signal level. Input buffer 123 of device B may be similarly configured, and contain the same or similar comparison circuitry, to perform the same function and produce input signal RB that corresponds to output signal DA, for the combinatorial or reconfigurable logic (not shown) coupled to input buffer 123, even if the resulting signal on I/O terminal 125 is an intermediate signal level.
The timing diagram of
During time phase 1, both DA and DB are at a low signal level and resulting signal level W may also be at a low signal level. At the beginning of time phase 2, both DA and DB transition to a high signal level and resulting signal level W may therefore also transition to the high signal level. But at time phase 3, DB may remain at the high signal level, but DA may transition to the low signal level. Accordingly, resulting signal level W may transition to an intermediate signal level. During time phase 4, W may transition to the low signal level as DA remains at the low signal level and DB transitions to the low signal level. At time phase 5, W may again be at the intermediate signal level as DA—but not DB—transitions to the high signal level. Other transitions may also be possible in embodiments, and embodiments are not limited to any one or set of transition states.
Device 301 may also include an input buffer comprising comparator 321, comparator 323, and multiplexer 325. Likewise, device 351 may comprise an input buffer including comparator 371, comparator 373, and multiplexer 375. Comparators 321 and/or 371 may be configured to compare a resulting voltage on either I/O terminal 305 or 355 to a first comparison voltage Th. Comparators 323 and/or 373 may be configured to compare the resulting voltage on either I/O terminal 305 or 355 to a second comparison voltage Tl. Th may, in embodiments, be a signal level between a high signal level and an intermediate signal level. In embodiments, Tl may be a signal level between a low signal level and the intermediate signal level. Depending on the results of the comparisons of comparators 321 and 323, (represented by signals (e.g. voltages) Ah and Al) for example, multiplexer 325 may generate an input signal RA corresponding to the output signal level DB. Comparators 371 and 373 and multiplexer 375 may be configured to operate in a similar way to generate input signal RB corresponding to output signal DA depending on the signals Bh and Bl.
Table 1 depicts various voltage levels that may exist depending on various combinations of output voltages DA and DB, in accordance with embodiments. Table 1 represents only voltages on Device 301, but similar results may be produced by the I/O circuitry of device 351. For the purposes of illustration only, the high voltage is represented as 1 Volt, the low voltage is represented by 0 Volt, and the intermediate voltage is represented by 0.5 Volt. But embodiments are not limited to these or any other sets of voltages. Even though voltages are used in table 1, the signals may also be current levels in alternative embodiments.
As can be seen, in embodiments, if DA and DB differ, then the resulting voltage W will be the intermediate voltage—0.5 Volts—as a result of the voltage divider formed by resistors 307 and 357. When resulting voltage W is at the intermediate voltage level, the output of comparator 321 may be 0 (because, for example, the comparison voltage Th may be higher than resulting voltage W) and the output of comparator 323 may be 1 (because, for example, the comparison voltage Tl may be lower than resulting voltage W).
Multiplexer 325 may be configured to accept DA as a reference. In embodiments, multiplexer 325 may be configured to select Al as an output voltage when DA is 0 Volts and to select Ah when DA is 1 Volts. Thus, when DA is 0 Volts, multiplexer 325 may generate an input voltage RA of 1 Volts when Ah and Al differ by selecting Al as the input voltage. Similarly, when DA is 1 Volt, multiplexer 325 may generate an input voltage of 0 Volts whenever Ah and Al differ by selecting Ah as the input voltage. In this way, various embodiments are able to generate input signal RA that corresponds to the output voltage DB even if the comparison outputs indicate that resulting signal W is at the intermediate signal level. The input buffer of device 351 may be similarly configured to generate an output voltage RB—corresponding to output voltage DA—depending on the Bh and Bl outputs of comparators 371 and 373, respectively. In alternative embodiments not shown, a different circuit may be utilized that is configured to compare Ah and Al and to generate an output RA that is the opposite of DA when Ah and Al differ and which generates an output RA that is the same as DA whenever Ah and Al are the same.
In alternative embodiments, currents may be used for signal levels rather than voltages. In embodiments, signal wire 311 may have an impedance that matches the resistances of resistors 307 and 357.
The timing diagrams of
a and 5b illustrate timing diagrams showing glitches in signals when one signal transitions in accordance with various embodiments. The timing diagram of
Thus, referring for example to
Delay circuit 637 may be disposed between an output buffer and latch 643 and may include delay line 641 coupled between output signal DA and exclusive-or (XOR) gate 639. XOR 639 may produce a binary logic “1” whenever its inputs differ. When DA is stable, the XOR 639 inputs may be the same and XOR 639 may output a binary logic 0. In such cases, latch 643 may allow a signal at input I to propagate to output Q. But when DA transitions, there is a time period defined by delay 641, during which the inputs to XOR 639 may differ and accordingly produce an XOR output of “1”. During this time, latch 643 may maintain the output value, and ignore the input from multiplexer 625. After the time period defined by delay 641, the output of XOR 639 may return to “0” and latch 643 may allow the signal at input I to propagate to output Q. In embodiments, the delay of delay 641 may be long enough to mask the glitch, as previously described. In embodiments, the delay of delay 641 may be longer than the time it takes for a transition in DA to result in a new value on the output of the multiplexer, and input I of the latch.
Delay line 635 may be configured to cause output signal DA to be delayed longer than the total delay of XOR 639 and the amount of time it takes for latch 643 to latch. In this way, any glitch in the output of multiplexer 625 caused by a transition of DA may not propagate to input I of latch 643 before latch 643 has a chance to latch the previous signal at input I. Other embodiments of delay circuit 637 may include components other than delay line 641 and/or XOR 639. Embodiments are not limited to any type or types of delay circuits. Embodiments employing a delay circuit such as the one illustrated in
In the embodiments shown in
Transmit register 711 may be configured to sample an output data signal according to a transmit clock signal such as, for example, on either a rising or falling edge of the clock signal. Delay line 713 may be configured and/or programmed to delay the sampled output data signal from being input into output buffer 703. In embodiments, delay line 763 may be configured and/or programmed with the same delay. Receive register 715 may be configured to sample a signal from input buffer 705 according to a receive clock signal which may be, in embodiments, the same as the transmit clock signal. In general, I/O terminal 759, resistor 757, output buffer 753, transmit register 761, input buffer 755, input register 765, and clock circuit 771 within device 751 may be the same or substantially similar to their counterparts in device 701.
As shown in
Although certain embodiments have been illustrated and described herein for purposes of description of the preferred embodiment, it will be appreciated by those of ordinary skill in the art that a wide variety of alternate and/or equivalent embodiments or implementations calculated to achieve the same purposes may be substituted for the embodiments shown and described without departing from the scope of the disclosure. Those with skill in the art will readily appreciate that embodiments of the disclosure may be implemented in a very wide variety of ways. This application is intended to cover any adaptations or variations of the embodiments discussed herein. Therefore, it is manifestly intended that embodiments of the disclosure be limited only by the claims and the equivalents thereof.