The present invention relates generally to signaling systems, and more particularly to output driver calibration in high speed signaling systems.
Output calibrators are used to calibrate signaling levels in high-speed signaling systems. Through calibration, signal level variations resulting from changes in process, voltage and temperature can be reduced, increasing signaling margins and enabling higher signaling rates.
As signal amplitudes and bit times shrink to achieve the ever-higher signaling rates demanded by modern computing and electronics applications, the level of precision needed in signal calibration operations increases. Referring to
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
In the following description and in the accompanying drawings, specific terminology and drawing symbols are set forth to provide a thorough understanding of the present invention. In some instances, the terminology and symbols may imply specific details that are not required to practice the invention. For example, the interconnection between circuit elements or circuit blocks may be shown or described as multi-conductor or single conductor signal lines. Each of the multi-conductor signal lines may alternatively be single-conductor signal lines, and each of the single-conductor signal lines may alternatively be multi-conductor signal lines. Signals and signaling paths shown or described as being single-ended may also be differential, and vice-versa. Similarly, signals described or depicted as having active-high or active-low logic levels may have opposite logic levels in alternative embodiments. As another example, circuits described or depicted as including metal oxide semiconductor (MOS) transistors may alternatively be implemented using bipolar technology or any other technology in which a signal-controlled current flow may be achieved. With respect to terminology, a signal is said to be “asserted” when the signal is driven to a low or high logic state (or charged to a high logic state or discharged to a low logic state) to indicate a particular condition. Conversely, a signal is said to be “deasserted” to indicate that the signal is driven (or charged or discharged) to a state other than the asserted state (including a high or low logic state, or the floating state that may occur when the signal driving circuit is transitioned to a high impedance condition, such as an open drain or open collector condition). A signal driving circuit is said to “output” a signal to a signal receiving circuit when the signal driving circuit asserts (or deasserts, if explicitly stated or indicated by context) the signal on a signal line coupled between the signal driving and signal receiving circuits. A signal line is said to be “activated” when a signal is asserted on the signal line, and “deactivated” when the signal is deasserted. Additionally, the prefix symbol “/” attached to signal names indicates that the signal is an active low signal (i.e., the asserted state is a logic low state). A line over a signal name (e.g., ‘{overscore (<signal name>)}’) is also used to indicate an active low signal.
An output calibrator with dynamic precision is disclosed herein in various embodiments. In one embodiment, the output calibrator is initially operated in a coarse-precision mode, then switched to a fine-precision mode upon detecting a transition in a search direction signal. In coarse-precision mode, the output calibrator adjusts a calibration value by a coarse step value during each calibration operation, incrementing or decrementing the calibration value depending on the state of the search direction signal. In fine-precision mode, the output calibrator adjusts the calibration value by a fine step value during each calibration operation, the fine step value being smaller than the coarse step value. By this operation, the output calibrator achieves both the fast initial convergence of a coarse-mode system, and the reduced quantization error of a fine-precision system. Also, the transition from coarse-precision mode to fine-precision mode is transparent from a system configuration perspective. Accordingly, system programming for issuing the initial set of calibration operations may be set to support coarse-mode initialization, and need not be modified for dynamic-precision devices. Accordingly, many of above-described complications relating to legacy support for lower-precision devices and support for hybrid systems that include both lower-precision devices and dynamic-precision devices are avoided.
Still referring to
In the embodiment of
Due to process variations and run-time changes in voltage and temperature, the transmit circuits 241 within different integrated circuit devices 230 in a signaling system, or even within different I/O circuits 211 within the same integrated circuit device, tend to exhibit different IOL values and therefore different voltage margins between VOL and VREF. Left uncompensated, such process, voltage and temperature effects may attenuate the difference between VOL and VREF to the point that intolerable rates of signaling errors occur. To avoid such problems, a calibration value 260 (C[N−1:0]) generated by the dynamic-precision output calibrator 262 is provided to each transmit circuit 242 to control the current level, IOL, and therefore to enable calibration of the VOL level. In one embodiment, the constituent bits of the calibration value are ANDed with the transmit data value, T×Di, combinatorial circuit 243 and applied to a switching circuit 245.
The transmit circuit 275 additionally includes N logic AND gates 2931–293N, each having a first input coupled to receive a transmit data value (T×D), a second input coupled to a respective bit of the calibration value 260, and an output coupled to the gate terminal of a respective one of the transistors 2911–291N. By this arrangement, when the transmit data value is high, the transmit circuit 275 sinks a current IOL=C*IUNIT, where C is the numeric value of the calibration value (0 to N−1) and IUNIT is the on-current drawn by transistor 2911. Accordingly, the current level, IOL, and therefore the output voltage level, VOL, is a substantially linear function of the calibration value. Other relationships between the calibration value and the output voltage and current levels may be achieved through different transistor weightings.
Returning to the integrated circuit device 230
The dynamic-precision output calibrator 249 includes switches 2541 and 2542, voltage divider 251, comparator 253, storage element 255, variable-precision counter 257 and precision control logic 259. When a calibrate command (or sequence of calibrate commands) is generated or received within the integrated circuit device 230, a calibrate signal 264 is asserted to enable the compare-phase of a calibration operation. The calibrate signal 264 is supplied to the select inputs of a pair of transmit data multiplexers 2371 and 2372, to switches 2541 and 2542, and to a latch enable input (LE) of the storage element 255. The multiplexers 2371 and 2372 respond to the calibrate signal by selecting ‘0’ and ‘1’ values to be applied at the transmit data inputs of the I/O circuits 211i and 211i+1, respectively, instead of transmit data values T×Di and T×Di+1. By this operation, I/O circuit 211i draws current IOL, pulling signal line 236i down to VOL, and I/O circuit 211i+1 draws substantially zero current, enabling signal line 236i+1 to charge to VOH (i.e., VT). Switches 2541 and 2542, which may be implemented, for example, by pass-gate transistors, are switched to a conducting state by assertion of the calibrate signal 264, enabling the voltage differential between VOH and VOL to be applied to the voltage divider circuit 251. In one embodiment, the voltage divider circuit 251 is implemented by a pair of resistive elements, R1 and R2, so that a compare voltage ((VOH−VOL)*R1)/(R1+R2) is produced at an inverting input of the comparator 253. When the values of R1 and R2 are equal, the compare voltage is the common mode between the high and low output levels on signal lines 236i and 236i+1. That is, the compare voltage is the common mode voltage (VOH−VOL)/2. Although the values of R1 and R2 may be selected (or programmatically selectable) to provide other fractional multipliers in alternative embodiments, R1 and R2 are assumed to be equal for purposes of illustration. The reference voltage, VREF, is supplied to a non-inverting input of the comparator 253 so that the comparator 253 outputs a result signal 268, that indicates whether the reference voltage is greater than or less than the common mode voltage. Collectively, the voltage divider 251 and comparator 253 may be viewed as a compare circuit for comparing VOL, with a voltage level formed by dividing VREF by the fractional multiplier of the divider circuit and subtracting VOH (i.e., [(VREF*(R1+R2)/R1)−VOH].
In the embodiment of
The variable-precision counter 257 includes an up/down input (+/−) coupled to receive the direction signal 270 from the storage element 255, a strobe input coupled to receive an update signal 262 (UD), and a precision input coupled to receive a precision control value 258 (PC) from the precision control logic 259. During the update phase of a calibration operation, the update signal 262 is asserted to increment or decrement an internal count value within the variable-precision counter 257 according to the state of the direction signal. The count value is output from the variable-precision counter 257 as the calibration value 260. The size of the increment or decrement performed by the variable-precision counter 257 in each update phase is controlled by the precision control value 258. In one embodiment, the precision control value is implemented by a single precision control bit which selects between coarse-precision and fine-precision modes of the variable-precision counter 257. In the coarse-precision mode, one or more of the least significant bits (LSBs) of the variable-precision counter are bypassed in each update phase such that the calibration value is incremented or decremented by 2X in response to each assertion of the update signal, X being the number of bypassed LSBs. In the fine-precision mode, all the bits of the variable-precision counter are enabled to participate in increment and decrement operations such that the calibration value is incremented or decremented by one in response to each assertion of the update signal 262. As discussed below, in alternative embodiments of the invention, the precision control value is a multi-bit value that enables selection of more than two modes of precision within the variable-precision counter 257.
Still referring to
The precision control value 258 is output from the precision control logic (i.e., for use within the variable-precision counter) and is also provided to the data input of the storage circuit 313. By this arrangement, when the transition detect signal 316 goes high, the precision control value 258 goes high and, if the precision control value remains high until the next edge of the update signal 262, the high state of the precision control value is stored in the storage circuit 313 and output as stored precision control value 320 (SPC). The stored precision control value 320 is supplied to a non-inverting input of AND logic gate 315 which additionally receives, at an inverting input, a reset signal 318. Consequently, when the reset signal is low (a non-reset condition), the stored precision control value 320 is passed to the second input of the OR logic gate 311. Thus, when the reset signal 318 is low, the storage circuit 313, AND logic gate 315 and OR logic gate 311 operate to maintain the high state of precision control value 258, even if the transition detect signal 316 goes low. The direction signal 270 and delayed direction signals 312 and 314 are each input to respective inputs of AND logic gate 307 and to respective inverting inputs of AND logic gate 309. The outputs of the AND logic gates 307 and 309 are coupled, in turn, to respective inputs of the OR logic gate 317 to produce the reset signal 318. By this arrangement, if the states of the delayed direction signals 312 and 314 and the direction signal 270 all match (i.e., all three signals low or all three signals high), the reset signal 318 is asserted to reset the precision control value 311 to the low state. Thus, the precision control logic 300 transitions the precision control value 258 to a high state in response to a transition in the input direction signal 270, and resets the precision control value to a low state in response to non-transition of the direction signal 270 for more than two cycles of the update signal. As discussed below, the reset operation of the precision control logic 300 is provided to enable an output calibrator to drop out of a fine-precision mode during an initial sequence of calibration operations if an initialized state of the delayed direction signal 312 produces a premature selection of fine-precision mode.
At each rising (or falling) edge of the update signal 262, the bit maintained within a given one of the toggle elements 377 is held constant if the corresponding toggle signal 378 is low, and toggled (i.e., switched from ‘1’ to ‘0’ or vice versa) if the corresponding toggle signal 378 is high. The precision control value 258, constitutes the toggle signal 3781 for toggle element 3771, and the toggle control circuit 375 generates the toggle signals 3782–378N for toggle elements 3772–377N according to the state of the precision control value 258, the direction signal 270 and the current state of the calibration value 260. More specifically, when the precision control value 258 is high, selecting a fine-precision mode within the counter 370, toggle element 3771 is enabled to toggle the least significant bit of the calibration value 260 in every update cycle (i.e., every rising or falling edge of the update signal 262), and each of toggle elements 3772–377N is enabled to toggle its respective bit of the calibration value according to the state of less significant bits of the calibration value 260 and the direction signal 270. For example, if the direction signal 270 and precision control value 258 are both high, indicating fine-precision increment operation, then toggle signal 3782 is asserted by operation of increment circuit 3821 and logic gates 383 and 387 to toggle calibration bit C[1] if calibration bit C[0] is high; toggle signal 3783 is asserted by operation of increment circuit 3822 and logic gates 389 and 393 to toggle calibration bit C[2] if calibration bits C[1] and C[0] are high; and so forth to toggle signal 378N which is asserted by operation of increment circuit 382N−1 and logic gates 395 and 399 to toggle calibration bit C[N−1] if calibration bits C[N−2], CN−3 . . . C[2], C[1] and C[0] are all high. Similarly, if the direction signal 270 is low and the precision control value 258 is high, indicating a fine-precision decrement operation, then toggle signal 3782 is asserted by operation of decrement circuit 3841 and logic gates 381, 385 and 387 to toggle calibration bit C[1] if calibration bit C[0] is low; toggle signal 3783 is asserted by operation of decrement circuit 3842 and logic gates 381, 391, and 393 to toggle calibration bit C[2] if calibration bits C[1] and C[0] are low; and so forth to toggle signal 378N which is asserted by operation of decrement circuit 384N−1 and logic gates 381, 397 and 399 to toggle calibration bit C[N−1] if calibration bits C[N−2], CN−3 . . . C[2], C[1] and C[0] are all low. Note that the ‘+’ and ‘&’ symbols in the Boolean expressions within increment circuits 382 and decrement circuits 384 represent logic OR and AND operations, respectively.
When the precision control value 258 is low, selecting the coarse-precision mode, toggle element 3771 is disabled from toggling C[0], and the C[0] contribution to the logic for generating toggle signals 3782–378N is effectively canceled by the expressions (C[0]+/PC) and (/C[0]+/PC). That is, C[0] is bypassed in the increment circuits 382 and decrement circuits 384 when the precision control value is low. Accordingly, bit C[1] of the calibration value is toggled in each update cycle, and bits C[2] through C[N−1] are toggled according to the states of less significant bits of the calibration value, excluding the bypassed bit, C[0].
It should be noted that numerous changes may be made to the variable-precision counter 370 in alternative embodiments. For example, while the precision control value 258 is used to selectively bypass a single LSB in the embodiment of
In the example of
Each of the calibration operations, OP1–OP9, includes a compare phase marked by the high state of the calibrate signal 264, and an update phase that coincides with the rising edge of the update signal 262. Referring to
In the embodiment of
During calibration operation OP7, the direction signal 270 returns to the high state, causing the transition detect signal 316 to go high. The stored precision control value 320 remains high and, due to the differences between the first and second delayed direction signals 312 and 314 (and between the direction signal 270 and the first delayed direction signal 312), the reset signal 318 remains low. Accordingly, the precision control value 258 remains high during calibration operation OP7 so that, when the update signal is asserted, the calibration value 260 is incremented by one to a value of 124. During calibration operation OP8, the direction signal 270 returns to the low state, again causing the transition detect signal 316 to go high. The stored precision control value 320 remains high, and the reset signal 318 remains low. Consequently, the precision control value 258 is high when the update signal 262 is asserted at the conclusion of calibration operation OP8, causing the calibration value 260 to again be decremented to 123. The signal patterns during calibration operation OP9 mirror those of calibration operation OP7, and subsequent calibration operations mirror the results of OP8 and OP9, resulting in a fine-precision dithering about the target calibration value. If the target calibration value drifts slowly, the output calibrator will track the drift through fine-precision increments or decrements of the calibration value. A sudden, discontinuous shift in the target calibration value that results in the direction signal 270 being asserted in the same direction for three or more cycles of the update signal, will result in a transition to the coarse-precision mode, stepping by two, until the next calibration operation in which the direction signal changes state. Also, if the initial state of the delayed direction signal 312 does not match the first determination of the direction signal (i.e., as when the target calibration value is greater than 128), the output calibrator will temporarily enter fine-precision mode, but then drop back to coarse-precision mode due after both delayed direction signals 312 and 314 go high to match the high state of the direction signal 270.
Still referring to
During a first calibration operation, an N-bit precision control value is set to 1000 0000b (‘b’ indicating binary) to select a step size of 128. That is all the bits of the precision control value except bit PC[7] are in a bypass state to bypass less significant bits of the calibration value (i.e., prevent the less significant bits of the calibration value from participating in an increment or decrement operation). The calibration value is initially zero, so that the direction signal will be high, which, in conjunction with the low state of precision control bits PC[6:0] and the high state of precision control bit PC[7], will cause bit C[7] of the calibration bit to be toggled to a ‘1’. That is, the calibration value is stepped from 0 to 128 to conclude the first calibration operation. During a second calibration operation, the calibration value is determined to exceed the target calibration value. Consequently, the direction signal goes low to select a decrement operation. The precision control value is changed to 1100 0000b, halving the size of the step applied in the previous calibration operation. The low state of precision control bits PC[5:0] and the high state of precision control bits PC[7:6] causes the value held in the most significant two bits of the calibration value, C[7:6], to be decremented from 10 to 01 at the conclusion of the second calibration operation. Overall, the calibration value is halved from 128 to 64. During the third calibration operation, the direction signal is low again, so that a decrement operation is selected again. The precision control value is changed to 1110 0000b, again halving the size of the step. The low state of precision control bits PC[4:0] and the high state of precision control bits PC[7:5] causes the value held in the most significant three bits of the calibration value, C[7:5] to be decremented from 010 to 001. Overall, the calibration value is halved again from 64 to 32. During the fourth calibration operation, the direction signal goes high (i.e., the target calibration value, 48, is greater than the calibration value, 32), selecting an increment operation, and the precision control value is changed to 1111 0000b. The low state of precision control bits PC[3:0] and the high state of precision control bits PC[7:4] causes the value held in the most significant four bits of the calibration value, C[7:4] to be incremented from 0010 to 0011. Overall the calibration value is increased by one-half from 32 to 48. During the fifth calibration operation, the direction signal goes low (the target calibration value, 47, being less than the calibration value, 48) to select a decrement operation, and the precision control value is changed to 1111 1000b. The low state of precision control bits PC[2:0] and the high state of precision control bits PC[7:3] causes the value held in the most significant five bits of the calibration value, C[7:3] to be decremented from 00110 to 00101, the overall calibration value being decreased from 48 to 40. During the sixth calibration operation, the direction signal goes high to select an increment operation, and the precision control value is changed to 1111 1100b. The low state of precision control bits PC[1:0] and the high state of precision control bits PC[7:2] causes the value held in the most significant six bits of the calibration value, C[7:2], to be incremented from 001010 to 001011, the overall calibration value being increased from 40 to 44. During the seventh calibration operation, the direction signal goes high to select an increment operation again, and the precision control value is changed to 1111 1110b. The low state of precision control bit PC[0] and the high state of precision control bits PC[7:1] causes the value held in the most significant seven bits of the calibration value, C[7:1], to be incremented by 1 from 0010110 to 0010111, the overall calibration value being increased from 44 to 46. The seventh calibration operation effectively concludes the binary search for the target calibration value. During the eighth and subsequent calibration operations, the precision control value is set to 1111 1111b, thereby enabling the variable-precision counter to increment or decrement by one during each subsequent calibration operation. Accordingly, at the conclusion of calibration operation 8, the calibration value is increased by one from 46 to 47, and at the conclusion of calibration operation 9, the calibration value is increased by one again from 47 to 48. In the calibration operations that follow the ninth calibration operation, the calibration value dithers back and forth by one about the target calibration value. Thus, the binary search converges on the target calibration value in log2(X) calibration operations, where X is the size of the search range. In alternative embodiments, the search may include any combination of binary and linear searching, including coarse-precision stepping, followed by binary searching within a pair of bounding calibration values; binary searching to reduce the search range to a selected number of calibration values, followed by fine-precision searching, or coarse-precision and fine-precision searching; or any other search technique that involves step sizes of different precision.
Although the invention has been described with reference to specific exemplary embodiments thereof, it will be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
Number | Name | Date | Kind |
---|---|---|---|
3646329 | Yoshino et al. | Feb 1972 | A |
4192005 | Kurtz | Mar 1980 | A |
4315210 | Michel et al. | Feb 1982 | A |
4329600 | Stewart | May 1982 | A |
4414480 | Zasio | Nov 1983 | A |
4481625 | Roberts et al. | Nov 1984 | A |
4549124 | Beier | Oct 1985 | A |
4680487 | Kobayashi | Jul 1987 | A |
4691127 | Huizer | Sep 1987 | A |
4707620 | Sullivan et al. | Nov 1987 | A |
4715003 | Keller et al. | Dec 1987 | A |
4719369 | Asano et al. | Jan 1988 | A |
4728881 | Evans et al. | Mar 1988 | A |
4765188 | Krechmery et al. | Aug 1988 | A |
4779013 | Tanaka | Oct 1988 | A |
4859877 | Cooperman et al. | Aug 1989 | A |
4860198 | Takemaka | Aug 1989 | A |
4894562 | Cavaliere et al. | Jan 1990 | A |
4939389 | Cox et al. | Jul 1990 | A |
4958520 | Trommler et al. | Sep 1990 | A |
4967105 | Akamatsu et al. | Oct 1990 | A |
4977333 | Suzuki et al. | Dec 1990 | A |
4992724 | Hisanaga et al. | Feb 1991 | A |
5023488 | Gunning et al. | Jun 1991 | A |
5024101 | Tanaka et al. | Jun 1991 | A |
5045730 | Cooperman et al. | Sep 1991 | A |
5045832 | Tam | Sep 1991 | A |
5055715 | Inaba | Oct 1991 | A |
5075569 | Branson | Dec 1991 | A |
5081379 | Korteling | Jan 1992 | A |
5097148 | Gabara | Mar 1992 | A |
5107230 | King | Apr 1992 | A |
5117130 | Shoji | May 1992 | A |
5118971 | Schenck | Jun 1992 | A |
5121064 | Eller | Jun 1992 | A |
5134311 | Biber et al. | Jul 1992 | A |
5165046 | Hesson | Nov 1992 | A |
5185538 | Kondoh et al. | Feb 1993 | A |
5194765 | Dunlop et al. | Mar 1993 | A |
5206546 | Usami | Apr 1993 | A |
5237214 | Usami | Aug 1993 | A |
5254883 | Horowitz et al. | Oct 1993 | A |
5296756 | Patel et al. | Mar 1994 | A |
5387824 | Michelsen | Feb 1995 | A |
5457407 | Shu et al. | Oct 1995 | A |
5546042 | Tedrow et al. | Aug 1996 | A |
5568068 | Ota et al. | Oct 1996 | A |
5578940 | Dillon et al. | Nov 1996 | A |
5596285 | Marbot et al. | Jan 1997 | A |
5742798 | Goldrian | Apr 1998 | A |
5778419 | Hansen et al. | Jul 1998 | A |
5838177 | Keeth | Nov 1998 | A |
5977797 | Gasparik | Nov 1999 | A |
6009487 | Davis et al. | Dec 1999 | A |
6072747 | Yoon | Jun 2000 | A |
6094075 | Garrett, Jr. et al. | Jul 2000 | A |
6310814 | Hampel et al. | Oct 2001 | B1 |
6313670 | Song et al. | Nov 2001 | B1 |
6442644 | Gustavson et al. | Aug 2002 | B1 |
6462588 | Lau et al. | Oct 2002 | B1 |
6546343 | Batra et al. | Apr 2003 | B1 |
Number | Date | Country |
---|---|---|
0482392 | Feb 1991 | EP |
63-276935 | Nov 1988 | JP |
03-087907 | Apr 1991 | JP |
04-117709 | Apr 1992 | JP |
02000035831 | Feb 2000 | JP |
Number | Date | Country | |
---|---|---|---|
20040165693 A1 | Aug 2004 | US |