IP Library Granted Patent US 8,619,480
Granted Patent B2
US 8,619,480 · App. 12/914,398 · Granted Dec 31, 2013

Method and system for memory controller calibration

Inventors: Xiaoguang Li (Fort Lee, NJ); Gary Richard Burrell (Wyckoff, NJ)
Assignee: Fujitsu Limited
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,619,480
App. No.
12/914,398
Granted
Dec 31, 2013
Kind
B2
Abstract

A method for calibration of a memory controller may include determining if an unused memory location exists in memory. The method may include writing a first pattern to the unused memory location in response to a determination that the unused memory location exists. The method may include determining if a second pattern exists in the memory in response to a determination that the unused memory location does not exist. The method may include iteratively modifying a first delay of a first delay control module among a plurality of delay values. The method may include reading from a memory location including the first pattern or the second pattern for each iteration of modification of the first delay. The method may include modifying one or more second delays, each second delay associated with one of one or more second delay control modules, based on the results of reading from the memory location.

Claims (62)

1. A method for calibration of a memory controller, comprising:

determining if an unused memory location exists in a memory;

in response to a determination that the unused memory location exists, writing a first pattern to the unused memory location;

in response to a determination that the unused memory location does not exist, determining if a second pattern exists in the memory;

iteratively modifying a first delay of a first delay control module among a plurality of delay values, the first delay control module configured to delay a clock or data signal by the first delay;

for each iteration of modification of the first delay, reading from a memory location including the first pattern or the second pattern; and

based on the results of reading from the memory location, modifying one or more second delays, each second delay associated with one of one or more second delay control modules, the one or more second delay control modules each configured to delay the clock or data signal by the one or more second delays.

2. A method according to claim 1 , wherein the first pattern is substantially identical to the second pattern.

3. A method according to claim 1 , wherein writing the first pattern to the unused memory location occurs during an idle memory cycle.

4. A method according to claim 1 , wherein reading from the memory location including the first pattern or the second pattern occurs during an idle memory cycle.

5. A method according to claim 1 , wherein modifying the one or more second delays comprises modifying the one or more second delays such that waveforms for data signals may be approximately center aligned to a waveform for a clock signal.

6. A method according to claim 1 , wherein:

the one or more second delay control modules are associated with input/output blocks for data signals and clock signals used for normal memory operations; and

the first delay control module is associated with a reserved input/output block used for reading the first pattern or the second pattern.

7. A memory controller comprising:

one or more first input/output blocks used for normal memory operations, each of the first input/output blocks including a first delay control module having a first delay for delaying a clock or data signal;

an unused memory location monitor configured to monitor usage of one or more memory devices associated with the memory controller and report identities of unused memory locations;

a pattern monitor configured to:

monitor data written to the one or more memory devices as a result of write operations; and

if data written to the one or more memory devices matches a first pattern, report the memory location of the first pattern; and

a second input/output block including a second delay control module having a second delay;

a dynamic calibration controller communicatively coupled to the unused memory location monitor and the pattern monitor and configured to:

if the unused memory location reports the identity of an unused memory location, write a second pattern to the unused memory location;

if the unused memory location reports no unused memory locations exist, determine if the first pattern exists in memory;

iteratively modify the second delay among a plurality of delay values;

for each iteration of modification of the second delay, read from a memory location including the first pattern or the second pattern via the second input/output block; and

based on the results of reading from the memory location, modifying the first delay of the first delay control module of each of the first input/output blocks.

8. A memory controller according to claim 7 , wherein the first pattern is substantially identical to the second pattern.

9. A memory controller according to claim 7 , further comprising:

an idle detection block communicatively coupled to the dynamic calibration controller and configured to detect if a subsequent clock cycle is an idle memory cycle and report to the dynamic calibration controller that the subsequent cycle is an idle memory cycle; and

the dynamic calibration controller configured to write the second pattern to the unused memory during the idle memory cycle.

10. A memory controller according to claim 7 , further comprising:

an idle detection block communicatively coupled to the dynamic calibration controller and configured to detect if a subsequent clock cycle is an idle memory cycle and report to the dynamic calibration controller that the subsequent cycle is an idle memory cycle; and

the dynamic calibration controller configured to read from the memory location including the first pattern or the second pattern during an idle memory cycle.

11. A memory controller according to claim 7 , the dynamic calibration controller configured to modify the one or more second delays such that waveforms for data signals may be approximately center aligned to a waveform for a clock signal.

12. A memory controller according to claim 7 , wherein the memory controller is a field programmable gate array-based memory controller.

13. A computing device comprising:

a processor;

a memory system communicatively coupled to the processor, the memory system comprising:

one or more memory devices configured to retain program instructions or data for a period of time; and

a memory controller communicatively coupled to the one or more memory devices, the memory controller comprising:

one or more first input/output blocks used for normal memory operations, each of the first input/output blocks including a first delay control module having a first delay for delaying a clock or data signal;

an unused memory location monitor configured to monitor usage of the one or more memory devices and report identities of unused memory locations;

a pattern monitor configured to:

monitor data written to the one or more memory devices as a result of write operations; and

if data written to the one or more memory devices matches a first pattern, report the memory location of the first pattern; and

a second input/output block including a second delay control module having a second delay;

a dynamic calibration controller communicatively coupled to the unused memory location monitor and the pattern monitor and configured to:

if the unused memory location reports the identity of an unused memory location, write a second pattern to the unused memory location;

if the unused memory location reports no unused memory locations exist, determine if the first pattern exists in memory;

iteratively modify the second delay among a plurality of delay values;

for each iteration of modification of the second delay, read from a memory location including the first pattern or the second pattern via the second input/output block; and

based on the results of reading from the memory location, modifying the first delay of the first delay control module of each of the first input/output blocks.

14. A computing device according to claim 13 , wherein the first pattern is substantially identical to the second pattern.

15. A computing device according to claim 13 , the memory controller further comprising:

an idle detection block communicatively coupled to the dynamic calibration controller and configured to detect if a subsequent clock cycle is an idle memory cycle and report to the dynamic calibration controller that the subsequent cycle is an idle memory cycle; and

the dynamic calibration controller configured to write the second pattern to the unused memory during the idle memory cycle.

16. A computing device according to claim 13 , the memory controller further comprising:

an idle detection block communicatively coupled to the dynamic calibration controller and configured to detect if a subsequent clock cycle is an idle memory cycle and report to the dynamic calibration controller that the subsequent cycle is an idle memory cycle; and

the dynamic calibration controller configured to read from the memory location including the first pattern or the second pattern during an idle memory cycle.

17. A computing device to claim 13 , the dynamic calibration controller configured to modify the one or more second delays such that waveforms for data signals may be approximately center aligned to a waveform for a clock signal.

18. A computing device according to claim 13 , wherein the memory controller comprises a field programmable gate array-based memory controller.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2010
From: FUJITSU NETWORK COMMUNICATIONS, INC.
To: FUJITSU LIMITED
Reel/Frame 025557/0721 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2010
From: LI, XIAOGUANG; BURRELL, GARY RICHARD
To: FUJITSU NETWORK COMMUNICATIONS, INC.
Reel/Frame 025212/0579 →
Continuity (1)
Related Publication 20120110240A1 · May 3, 2012