Periodic calibration for communication channels by drift tracking
11258522 · 2022-02-22
Assignee
Inventors
- Craig E. Hampel (Los Altos, CA, US)
- Frederick A. Ware (Los Altos Hills, CA)
- Richard E. Perego (Thornton, CO)
Cpc classification
H04L7/0087
ELECTRICITY
International classification
H04L7/00
ELECTRICITY
Abstract
A method and system that provides for execution of a first calibration sequence, such as upon initialization of a system, to establish an operation value, which utilizes an algorithm intended to be exhaustive, and executing a second calibration sequence from time to time, to measure drift in the parameter, and to update the operation value in response to the measured drift. The second calibration sequence utilizes less resources of the communication channel than does the first calibration sequence. In one embodiment, the first calibration sequence for measurement and convergence on the operation value utilizes long calibration patterns, such as codes that are greater than 30 bytes, or pseudorandom bit sequences having lengths of 2.sup.N−1 bits, where N is equal to or greater than 7, while the second calibration sequence utilizes short calibration patterns, such as fixed codes less than 16 bytes, and for example as short as 2 bytes long.
Claims
1. A method of calibrating a first component having a circuit that is to transfer data between the first component and a second component, the method comprising: performing a first calibration operation, the first calibration operation to establish a first value for an operating parameter to be used in connection with the transfer of the data, wherein the first calibration operation is to test a range of possible values for use as the first value; and from time-to-time performing a second calibration operation to test a non-exhaustive subset of the range which is associated with an existing value of the operating parameter, so as to obtain an adjustment for an existing value, the adjustment being associated with the non-exhaustive subset, and responsively establishing a new value of the operating parameter based on said adjustment; wherein the existing value is one of the first value and the new value obtained from prior performance of the second calibration operation.
2. The method of claim 1, wherein the second calibration operation is to be performed in response to a timer.
3. The method of claim 1, wherein the second calibration operation is to be performed in response to a drift condition.
4. The method of claim 1, wherein the second calibration operation is to be performed in response to a change in temperature.
5. The method of claim 1, wherein: the second calibration operation is to be performed in connection with a change in a mode of operation from a first mode of operation to a second mode of operation; and the second mode of operation is a higher speed mode of operation than the first mode of operation.
6. The method of claim 1, wherein said performing of the second calibration operation and said responsively establishing are effectuated in response to a switch between a first mode of operation and a second mode of operation.
7. The method of claim 1, wherein the operating parameter is at least one of a first value pertaining to the driver strength of the transmitter circuit and a second value pertaining to the termination resistance, and wherein the method further comprises, from time-to-time, performing the second calibration operation to obtain an adjustment for the at least one of the first value and the second value.
8. The method of claim 1, wherein performing the first calibration operation comprises transferring a first calibration pattern with the circuit, wherein performing the second calibration operation comprises transferring a second calibration pattern with the circuit, and wherein the first calibration pattern is longer than the second calibration pattern.
9. The method of claim 1, wherein performing the first calibration operation comprises transferring a first number of bits with the circuit, wherein performing the second calibration operation comprises transferring a second number of bits with the circuit, and wherein the first number of bits is necessarily greater than the second number of bits.
10. The method of claim 1, wherein the method further comprises performing the first calibration operation a second time, and where the second calibration operation is performed more frequently than the first calibration operation.
11. A first component comprising: a circuit to transfer data between the first component and a second component, the circuit to use an operating parameter having a range of possible values in connection with the transfer of the data; and a circuit to perform a first calibration operation to establish a first value for the operating parameter, wherein the first calibration operation is to test a range of possible values for use as the first value, and to from time-to-time perform a second calibration operation, to test a subset of the range to obtain an update to the first value; wherein the second calibration operation is to be performed in connection with a change in a mode of operation from a first mode of operation to a second mode of operation, and the second mode of operation is a higher speed mode of operation than the first mode of operation.
12. The first component of claim 11, wherein the second calibration operation is initiated in response to a command.
13. The first component of claim 12, wherein the command is generated in response to at least one of a change in temperature, in response to a drift condition and in response to a timer.
14. A first component comprising: a circuit to transfer data between the first component and a second component, the circuit to use an operating parameter having a range of possible values in connection with the transfer of the data; and a circuit to perform a first calibration operation to establish a first value for the operating parameter, wherein the first calibration operation is to test a range of possible values for use as the first value, and to from time-to-time perform a second calibration operation, to test a subset of the range to obtain an update to the first value; wherein the circuit to perform is to perform the second calibration operation in response to a switch between a first mode of operation and a second mode of operation.
15. The first component of claim 11, wherein the operating parameter comprises at least one of a first value pertaining to the driver strength of the transmitter circuit and a second value pertaining to the termination resistance, and wherein the circuit to perform is to, from time-to-time, perform the second calibration operation to obtain an adjustment for the at least one of the first value and the second value.
16. The first component of claim 11, wherein the circuit to perform is to transfer a first calibration pattern as part of the first calibration operation and a second calibration pattern as part of the second calibration operation, and wherein the first calibration pattern is longer than the second calibration pattern.
17. The first component of claim 11, wherein the circuit to perform is to transfer a first number of bits as part of the first calibration operation and a second number of bits as part of the second calibration operation, and wherein the first number of bits is necessarily greater than the second number of bits.
18. The first component of claim 11, wherein the circuit to perform is to perform the first calibration operation a second time, and where the second calibration operation is performed more frequently than the first calibration operation.
Description
BRIEF DESCRIPTION OF THE. DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
DETAILED DESCRIPTION
(19) A detailed description of embodiments of the present invention is provided with reference to the Figures.
(20) Transmitter and Receiver Timing Parameters
(21)
(22)
(23) The transmitter circuit 13 will begin driving a bit (labeled “a”) no later than a time t.sub.Q,MAX after a rising edge 30 of CLKT, and will continue to drive it until at least a time t.sub.V,MIN after the next rising edge 31. t.sub.Q,MAX and t.sub.V,MIN are the primary timing parameters of the transmitter circuit 13. These two values are specified across the full range of operating conditions and processing conditions of the communication channel. As a result, t.sub.Q,MAX will be larger than t.sub.V,MIN, and the difference will represent the dead time or dead band 32 of the transmitter circuit 13. The transmitter dead band 32 (t.sub.DEAD,T) is the portion of the bit timing window (also called bit time or bit window) that is consumed by the transmitter circuit 13:
t.sub.DEAD,T=t.sub.Q,MAX−t.sub.V,MIN
(24) The edges of the timing window around transition 31 can be defined by:
t.sup.−1+t.sub.Q,MAX, and
t+t.sub.V,MIN,
where t.sup.−1 is transition 30 one clock cycle earlier than the transition 31, and t is the transition 31.
(25) The receiver circuit 15 will begin sampling a bit (labeled “a”) no earlier than a time t.sub.S,MIN before a rising edge 35 (or 36) of CLKR, and will continue to sample until no later than a time t.sub.H,MIN after the rising edge 35. t.sub.S,MIN and t.sub.H,MIN are the primary timing parameters of the receiver circuit. These two values are specified across the full range of operating conditions and processing conditions of the circuit. The sum of t.sub.S,MIN and t.sub.H,MIN will represent the dead time or dead band 37, 38 of the receiver. The receiver dead band 37, 38 (t.sub.DEAD,R) is the portion of the bit timing window (also called bit time or bit window) that is consumed by the receiver circuit:
t.sub.DEAD,R=t.sub.S,MIN+t.sub.H,MIN
(26) The edges of the timing window around transition 35 can be defined by:
t−t.sub.S,MIN, and
t+t.sub.H,MIN,
where t is transition 35.
(27) In this example, the bit timing window is one t.sub.CYCLE minus the t.sub.DEAD,T and t.sub.DEAD,R values, each of which is about ⅓ of one t.sub.CYCLE in this example. The remaining ⅓ t.sub.CYCLE would account for other uncertainty. Such uncertainty could include, for example, variation in the placement of the rising edges of CLKT and CLKR. In some systems, this variation might be specified as part of the t.sub.DEAD,T and t.sub.DEAD,R definition. Other uncertainty could include variation in the propagation delay across the interconnection medium.
(28) Unidirectional Link Alternatives
(29)
(30) The transmitter component includes a block 105 labeled “pattern”, which can consist of pattern storage, pattern generation circuitry or both, and which is used as a source of transmit calibration patterns for the first and second calibration sequences used according to the present invention. The first calibration sequence in other embodiments is provided by host software across the “normal” data path, while the second calibration sequence is provided by a “pattern” block in the transmitter, and vice versa. Generally, the pattern source can be the same or different, for the first exhaustive calibration sequence and second drift calibration sequence.
(31) In the embodiment shown, a multiplexer block 106 labeled “mux,” implemented for example using a logical layer or physical layer switch, enables the transmit calibration pattern set to be driven onto the link by the transmitter circuit. The transmitter drive point can be adjusted by the block 107 labeled “adjust”. A sideband communication channel 113 is shown coupled between the component 101 and the component 100, by which the results of analysis of received calibration patterns at the component 101 are supplied to the adjust block 107 of the component 100.
(32) The receiver component 101 includes a block 108 labeled “pattern”, which can consist of host software, pattern storage or pattern generation circuitry, and which is used as a source of expected patterns. A block 109 labeled “compare” enables the received pattern set to be compared to the expected pattern set, analyzes the result and causes an adjustment to be made to either the transmitter or receiver. The receiver sample point can be adjusted by the block 112 labeled “adjust”.
(33)
(34)
(35) In general, periodic timing calibration can be performed on all three examples, since timing variations due to condition drift can be compensated at either the transmitter end or the receiver end. In practice, it is cheaper to put the adjustment circuitry at only one end of the link, and not at both ends, so systems of
(36)
(37)
(38) The function of the drift in the edge value measured using the short calibration pattern, and the drift in the operation value using the long calibration pattern in the examples of
(39) Accordingly, the operation value of the parameter can be established, such as by using an exhaustive calibration routine based on long calibration patterns, during startup or initialization of the system. Adjustments in the operation value due to drift, however, can be made based upon shorter calibration sequences adapted to determine a drift value, such as those based on short calibration patterns. The shorter drift calibration sequences can be executed from time to time, such as on a set periodic basis, when signaled by an external monitor of the conditions of operation, or at times depending on other conditions of use of the communication channel, without utilizing as much of the resources of the communication channel as are needed for the more exhaustive calibration routine utilized less frequently, such as only during startup.
(40) Calibration Steps for Transmitter for Unidirectional Link
(41)
(42) The first calibration sequence in one embodiment is an iteration just like that discussed above with respect to steps 301-310, with the exception that the calibration pattern for the first cycle is a long pattern, and the calibration pattern for the second calibration sequence is a short pattern. For example, a pseudorandom bit sequence having a length 2.sup.N−1, with N equal to 7 or N equal to 15, can be used as the long calibration pattern for the first calibration sequence. In another example, the long calibration pattern is a set of short patterns intended to be an exhaustive set for conditions, such as inter-symbol interference patterns, of the communication channel. The short calibration pattern on the other hand, may be a simple two-byte code or set of two byte (16 bit) codes, such as AAAA, 5555 or 0F0F (hexadecimal).
(43) In some embodiments, the exhaustive calibration sequence may use the same codes as the simpler calibration sequence, but apply shorter algorithms for computing adjustments. For, example, the values may be adjusted without requiring repeatability, or requiring less repeatability, when measuring drift than when measuring the exhaustive operation value.
(44) Timing for Iteration Step for Transmit
(45)
(46) The “adjust” block in the transmit component maintains three values in storage: TXA, TX, and TXB. The TX value is the operation value used for normal operation. The TXA and TXB are the “edge” values, which track the left and right extremes of the bit window of the transmitter. Typically, the TX value is initially derived from the average of the TXA and TXB values as determined using an exhaustive calibration sequence, but other relationships are possible.
(47) As described above, drift in the TX value is determined by a function of the TXAS and TXBS values determined during the calibration sequences that use short patterns. The function of TXAS and TXBS used depends on how the parameter drifts as measured by the exhaustive calibration patterns, as compared with how it drifts as measured by the short patterns. So long as this relationship correlates, then the short pattern technique for measuring drift is straight forward. In some systems, the drift in the short pattern measurements is very close to the drift in the long pattern measurements, so that any determined drift can be applied directly to adjust the operation value of the parameter.
(48) The “adjust” block in the transmit component maintains three values in storage: TXA, TX, and TXB for the purposes of the exhaustive calibration sequence illustrated here. For drift calculation, TXAS and TXBS are also stored. The TX value is the operation value used for normal operation. The TXA and TXB are the “edge” values, which track the left and right extremes of the bit window of the transmitter. Typically, the TX value is initially derived from the average of the TXA and TXB values, but other relationships are possible. The TXA and TXB values can be maintained by the calibration operations, which from time to time, and periodically in some embodiments, interrupt normal operations for exhaustive calibration sequences. However, in embodiments of the present invention, storage of TXA and TXB may not be needed to track drift.
(49) In
(50) When the TX value is selected (t.sub.PHASE(TX) in the middle trace 401 showing CLKT timing waveform) for operation, the rising edge 402 of CLKT causes the DATAT window 403 containing the value “a” to be aligned so that the DATAR signal (not shown but conceptually overlapping with the DATAT signal) at the receiving component is aligned with the receiver clock, successfully received, and ideally centered on the receiver eye.
(51) When the TXA value is selected (t.sub.PHASET(TX) in the top trace 405 showing CLKT timing waveform), the rising edge of CLKT is set to a time that causes the right edges of the DATAT window 406 (containing “a”) and the receiver set/hold window 410 (shaded) to coincide. The t.sub.S setup time and t.sub.H hold time surround the CLKR rising edge, together define the set/hold window 410 (not to be confused with the receiver eye of
(52) The calibration process for TXA will compare the received pattern set to the expected pattern set, and determine if they match. If they match (pass) then the TXA value will be decremented (the t.sub.PHASE(TXA) offset becomes smaller shifting the transmit window 406 to the left in
(53) As mentioned earlier, the results of a sequence including transmission of two or more calibration patterns may be accumulated before the TXA value is adjusted. This would improve the repeatability of the calibration process. For example, the calibration pattern could be repeated “N” times with the number of passes accumulated in a storage element. If all N passes match, then the TXA value is decremented. If any of the N passes do not match, then the TXA value is determined to have reached the edge of the window and is incremented. In another alternative, after the Nth pattern, the TXA value could be incremented if there are fewer than N/2 (or some other threshold number) passes, and decremented if there are N/2 or more passes.
(54) When TXA is updated, the TX value will also be updated. In this example, the TX value will updated by half the amount used to update TXA, since TX is the average of the TXA and TXB values. If TX has a different relationship to TXA and TXB, the TX update value will be different. Note that in some embodiments, the TX value will need slightly greater precision than the TXA and TXB values to prevent round-off error. In alternate embodiments, the TX value can be updated after pass/fail results of TXA and TXB values have been determined. In some cases, these results may cancel and produce no change to the optimal TX value. In other cases these results may be accumulated and the accumulated results used to determine an appropriate adjustment of the TX setting. According to this embodiment, greater precision of the TX setting relative to the TXA and TXB settings may not be required.
(55) When the TXB value is selected (t.sub.PHASER(TXB) in the bottom trace 407 showing a CLKT timing waveform) for calibration, the rising edge of CLKT is set to a time that causes the left edge of the transmitter valid window 408 (containing “a”) and the receiver set/hold window 410 (shaded) to coincide. In this case with the transmit clock rising edge at t.sub.PHASER(TXB), all the timing margin is on the right side of the transmit window 408, providing more room than required by the t.sub.V timing parameter. This means that there will be essentially no margin for the t.sub.Q timing parameter on the left side of the window 408, defining the right edge of the calibration window.
(56) The calibration process will compare the received pattern set to the expected pattern set, and determine if they match. If they match (pass) then the TXB value will be incremented (the offset becomes larger) or otherwise adjusted, so there is less margin for the t.sub.Q timing parameter. If they do not match (fail) then the TXB value will be decremented (the offset becomes smaller) or otherwise adjusted, so there is more margin for the t.sub.Q timing parameter.
(57) As mentioned earlier, the results of transmission of two or more calibration patterns may be accumulated before the TXB value is adjusted. For example, transmission of the patterns could be repeated “N” times with the number of passes accumulated in a storage element. After the Nth sequence the TXB value could be decremented if there are fewer than N/2 passes and incremented if there are N/2 or more passes. This would improve the repeatability of the calibration process.
(58) When TXB is updated, the TX value will also be updated. In this example, the TX value will updated by half the amount used to update TXB, since TX is the average of the TXA and TXB values. If TX has a different relationship to TXA and TXB, the TX update value will be different. Note that the TX value will need slightly greater precision than the TXA and TXB values if it is desired to prevent round-off error.
(59) Determination of drift may be made using a similar process, although with different calibration patterns, as explained above.
(60) Calibration Steps for Receiver for Unidirectional Link
(61)
(62) The first calibration sequence in one embodiment is an iteration just like that discussed above with respect to steps 501-510, with the exception that the calibration pattern for the first cycle is a long pattern, and the calibration pattern for the second calibration sequence is a short pattern. For example, a pseudorandom bit sequence having a length 2.sup.N−1, with N equal to 7 or N equal to 15, can be used as the long calibration pattern for the first calibration sequence. In another example, the long calibration pattern is a set of short patterns intended to be an exhaustive set for conditions, such as inter-symbol interference patterns, of the communication channel. The short calibration pattern on the other hand, may be a simple two-byte code or set of two-byte codes, such as AAAA, 5555 or 0F0F.
(63) Timing for Iteration Step for Receive
(64)
(65) The “adjust” block in the receive component maintains three values in storage: RXA, RX, and RXB for the purpose of the exhaustive calibration sequence. The RX value is the operation value used for normal operation. The RXA and RXB are the “edge” values, which track the left and right extremes of the bit window. The RX value is derived from the first exhaustive calibration sequence, and based on the average of the RXA and RXB values determined in the first calibration sequence, but other relationships are possible. The RXAS and RXBS values are determined in the second calibration sequence using the short calibration patterns, and maintained by the calibration operations which periodically interrupt normal operations. Changes in the RXAS and RXBS values, or in only one of them, are used to determine a drift in the RX values. The RX value is updated based on that drift.
(66) In the timing diagrams, the position of the rising edge of CLKR has an offset of t.sub.PHASER relative to a fixed reference (not shown, typically a reference clock that is distributed to all components). This offset is determined by the RXA, RX, and RXB values that are stored.
(67) When the RX value is selected (t.sub.PHASER(RX) in the middle trace 601 showing a CLKR timing waveform) for use in receiving data, the rising edge 602 of CLKR is approximately centered in the receiver eye of the DATAR signal containing the value “a”. The DATAR signal is the DATAT signal transmitted at the transmitter after propagation across the link, and can be conceptually considered to be the same width as DATAT as shown in
(68) When the RXA value is selected (t.sub.PHASER(RXA) in the top trace 605 showing a CLKR timing waveform), the rising edge of CLKR is approximately a time t.sub.S later than the left edge (the earliest time) of the DATAR window 603 containing the value “a”. In this case, the CLKR rising edge is on the left edge of the receiver eye, and all the timing margin is on the right side of the set/hold window 604, providing more room than is required by the t.sub.H timing parameter. This means that there will be essentially no margin for the t.sub.S timing parameter, defining the left edge of the calibration window.
(69) The calibration process will compare the received pattern set to the expected pattern set, and determine if they match. If they match (pass) then the RXA value will be decremented (the offset becomes smaller) or otherwise adjusted, so there is less margin for the t.sub.S timing parameter. If they do not match (fail) then the RXA value will be incremented (the offset becomes larger) or otherwise adjusted, so there is more margin for the t.sub.S timing parameter.
(70) As mentioned earlier, the results of transmission and reception of two or more calibration patterns may be accumulated before the RXA value is adjusted. For example, the patterns could be repeated “N” times with the number of passes accumulated in a storage element. After the Nth sequence the RXA value could be incremented if there are fewer than N/2 passes and decremented if there are N/2 or more passes. This would improve the repeatability of the calibration process.
(71) When RXA is updated, the RX value will also be updated. In this example, the RX value will updated by half the amount used to update RXA, since RX is the average of the RXA and RXB values. If RX has a different relationship to RXA and RXB, the RX update value will be different. Note that in some embodiments, the RX value will need slightly greater precision than the RXA and RXB values to prevent round-off error. In alternate embodiments, the RX value can be updated after pass/fail results of RXA and RXB values have been determined. In some cases, these results may cancel and produce no change to the optimal RX value. In other cases these results may be accumulated and the accumulated results used to determine an appropriate adjustment of the RX setting. According to this embodiment, greater precision of the RX setting relative to the RXA and RXB settings may not be required.
(72) When the RXB value is selected (t.sub.PHASER(RXB) in the bottom trace 606 showing a CLKR timing waveform), the rising edge of CLKR is approximately a time t.sub.H earlier than the right edge (the latest time) of the DATAR window 603 containing the value “a”. In this case, the CLKR rising edge is on the right edge of the receiver eye, and all the timing margin is on the left side of the window 604, providing more room that required by the t.sub.S timing parameter. This means that there will be essentially no margin for the t.sub.H timing parameter, defining the right edge of the calibration window.
(73) The calibration process will compare the received pattern set to the expected pattern set, and determine if they match. If they match (pass) then the RXB value will be incremented (the offset becomes larger) or otherwise adjusted, so there is less margin for the tH timing parameter. If they do not match (fail) then the RXB value will be decremented (the offset becomes smaller) or otherwise adjusted, so there is more margin for the t.sub.H timing parameter.
(74) As mentioned earlier, the results of transmission and reception of two or more calibration patterns may be accumulated before the RXB value is adjusted. For example, the sequence could be repeated “N” times with the number of passes accumulated in a storage element. After the Nth sequence the RXB value could be decremented if there are fewer than N/2 passes and incremented if there are N/2 or more passes. This would improve the repeatability of the calibration process.
(75) When RXB is updated, the RX value will also be updated. In this example, the RX value will updated by half the amount used to update RXB, since RX is the average of the RXA and RXB values. If RX has a different relationship to RXA and RXB, the RX update value will be different. Note that the RX value will need slightly greater precision than the RXA and RXB values if it is desired to prevent round-off error.
(76) Determination of drift may be made using a similar process, although with different calibration patterns, as explained above.
(77) Bidirectional Link Alternatives
(78)
(79) The first bidirectional component includes a block 705 labeled “pattern”, which can consist of pattern storage, pattern generation circuitry, or both, and which is used as a source of transmit calibration patterns for both the exhaustive calibration sequences and the calibration sequences used to measure drift. A multiplexer block 706 labeled “mux,” implemented for example using a logical layer or physical layer switch, enables the transmit calibration pattern set to be driven onto the link by the transmitter circuit 703. The transmitter drive point can be adjusted by the block 707 labeled “adjust”. A sideband communication channel 713 is shown coupled between the component 701 and the component 700, by which the results of analysis of received calibration patterns at the component 701 are supplied to the adjust block 707 of the component 700. Component 700 also has support for calibrating receiver 724, including a block 728 labeled “pattern”, which can consist of pattern storage, pattern generation circuitry, or both, and which is used as a source of expected patterns for comparison with received patterns. A block 729 labeled “compare” enables the received pattern set to be compared to the expected pattern set, and causes an adjustment to be made to either the transmitter or receiver. The receiver sample point can be adjusted by the block 732 labeled “adjust”.
(80) The second bidirectional component 701 includes complementary elements supporting transmitter 723 and receiver 704. For the receiver operations, a block 708 labeled “pattern”, which can consist of pattern storage, pattern generation circuitry, or both, is used as a source of expected patterns. A block 709 labeled “compare” enables the received pattern set to be compared to the expected pattern set, and causes an adjustment to be made to either the transmitter or receiver. The receiver sample point can be adjusted by the block 712 labeled “adjust”. The second bidirectional component 701 supports transmission operations, with elements including a block 725 labeled “pattern”, which can consist of pattern storage or pattern generation circuitry, and which is used as a source of transmit calibration patterns. A multiplexer block 726 labeled “mux,” implemented for example using a logical layer or physical layer switch, enables the transmit calibration pattern set to be driven onto the link by the transmitter circuit 723.
(81) The transmitter drive point can be adjusted by the block 727 labeled “adjust”. A sideband communication channel 733 is shown coupled between the component 700 and the component 701, by which the results of analysis of received calibration patterns at the component 700 are supplied to the adjust block 727 of the component 701.
(82)
(83) The example of
(84) The example of
(85) Example of
(86) Calibration Steps for Transmitter for Bidirectional Link
(87) The calibration steps for bidirectional examples in
(88)
Calibration Steps for Receiver for Bidirectional Link
(89) The calibration steps for the bidirectional examples of
(90)
(91)
(92) The first bidirectional component 1000 includes a block 1005 labeled “pattern”, which can consist of pattern storage or pattern generation circuitry, and which is used as a source of transmit calibration patterns. A multiplexer block 1006 labeled “mux,” implemented for example using a logical layer or physical layer switch, enables the transmit calibration pattern set to be driven onto the link by the transmitter circuit 1003. The transmitter drive point can be adjusted by the block 1007 labeled “adjust”. In this embodiment, the adjust block 1007 includes storage for multiple parameter sets which are applied depending on the one of the other components 1051, 1052, . . . on the link to which the transmission is being sent. Component 1000 also has support for calibrating receiver 1024, including a block 1028 labeled “pattern”, which can consist of pattern storage or pattern generation circuitry, and which is used as a source of expected patterns for comparison with received patterns. A block 1029 labeled “compare” enables the received pattern set to be compared to the expected pattern set, and causes an adjustment to be made to either the transmitter or receiver. The receiver sample point can be adjusted by the block 1032 labeled “adjust”. In this embodiment, the adjust block 1007 includes storage for multiple parameter sets which are applied depending on the one of the other components 1051, 1052, . . . on the link from which the communication is being received. In the first component 1000, the compare block 1029 is used for analysis of both transmit and receive calibration operations, and is coupled to both the adjust block 1007 for the transmitter, and adjust block 1032 for the receiver. In the example of
(93) The embodiments described above involve calibration of timing parameters. Other embodiments of the invention are applied to calibration of other parameters of the communication channel, including voltage levels for drivers and comparators, resistance values such as link termination resistances, driver strength, adaptive equalization coefficients, noise cancellation coefficients, parameters that cause overshoot and undershoot of signals such as driver switching power or speed, and so on. These parameters are reflected in drifting flight times, output delays for transmitters, receiver mismatches and input delays. Also, drift occurs due to spread spectrum clocking.
(94) The calibration sequences used for tracking drift are executed from time to time. In some embodiments of the invention, the calibration sequences for tracking drift are initiated in response to a timer, or upon sensing a change in a condition that could cause drift such as ambient temperature, temperature of a component or printed circuit board, power supply voltage variations, system state changes like switches between low and higher speed or power modes of operation, host system or system management commands, and so on. The timing for the calibration sequences is selected in preferred systems depending on time constants expected for the drifting conditions likely to have an effect on the parameters being calibrated.
(95) According to the present invention, communication systems are provided that support periodic calibration to track drift, while conserving resources of the communication channels being calibrated. The invention reduces the hardware and storage requirements needed for calibration, reduces the impact on bandwidth and throughput across the communication channel, and maintains accuracy of the operation values of the parameters being calibrated while using less of the resources of the communication channel. The calibration sequences tracking drift can be run more often, because overhead is smaller, than prior art schemes. Also, the techniques of the present invention improve overall latency characteristics of the communication channel in changing operating conditions.
(96) While the present invention is disclosed by reference to the preferred embodiments and examples detailed above, it is to be understood that these examples are intended in an illustrative rather than in a limiting sense. It is contemplated that modifications and combinations will readily occur to those skilled in the art, which modifications and combinations will be within the spirit of the invention and the scope of the following claims.