The invention relates generally to electronic circuits. More particularly, the invention relates to sensing of multiple states for a digital signal.
In electronics, a signal may have multiple states that need to be detected in order to understand the signal. In the most common circuits a signal is binary, having only two possible states. The detection of two states, which are generally high (which may be represented as “1”) or low (which may be represented as “0”), is relatively easy. In a simple example, a signal that is above a certain threshold voltage is high, while a signal that is below a certain threshold voltage is low.
However, some operations use a signal having a greater number of states, such as a three-state, or ternary, signal. In one example, the states for such a signal may be high, low, and high impedance, although three voltage levels may be used in some cases. The introduction of an additional state, while potentially allowing transfer of a great deal more information, creates complications in detection. A simple binary detection circuit will not be able to sense a third state, such as a high impedance state.
In a conventional detection environment, the detection of three states requires either greater complications in detection techniques or additional signal lines to transfer the information for the third state. In a first conventional example, ternary sensing is used, in which three discrete voltage levels are directly sensed. However, such a circuit is not compatible with common binary digital signaling standards, and thus is contrary to the preference for retaining compatibility with common signaling standards.
In second convention example, a pair of binary digital inputs may be utilized. However, while this method actually allows the sense of four states total, it requires that two binary lines be utilized for three states. This method increases the pin count and number of signal lines needed, when the preference is to convey as much information as possible using as few pins as possible.
In a third conventional example, a line may be precharged and then tested. Such a process assumes that the device under test is stimulated, and then the input is sensed. This assumption greatly limits the applicability of the technique to situations in which the user has control of the device driving the input since it does not allow for the continuous sense of the input to determine the high-impedance state.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements, and in which:
In one embodiment of the present invention detection of a multi-state signal is provided.
In one embodiment of the invention, a system detects three signal values on a signal line, which may be referred to as a ternary signal system. The signal may have a value of “high” or “low”, or may be undriven, a “high impedance” or “high Z” value.
In one embodiment of the invention, a single-ended digital I/O (input/output) system is utilized to sense when an input is not driven, and thus is in the third state. In one embodiment, the signal line is alternately driven with a weak digital “1” (or “high”) and a weak digital “0” (or “low”). In one embodiment, a signal history is used to determine if the input is being actively driven or is undriven.
In one embodiment of the invention, three separate states are sensed on a signal line using a single digital input, rather than the signal line being limited to a normal binary (“1” or “0”) input. An embodiment of the invention may thus be compatible with single-ended binary electrical systems such as TTL (transistor-transistor logic), LVTTL (low voltage transistor-transistor logic), CMOS (complementary metal oxide semiconductor), LVCMOS (low voltage complementary metal oxide semiconductor), and others. Ternary sensing is generally not compatible with digital I/Os because the input characteristics do not match the characteristics of digital drivers.
In one embodiment of the invention, sensing of three states may be accomplished using a digital input, a synchronous finite state machine (FSM), and a toggling weak driver. An input device under test (DUT) will provide a signal by driving the input with a logic ‘0’ (low), driving the input with a logic ‘1’ (high), or leaving the output undriven (high-impedance). In one embodiment, a detection system will continually drive the input line with a weak driver that provides a signal that is easily overcome by an external driver of normal strength. The value driven by the weak driver alternates between a weak high and a weak low signal. In one embodiment, the weak driver value may utilize the output of a T-type flip-flop that is driven by a clock. However, any circuit that generates a binary alternating pattern may be used in an embodiment of the invention.
In one embodiment of the invention, a history of the values sensed by a detector is used to determine the state of the signal on the input line. An input signal value can be determined using a finite state machine that operates according to the criteria provided in Table 1.
When the input is actively driven by an external driver, a weak internal driver is not able to overcome the external driver. As a result, a transition from a weak “low” to a “high” state can be determined to be a “high” signal. This is the result of the external driver overriding the signal of the weak internal driver. Similarly, a transition from a weak “high” to a “low” state can be determined to be a “low” signal.
When the output is undriven and the line is in a high-impedance state, the action of the toggling weak driver will switch the logic level sensed by the input. A counter can be used to count a number of times that the weak driver has switched the logic level of the input. When it is determined that the weak driver has switched the input a specified number of times, then the finite state machine can determine that the input is in the undriven or “high impedance” state. In one embodiment, the number of times that the input is switched will depend on, among other elements, the degree of certainty required for signal detection. The first time a signal is driven, it may coincidentally be the same as an external signal. For this reason, the weak signal needs to be switched and the detected output needs to follow the weak driven signal for at least two consecutive clock cycles to detect a high impedance signal, but additional clock cycles may be utilized to provide a greater certainty and ensure that a glitch has not occurred in the signaling.
In one embodiment of the invention, a weak driver 135 alternatively drives a weak “high” and a weak “low” on the line 110. The detector 105 then detects the resulting signal 115 on the line 110. In one embodiment of the invention, the detector may wait a certain delay period before detecting the signal to allow transitory “ringing” in a signal to dissipate. If the detected signal is the opposite of the weakly driven signal, with a “high” detected when driving a weak “low” or a “low” detected when driving a weak “high”, then the detected signal is determined to be the state of the signal.
If the detected signal is the same as the weakly driven signal, then the weak driver 135 toggles to the opposite state and the signal is again detected. If the detected signal now is the opposite of the weakly driven signal, then the detected signal is determined to be the state of the signal. If the detected signal follows the weakly driven signal for a certain number of repetitions, the number of repetitions being two or more, then the signal is determined to be an undriven or “high impedance” signal.
If the detected signal matches the detected signal 220, then the counter is incremented 230. If the counter equals a value n 235, with n being at least 2, then the signal may be deemed to be an undriven/high impedance signal 240. If n does not equal the value n, then the weak driver is toggled 245 to produce the opposite signal and a weak signal is again driven on the line 210. In the next iteration, the detected signal may now no longer match the weakly driven signal 220, indicating that the signal is driven and the detected and weakly driven signals had matched coincidentally in the first iteration. If the detected and weakly driven signals again match, then the iterations continue until the counter reaches the required value.
In one embodiment, the I/O system 305 includes a component to sense a signal, such as an input buffer 330 to drive the signal from the line 315 to a logic circuit 335. The logic circuit may act as a finite state machine. The logic circuit also receives the output of a T-type flip-flop 340, the output of the flip-flop 340 representing an internal signal for use in signal detection. The output of the flip-flop 340 is input to a weak driver 345 to drive a weak signal value on the line 315. The initial state of the flip-flop can arbitrarily be either “high” or “low”, and is toggled back and forth between states according to a clock clk 350. The logic circuit 335 then outputs a determined signal Z_out 355, as well as a signal logic_out 360. In one embodiment, a “high” value on Z_out 355 indicates that the sensed signal on line 315 is an undriven signal. A “low” value on Z-out 355 indicates that the sensed signal is a driven signal having the logical value found on logic_out 360.
In operation, the device under test 310 provides a signal by driving a logical signal on the line 315 or by leaving the line undriven. The T-type flip-flop 340 weakly drives a state on the line 315 using weak driver 345. The resulting signal is received by input buffer 330, with the resulting detected signal and the state of the flip-flop 340 being input to the logic circuit 335. If the detected signal and the state of the flip-flop 340 are opposite signals, then the detected signal is the value of the signal on line 315. In this case, Z-out will be “low” and the logical signal value is provided by logic_out 360. If the detected signal and the state of the flip-flop 340 are the same, then the value of the signal is initially uncertain. The clock 350 then toggles the flip-flop 340 and the output of the flip-flop 340 and the detected signal amplified by amplifier 330 are again input to the logic circuit 335. If the detected signal and the state of the flip-flop 340 are now opposite signals, the detected signal is the signal value, and the logical signal value is provided on logic_out 360. If the detected signal and the state of the flip-flop 340 are again the same, then the value of the signal may be deemed to be undriven. In another embodiment, the flip-flop 340 is again toggled and the process continues for one or more additional iterations to provide more certainty in the value of the signal. If the signal is deemed to be undriven, then Z-out will be “high” to indicate that a high-impedance signal has been sensed.
In
For a first portion of the simulation 425, the signal “logicsignal” 415 tracks the signal “outsignal” 410 on the common net between the devices, indicating that an external device driving is driving the signal. A finite state machine can determine the value of the driven signal to be the value of the detected signal. However, once the signal “outsignal” is no longer driven by the external device, the weak driver is able to successfully drive the input to alternate high and low states, as can be seen in the second portion of the timing diagram 430. After a certain number of cycles in which the weak driver is able to successfully change the state of the input (three cycles in this example), the finite state machine determines the input is in the high-impedance state, which is indicated by “highzsignal” transitioning to a “high” (“1”) value.
The timing diagram shown in
For illustration,
In conjunction with the sample simulation code provided in
In the description above, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices may be shown in block diagram form.
The present invention includes various processes. Certain processes of the present invention may be performed by hardware components or may be embodied in machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor or logic circuits programmed with the instructions to perform the processes. Alternatively, the processes may be performed by a combination of hardware and software.
Certain portions of the present invention may be provided as a computer program product, which may include a machine-readable medium having stored thereon instructions, which may be used to program a computer (or other electronic devices) to perform a process according to the present invention. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMS, EPROMs, EEPROMs, magnet or optical cards, flash memory, or other type of media/machine-readable medium suitable for storing electronic instructions. Moreover, certain portions of the present invention may also be downloaded as a computer program product, wherein the program may be transferred from a remote computer to a requesting computer by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
Methods herein may be described in their most basic form, but processes can be added to or deleted from any of the methods and information can be added or subtracted from any described messages without departing from the basic scope of the present invention. It will be apparent to those skilled in the art that many further modifications and adaptations can be made. The particular embodiments are not provided to limit the invention but to illustrate it. The scope of the present invention is not to be determined by the specific examples provided above but only by the claims below.
It should also be appreciated that reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature may be included in the practice of the invention. Similarly, it should be appreciated that in the foregoing description of exemplary embodiments of the invention, various features of the invention are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure and aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claimed invention requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment.
This application claims the benefit of U.S. Provisional Application No. 60/506,677, filed Sep. 25, 2003.
Number | Name | Date | Kind |
---|---|---|---|
3610954 | Treadway | Oct 1971 | A |
3925614 | Bousmar | Dec 1975 | A |
3938184 | DeFrancesco et al. | Feb 1976 | A |
4128812 | Pavlis | Dec 1978 | A |
4218771 | Hogge, Jr. | Aug 1980 | A |
4330863 | Wright | May 1982 | A |
4339731 | Adams | Jul 1982 | A |
4520489 | Hogge, Jr. | May 1985 | A |
4535459 | Hogge, Jr. | Aug 1985 | A |
4538283 | Hogge, Jr. | Aug 1985 | A |
4555789 | Hogge, Jr. | Nov 1985 | A |
4561098 | van Tol | Dec 1985 | A |
4565976 | Campbell | Jan 1986 | A |
4584695 | Wong et al. | Apr 1986 | A |
4587653 | Hogge, Jr. | May 1986 | A |
4686481 | Adams | Aug 1987 | A |
4724401 | Hogge, Jr. et al. | Feb 1988 | A |
4744084 | Beck et al. | May 1988 | A |
4788512 | Hogge, Jr. et al. | Nov 1988 | A |
4811361 | Bacou et al. | Mar 1989 | A |
4821293 | Shimizume et al. | Apr 1989 | A |
4884041 | Walker | Nov 1989 | A |
4926447 | Corsetto et al. | May 1990 | A |
4940904 | Lin | Jul 1990 | A |
5015970 | Williams et al. | May 1991 | A |
5036298 | Bulzachelli | Jul 1991 | A |
5111486 | Oliboni et al. | May 1992 | A |
5164966 | Hershberger | Nov 1992 | A |
5237219 | Cliff | Aug 1993 | A |
5243233 | Cliff | Sep 1993 | A |
5256963 | Johnson | Oct 1993 | A |
5260608 | Marbot | Nov 1993 | A |
5268937 | Marbot | Dec 1993 | A |
5305453 | Boudry et al. | Apr 1994 | A |
5315271 | Pascual et al. | May 1994 | A |
5446768 | Griffin et al. | Aug 1995 | A |
5455540 | Williams | Oct 1995 | A |
5477176 | Chang et al. | Dec 1995 | A |
5486824 | Kinerk et al. | Jan 1996 | A |
5592125 | Williams | Jan 1997 | A |
5737612 | Ansel | Apr 1998 | A |
5809312 | Ansel | Sep 1998 | A |
5969543 | Erickson et al. | Oct 1999 | A |
5969648 | Garnett | Oct 1999 | A |
5990704 | Erickson et al. | Nov 1999 | A |
6282231 | Norman et al. | Aug 2001 | B1 |
6421757 | Wang et al. | Jul 2002 | B1 |
6535831 | Hudson et al. | Mar 2003 | B1 |
Number | Date | Country |
---|---|---|
2573592 | May 1986 | FR |
2588433 | Apr 1987 | FR |
Number | Date | Country | |
---|---|---|---|
60506677 | Sep 2003 | US |