The present disclosure relates to training impedance values associated with a memory device coupled to a memory controller.
In a memory bus, the impedances of a memory device and a memory controller can be trained against each other. The training may enable the memory bus to detect a data eye of a signal, such as a signal communicated over a link coupling the memory device to the memory controller. The data eye may include a point on the signal that (when located and sampled) may be used to identify an associated bit as being either a logical one or a zero. Training may include adjusting an operating parameter of the memory controller or the memory device. An illustrative operating parameter may include a voltage level associated with the signal.
Mismatching impedances of the memory device and the memory controller may reduce a width of the data eye, or timing margin, and compromise data accuracy.
In a particular embodiment, a method to set a voltage value associated with a memory controller coupled to a memory device is disclosed. The method may include comparing test data of a test path to functional data of a functional path. The functional data and the test data may be generated based on data received at a memory controller from a memory device. The test data may be affected by a voltage value applied to a resistor arrangement in electronic communication with the test path. The voltage value may be applied to the resistor arrangement based on the comparison.
In another embodiment, a method includes comparing test data and functional data. The test data and the functional data may be generated based on data received at a memory controller. A voltage maximum setting and a voltage minimum setting may be determined based on the comparison. A voltage value may be determined based on the voltage maximum setting and the voltage minimum setting, and a reference voltage may be determined based on the voltage value.
In another embodiment, an apparatus includes a memory controller coupled to a memory device and a resistor arrangement that includes at least one resistor. A functional path of the memory controller may include functional data generated based on device data received from the memory device. A test path in communication with the resistor arrangement may convey test data affected by a voltage value applied to the resistor arrangement. The memory controller may be configured to compare the test data based and the functional data and may set the voltage value based on the comparison.
Timing margins may be improved and impedance mismatches may be reduced by adjusting a reference voltage. Signal errors may be reduced and the speed at which a communication bus executes may increase.
Features that characterize embodiments are set forth in the claims annexed hereto and forming a further part hereof. However, for a better understanding of embodiments, and of the advantages and objectives attained through their use, reference should be made to the Drawings and to the accompanying descriptive matter.
A memory device and a memory controller linked via a data net may be trained using voltage value adjustment. A reference voltage of the memory controller may be set based on a driver impedance of the memory device and a termination impedance of the memory controller. A voltage may be applied to a resistor arrangement that includes a pair of unmatched (non-identical) resistors. The reference voltage may be set based on a high voltage value and a low voltage value. The high and low voltage values may be automatically updated as one or more test paths are monitored during operation.
The memory controller may increment or decrement voltages applied to the resistor arrangement to set the high and low voltage values. For example, the correctness of test path data may be determined based on data of a functional path. A percentage of time that correct data (or incorrect data) is read in the test data path may be determined by comparing the test data with the actual data, or functional data. For example, the data of the functional path may be used to determine if a one or a zero of the test path correctly corresponds to a one or zero of the functional path. At a point when the incorrect data of the test path switches (i.e., from a zero to a one, or from a one to a zero), the voltage value may be set correctly. A predetermined range, ratio, set point, or other criteria may be specified. For example, the low voltage value may be too low until some percentage of the data of the test path matches data of a functional path. The high and low voltage values may be set in this manner to generate the reference value.
Calibration may use alternating current and real time, functional data. Functional data may be compared to the test data to determine what, if any, adjustments to make to the reference voltage. The reference voltage may be automatically adjusted during operations. Signal errors and impedance mismatches may be reduced, and a speed at which a communication bus executes may increase. Variation in the impedances of the driver of the memory device and the termination device of the memory controller may be managed to increase the timing margin. For example, the reference voltage may be modified to produce an increased timing margin.
More particularly, the data net 106 may couple a driver 108 of the memory device 102 to an input port of a comparator 110 of the memory controller 104. A second input of the comparator 110 may be coupled to a resistor arrangement 112. The resistor arrangement 112 may provide the reference voltage to the second input of the comparator 110. The resistor arrangement 112 may include a first resistor, R1, associated with the high voltage value. The resistor arrangement 112 may further include a second resistor, R2, associated with the low voltage value. The high and low voltage values may be applied to the resistor arrangement 112 to set the reference voltage to a level that optimizes data margin. The output of the comparator 110 may be coupled to a functional path associated with a functional device (not shown).
The memory controller 104 may further include a comparator 118 associated with a high test path. The comparator 118 may include a first input that is coupled to the data net 106. A second input of the comparator 118 may be coupled to the resistor arrangement 112 at the high voltage value. An output of the comparator 118 may include the high test path. The high test path may be coupled to Vhigh logic 122 configured to determine the high voltage value. The Vhigh logic 122 may be coupled to a digital-to-analog (D/A) voltage device 120. The Vhigh logic 122 may be configured to instruct the D/A voltage device 120 to selectively increment or decrement the high voltage value.
The memory controller 104 may additionally include a comparator 124 associated with a low test path. A first input of the comparator 124 may include the data net 106. A second input of the comparator 124 may be coupled to a low voltage portion of the resistor arrangement 112. The output of the comparator 124 may arrive at logic 128 configured to determine the low voltage value. The logic 128 may be configured to instruct a D/A voltage generator 126 to incrementally lower or raise the low voltage value. The memory controller 104 may be configured to monitor the high test path, low test path, and functional path to adjust the high and low voltage readings that determine the reference voltage.
The data net 106 may be coupled to a high voltage termination device 114 and a low termination device 116 of the memory controller 104. The data net 106 may include an alternating current and may communicate device data from the memory device 102. A termination device may include a load impedance to match line impedance and reduce signal reflection along the data net 106.
The memory controller 104 may further include analysis logic 130. The analysis logic 130 may be configured to determine the high and low voltage values used to generate the reference voltage. For example, the analysis logic 130 may be configured to calculate the low voltage value based on determined Vlow minimum and Vlow maximum settings. The high voltage value may be calculated using the determined Vhigh minimum and Vhigh maximum settings.
An illustrative memory device 102 may include a Dynamic Random Access Memory (DRAM) memory device, such as a Graphics Double Data Rate (GDDR) DRAM. The memory controller 104 may be located within any type of computer system including, but not limited to a desktop computer, a server, a laptop, a handheld device, a tablet personal computer, a set-top box, or another type of computer system that utilizes system memory. Within the computer system, the memory controller 104 may be located in a chipset, in one or more processors coupled to the chipset, or in a discrete component coupled to the system memory. The data net 106 may include one or more links configured to transmit data between two components within a computer system.
A first portion 202-212 of the method 200 may determine the Vlow minimum value by initially setting the low voltage value to a minimum value and by incrementing an applied voltage until a transition in the read data is detected. The determined Vlow minimum value may be used with the Vlow maximum setting to determine the low voltage value.
At 202, a DRAM may be initialized. For example, the memory device 202 of
Data may be read, at 206. For example, deterministic data may be supplied at the driver 108 of
The low voltage logic may determine if the measured low voltage value is too low, at 208. The low voltage logic device 128 may determine if the low voltage value is too low based on a percentage of ones in the low test path that correspond to zeros of the deterministic data. The low voltage logic 128 may initially read all ones because the low voltage value is set to a minimum level. Such a reading may indicate that the low voltage value is too low. Alternatively, the low voltage value may be too high when the test path always includes the correct value (e.g., data always matching the deterministic data). For example, all zeros in the deterministic data may correspond to all zeros in the test path, and all ones in the deterministic data may correspond to all ones in the test path. A predetermined range, ratio, set point, or other criteria may be specified to facilitate the determination. For example, the low voltage value may be too low until some percentage of the data of the test path matches the deterministic data. An illustrative predetermined percentage may range from 30% to 70%. However, a range of another embodiment may span from 1% to 100%.
At 210, the low voltage value may be incremented. For example, the Vlow logic 128 of
A second portion 214-222 of the method 200 may be associated with determining the Vlow maximum setting. The Vlow maximum setting may be processed in combination with the Vlow minimum setting to determine the low voltage value. At 214, the low voltage value may be set to a maximum level. For instance, the Vlow logic 128 of
Data may be read at 216. For example, the driver 108 of
At 224, analysis may be performed to determine the low voltage value. For example, the analysis logic 130 of the memory controller 104 of
A third portion 226-234 of the method 200 may be associated with determining and recording a Vhigh minimum value. The Vhigh minimum value may be determined by initially setting the high voltage value to a minimum level and by incrementing the D/A voltage until a transition or other predetermined condition is detected. The Vhigh minimum value may be used to determine the high voltage value that is used to set the reference voltage.
At 226, the high voltage value may be set to a minimum level. For example, the Vhigh logic 122 of
The high voltage value may be determined to be too low, at 230. For instance, the Vhigh logic 122 of
A fourth portion 236-242 of the method 200 may correspond to processes for determining a Vhigh maximum setting. The Vhigh maximum setting may be determined by setting the high voltage value to a maximum level and by decrementing the D/A voltage until a data transition in the high test path is detected. The Vhigh maximum setting may be used to determine the high voltage value that is used to set the reference voltage.
At 236, Vhigh may be set to a maximum level. For example, the Vhigh logic 122 of
The high voltage value may be determined to be too high, at 240. For instance, the Vhigh logic 122 may determine that the high voltage value is too high where a zero is read in every instance that corresponds to a one in the deterministic data. At 242, the D/A voltage may be decremented until the high voltage value is no longer too high. For example, the Vhigh logic 122 of
The Vhigh maximum setting may be recorded, at 244. For instance, the Vhigh logic 122 of
At 302, a DRAM may be initialized. For example, the memory device 202 of
A second portion 306-312 of the method 300 may be associated with adjusting the Vlow minimum setting. The determined Vlow minimum value may be used with the Vlow maximum setting to update the low voltage value. At 306, data may be read. For instance, functional data may be supplied at the driver 108 of
The low voltage value may be determined to be too low, at 308. For example, the Vlow logic 128 may determine that the low voltage value is too low when all ones are read in the test data. Some of the ones in the test data may correspond to (not matching) ones in the functional data. As described above, the determination may use a predetermined range, threshold, ratio, or other criteria used to evaluate the number of not matching or matching data.
At 310, the voltage may be incremented until the low voltage value is no longer too low. For instance, the Vlow logic 128 of
At 312, the Vlow minimum setting may be recorded. For example, the Vlow logic 128 of
A third portion 314-320 of the method 300 may be associated with adjusting the Vlow maximum setting. The Vlow maximum setting may be determined by initially setting the low voltage value to a maximum level and by decrementing the D/A voltage until a transition or other predetermined condition is detected. The Vlow maximum setting may be processed in combination with the Vlow minimum setting to determine the low voltage value.
At 314, data may be read. For instance, the Vlow logic 128 of
The low voltage value may be determined to be too high, at 316. The low voltage value may be considered too high when all the low test path data matches the function path data. The read zeros may correspond to ones in the functional path data. At 318, the low voltage value may be decremented until the low path test data is no longer too high. For example, the Vlow logic 128 of
At 320, the Vlow maximum setting may be recorded. For instance, the Vlow logic 128 of
At 322, analysis may be performed to adjust the low voltage value. For example, the analysis logic 130 of the memory controller 104 of
A fourth portion 324-332 of the method 300 may be associated with determining a Vhigh minimum setting. The Vhigh minimum setting may be determined by setting the high voltage value to a minimum level and incrementing the D/A voltage until the high test path data does not match the functional path data. The Vhigh minimum setting may be used to determine the high voltage value that is used to set the reference voltage.
At 324, operations may be performed with an initial high voltage value setting.
For example, the Vhigh logic 122 of
At 326, data may be read. For instance, the Vhigh logic 122 of
The high voltage value may be determined to be too low, at 328. For example, the Vhigh logic 122 of
The Vhigh minimum setting may be recorded, at 332. For instance, the Vhigh logic 122 of
A fifth portion 334-340 of the method 300 may be associated with adjusting the Vhigh maximum setting during operation. The Vhigh maximum setting may be determined by setting the high voltage value to a maximum level and by decrementing the D/A voltage until a transition in the high test path data is detected. The Vhigh maximum setting may be used (along with the Vhigh minimum setting) to determine the high voltage value that is used to set the reference voltage.
At 334, test data may be read. For example, the Vhigh logic 122 of
At 338, the voltage may be decremented. For example, the Vhigh logic 122 of
At 342, analysis may be performed to adjust the Vhigh setting. For example, the analysis logic 130 of
For instance, the Vlow minimum setting may correspond to a point when test data begins to be out of synchronization with the functional data (e.g., a low boundary). For example, the data in the test path may incorrectly read all ones, despite zeros being present in the functional data. At the high voltage boundary, the Vlow minimum setting may correspond to a point when test data begins to be synchronized with the functional data. For instance, all of the data in the test path may be correct, in view of the functional data. The Vhigh minimum setting may include a setting when test data begins to be synchronized with the functional data. For example, all of the data in the test path may be correct, in view of the functional data. At the high voltage boundary, the Vhigh minimum setting may correspond to a point when test data beings to be out of synchronization with the functional data. For instance, the test path may incorrectly read all zeros, despite ones being present in the functional data. The boundary calculations (i.e., Vhigh minimum, Vhigh maximum, Vlow minimum, and Vlow maximum) may be used to adjust the high and the low voltage values without interrupting operations.
At 402, a DRAM may be initialized. For example, the memory device 202 of
A second portion 406-412 of the method 400 may be associated with adjusting the Vlow minimum setting. The Vlow minimum setting may include a point when test data begins to be out of synchronization with the functional data. The determined Vlow minimum value may be used with the Vlow maximum setting to update the low voltage value. At 406, data may be read. For example, functional data may be supplied at the driver 108 of
A determination may be made as to whether the Vlow minimum setting is indicated, at 408. The Vlow minimum setting may correspond to a voltage value that results in the Vlow logic 128 reading all ones in the test data. The initial Vlow minimum setting may result in the test data including multiple zeros. The zeros in the test path may correctly correspond to zeros in the functional data. Where such zeros are detected in the test path, the low voltage value may be decremented, at 410. For instance, Vlow logic 128 of
At 412, the Vlow minimum setting may be recorded. For example, the Vlow logic 128 of
A third portion 414-420 of the method 400 may be associated with adjusting the Vlow maximum setting. The Vlow maximum setting may include a point when test data begins to be in synchronization with the functional data. At 414, data may be read. For example, the Vlow logic 128 of
A determination may be made as to whether the Vlow maximum setting is indicated, at 416. The Vlow maximum setting may correspond to a voltage value that results in the Vlow logic 128 reading matching data in the test path and in the functional path. The initial Vlow maximum setting may result in the test data including all ones. Some of the ones in the test path may incorrectly correspond to zeros in the functional data. When such incorrect ones are detected in the test path, the low voltage value may be incremented, at 418. For instance, Vlow logic 128 of
At 422, analysis may be performed to adjust the low voltage value. For example, the analysis logic 130 of the memory controller 104 of
A fourth portion 424-430 of the method 400 may be associated with determining a Vhigh minimum setting. The Vhigh minimum setting may include a point when test data begins to be synchronized with the functional data. For example, the data of the high test path may mirror the data of the functional path. At 424, data may be read. For instance, the Vhigh logic 122 of
A determination may be made as to whether the Vhigh minimum setting is indicated, at 426. The Vhigh minimum setting may correspond to a voltage value that results in the Vhigh logic 122 reading data in the test path that is the same as data in the high test path. When the data in the high test path and the functional path do not match, the voltage value may be decremented, at 428. For example, Vhigh logic 122 of
A fifth portion 432-340 of the method 400 may be associated with adjusting the Vhigh maximum setting during operation. The Vhigh maximum may include a point when test data begins to be out of synchronization with the functional data. The determined Vhigh maximum value may be used with the Vhigh minimum setting to update the low voltage value.
At 434, test data may be read. For example, the Vhigh logic 122 of
A determination may be made as to whether the Vhigh maximum setting is indicated, at 434. The Vhigh maximum setting may correspond to a voltage value that results in the Vhigh logic 122 reading all zeros in the test data. The initial Vhigh maximum setting may result in the test data including multiple ones. The ones in the test path may correctly correspond to ones in the functional data. When such ones are detected in the test path, the high voltage value may be incremented, at 436. For example, Vhigh logic 122 of
At 438, the Vhigh maximum setting may be recorded. For instance, the Vhigh logic 122 of
At 440, analysis may be performed to adjust the high voltage value. For example, the analysis logic 130 of the memory controller 104 of
Particular embodiments can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements. Further, embodiments may take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, or communicate the program for use by or in connection with the instruction execution system, apparatus, or device.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device). Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk. Examples of optical disks include compact disc—read only memory (CD-ROM), compact disc—read/write (CD-R/W) and DVD. A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
While the present invention has been illustrated by a description of various embodiments and while these embodiments have been described in considerable detail, it is not the intention of the Applicants to restrict, or any way limit the scope of the appended claims to such detail. For example, calibration may be repeated as conditions change for maintenance of desired settings and performance. Unique settings may be saved for different conditions. As an example, a temperature change greater than a predetermined amount (e.g., twenty degrees Celsius) from the original or last calibration could initiate a calibration. Alternatively, the condition may initiate the retrieval of a previously stored set of calibration values associated with the new temperature. Other illustrative conditions may include the activation or deactivation of system components (e.g., another bus, an interface, or controller) that may impact the interface.
Further, while embodiments of the invention are described specifically for a GDDR3 interface from a memory controller to a GDDR3 memory device, the system and method described may be applied to any number of system and sub-system electrical communication buses. The invention in its broader aspects is therefore not limited to the specific details, representative apparatus, methods, and illustrative examples shown and described. Accordingly, departures may be made from such details without departing from the scope of Applicants' general inventive concept.
This application is a continuation patent application of, and claims priority from, U.S. patent application Ser. No. 12/815,739, filed on Jun. 15, 2010 and entitled “Setting a Reference Voltage in a Memory Controller Trained to a Memory Device” which is incorporated by reference herein in its entirety for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
6049221 | Ishibashi et al. | Apr 2000 | A |
6130836 | Matsubara et al. | Oct 2000 | A |
6330194 | Thomann et al. | Dec 2001 | B1 |
6414525 | Urakawa | Jul 2002 | B2 |
6445316 | Hsu et al. | Sep 2002 | B1 |
6639423 | Martin et al. | Oct 2003 | B2 |
6762614 | Rearick et al. | Jul 2004 | B2 |
6807650 | Lamb et al. | Oct 2004 | B2 |
6876248 | Nguyen et al. | Apr 2005 | B2 |
6885959 | Salmon et al. | Apr 2005 | B2 |
6958942 | Chang | Oct 2005 | B2 |
7162376 | Oh et al. | Jan 2007 | B2 |
7362622 | Braun et al. | Apr 2008 | B2 |
7411407 | Rearick et al. | Aug 2008 | B2 |
7439761 | Mayer et al. | Oct 2008 | B2 |
7489160 | Kimura | Feb 2009 | B2 |
7514954 | Kim et al. | Apr 2009 | B2 |
7515487 | Seo et al. | Apr 2009 | B2 |
7593272 | Doyle et al. | Sep 2009 | B2 |
7710144 | Dreps et al. | May 2010 | B2 |
7848175 | Fox et al. | Dec 2010 | B2 |
7974141 | Fox et al. | Jul 2011 | B2 |
7978538 | Fox et al. | Jul 2011 | B2 |
7990768 | Fox et al. | Aug 2011 | B2 |
8102724 | Fox et al. | Jan 2012 | B2 |
8111564 | Fox et al. | Feb 2012 | B2 |
8233336 | Mueller | Jul 2012 | B2 |
8289784 | Fox et al. | Oct 2012 | B2 |
8384423 | Nguyen et al. | Feb 2013 | B2 |
20020149972 | Lamb et al. | Oct 2002 | A1 |
20080272800 | Haig et al. | Nov 2008 | A1 |
20100188908 | Fox et al. | Jul 2010 | A1 |
20100188917 | Fox et al. | Jul 2010 | A1 |
20100188919 | Fox et al. | Jul 2010 | A1 |
20100192000 | Fox et al. | Jul 2010 | A1 |
20110307671 | Fox et al. | Dec 2011 | A1 |
20120182044 | Oh | Jul 2012 | A1 |
20120224436 | Fox et al. | Sep 2012 | A1 |
Number | Date | Country |
---|---|---|
1211691 | Jun 2002 | EP |
0833347 | Dec 2005 | EP |
Entry |
---|
U.S. Appl. No. 12/815,739; Non-Final Office Action dated Feb. 7, 2012; 10 pages. |
U.S. Appl. No. 12/815,739; Notice of Allowance dated Jun. 7, 2012; 5 pages. |
U.S. Appl. No. 12/815,844; Final Office Action dated May 1, 2013; 9 pages. |
U.S. Appl. No. 12/815,844; Non-Final Office Action dated Dec. 10, 2012; 8 pages. |
Jedec Standard, “POD18—1.8 V Pseudo Open Drain I/O: JESD8-19”, Dec. 2006, JEDEC Solid State Technology Association, Arlington, VA, pp. 1-8. |
U.S. Appl. No. 12/361,719; Notice of Allowance dated Sep. 19, 2011; 9 pages. |
U.S. Appl. No. 12/361,836; Non-Final Office Action dated Jun. 2, 2011; 7 pages. |
U.S. Appl. No. 12/361,836; Notice of Allowance dated Sep. 29, 2011; 10 pages. |
U.S. Appl. No. 12/361,836; Supplemental Notice of Allowability dated Nov. 8, 2011; 2 pages. |
U.S. Appl. No. 12/361,976; Notice of Allowance dated Jul. 30, 2010; 6 pages. |
U.S. Appl. No. 12/361,577; Non-Final Office Action dated Oct. 13, 2010; 9 pages. |
U.S. Appl. No. 12/361,577; Notice of Allowance dated Mar. 22, 2011; 9 pages. |
U.S. Appl. No. 12/361,592; Notice of Allowance dated Feb. 25, 2011; 8 pages. |
U.S. Appl. No. 12/361,602; Notice of Allowance dated Mar. 3, 2011; 8 pages. |
U.S. Appl. 12/815,844; Notice of Allowance dated Aug. 22, 2013; 9 pages. |
Number | Date | Country | |
---|---|---|---|
20120224436 A1 | Sep 2012 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 12815739 | Jun 2010 | US |
Child | 13472891 | US |