IP Library Granted Patent US 7,685,393
Granted Patent B2
US 7,685,393 · App. 11/477,659 · Granted Mar 23, 2010

Synchronous memory read data capture

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 7,685,393
App. No.
11/477,659
Granted
Mar 23, 2010
Kind
B2
Abstract

A method of snap-shot data training to determine the optimum timing of the DQS enable signal in a single read operation is provided. This is accomplished by first writing a Gray code count sequence into the memory and then reading it back in a single burst. The controller samples the read burst at a fixed interval from the time the command was issued to determine the loop-around delay. A simple truth table lookup determines the optimum DQS enable timing for normal reads. Advantageously, during normal read operations, the first positive edge of the enabled DQS signal is used to sample a counter that is enabled every time a command is issued. If the counter sample changes, indicating timing drift has occurred, the DQS enable signal can be adjusted to compensate for the drift and maintain a position centered in the DQS preamble. This technique can also be applied to a system that uses the iterative approach to determining DQS enable timing on power up. Another embodiment of the invention is a simple, low latency clock domain crossing circuit based on the DQS latched sample of the counter.

Claims (83)

1. A method for controlling a synchronous memory comprising:

establishing a read data path delay between the memory and a memory controller by:

the memory controller writing an initialization sequence to predetermined locations of the memory;

the memory controller sending a read command to the memory to read the predetermined locations and receiving returned data signals;

a predetermined time after sending the read command, the memory controller sampling the returned data signals to produce a single initialization sample;

using the initialization sample to determine the read data path delay between the memory and the memory controller.

2. The method of claim 1 further comprising:

on an ongoing basis executing reads from the memory by:

sending a read command;

in response to the read command receiving a data signal and receiving a data strobe signal synchronously with the data signal;

enabling the data strobe signal as a function of the read delay.

3. The method of claim 1 wherein:

the initialization sequence comprises a Gray code; and

sampling the returned data comprises sampling each bit of the Gray code with four clock phases.

4. The method of claim 3 wherein:

the Gray code is an N-bit Gray code having 2 N codewords;

the memory controller writing a Gray code initialization sequence to predetermined locations of the memory comprises writing each of the 2 N codewords to a pair of addresses within 2 N+1 consecutive addresses.

5. The method of claim 4 wherein:

writing the 2 N codewords to 2 N+1 consecutive addresses comprises writing N bits to each of the 2 N+1 addresses;

sampling each bit of the Gray code with four clock phases comprises sampling a respective read signal in respect of which an nth bit of the N-bit Gray code was written with the four clock phases, where n=0, . . . , N−1.

6. The method of claim 4 wherein:

writing the 2 N codewords to 2 N+1 consecutive addresses comprises writing bits of a respective Gray code codeword g 1 , g 2 , . . . , g N as 4N bits to each of the 2 N+1 addresses by writing g 1 ,g 1 ,g 1 ,g 1 , . . . , g N ,g N ,g N ,g N to pairs of addresses

sampling each bit of the Gray code with four clock phases comprises:

in response to the read command, receiving 4N data signals as said returned data signals;

sampling N data signals with a first clock phase;

sampling another N data signals with a second clock phase;

sampling another N data signals with a third clock phase; and

sampling another N data signals with a fourth clock phase.

7. The method of claim 6 wherein N=2.

8. The method of claim 6 wherein N=3.

9. The method of claim 1 further comprising:

for each of a plurality of read delays, storing an expected initialization sample;

wherein:

using the initialization sequence to determine the read delay between the memory and the memory controller comprises looking up the read delay stored for the initialization sequence.

10. The method of claim 9 wherein for each of a plurality of read delays, storing an expected initialization sequence comprises determining a state of a counter for each read delay, and storing the counter state in association with the initialization sequence, the method further comprising:

on an ongoing basis, for each read command, starting the counter after sending a read command, and enabling the data strobe when the code counter reaches the counter state for the determined read delay.

11. The method of claim 10 wherein:

the counter is a hardware implemented Gray code counter that increments on quarter clock phases.

12. The method of claim 10 wherein the counter is an RTL counter that increments on quarter clock phases.

13. The method of claim 1 further comprising:

on an ongoing basis determining if there is clock drift, and if so, updating the read delay.

14. The method of claim 1 further comprising:

disabling the data strobe signal accounting for read burst length and consecutive read commands.

15. The method of claim 1 further comprising for each delay:

storing an enable count indicating when to enable the data strobe;

storing a disable count indicating when to disable the data strobe; and

storing an indication of whether to sample at a 0 degree or 180 degree clock phase for data recovery.

16. The method of claim 1 further comprising re-timing read data signals to an RTL clock.

17. A memory controller including a read delay determination circuit, for implementing a method for controlling a memory that has a bidirectional read/write bus with source synchronous clocking and a bidirectional data strobe, the method comprising:

establishing a read data path delay between the memory and the memory controller by:

the memory controller writing an initialization sequence to predetermined locations of the memory;

the memory controller sending a read command to the memory to read the predetermined locations and receiving returned data signals;

a predetermined time after sending the read command, the read delay determination circuit sampling the returned data signals to produce a single initialization sample;

using the initialization sample to determine the read data path delay between the memory and the memory controller.

18. A memory controller for controlling a memory that has a bidirectional read/write bus with source synchronous clocking and a bi-directional data strobe, the controller comprising:

a read delay determination circuit and a data strobe enable circuit;

during initialization, the read delay determination circuit determining a read data path delay between sending a read command to the memory and receiving data signals in return, the read delay determination circuit comprising a circuit for sampling the data at a predetermined time to produce a single initialization sample, and a table lookup function that stores a respective read delay in respect of each permutation of the initialization sample;

the data strobe enable circuit being adapted to gate a received DQS data strobe as a function of the read delay.

19. The memory controller of claim 18 further comprising at least one of:

a circuit for selecting between a 0° sample and a 180° sample; and

a circuit for re-timing the data signals to a main clock.

20. The memory controller of claim 18 wherein the table look-up function stores for each permutation of the initialization sequence:

a data strobe enable count;

a data strobe disable count;

whether to sample at 0 degrees or 180 degrees for normal read operations.

21. A data strobe enable circuit for use with a memory that has a bidirectional read/write bus with source synchronous clocking and a bi-directional data strobe, the data strobe enable circuit comprising:

an input for receiving a data strobe signal having rising and falling edges;

an output for producing a gated data strobe signal;

a multiplexer that gates the data strobe signal as a function of a select input;

a select input generator circuit connected to receive a data strobe enable and data strobe disable: that sets the select input to select the data strobe signal upon activation of the data strobe enable, and that sets the select input to deselect the data strobe signal upon activation of the data strobe disable and following a next edge of the data strobe signal;

wherein the select input generator circuit comprises:

a first D flip-flop that receives the data strobe enable;

a second D flip-flop that receives the data strobe disable;

an AND gate that combines outputs of the first D flip-flop and the second D flip-flop;

an SR flip-flop that is clocked by the gated data strobe signal, the SR flip-flop having a D input for receiving the output of the second D flip-flop, and having an S input for receiving an output of the AND gate, and having a Q output that functions as the select input such that when the enable input becomes active, the select input asynchronously selects the data strobe signal, and when the data strobe disable input becomes active, the select input reflects this on the next rising edge of the data strobe signal.

22. A data strobe enable circuit for use with a memory that has a bidirectional read/write bus with source synchronous clocking and a bi-directional data strobe, the data strobe enable circuit comprising:

an input for receiving a data strobe signal having rising and falling edges;

an output for producing a gated data strobe signal;

a multiplexer that gates the data strobe signal as a function of a select input;

a select input generator circuit connected to receive a data strobe enable and data strobe disable; that sets the select input to select the data strobe signal upon activation of the data strobe enable, and that sets the select input to deselect the data strobe signal upon activation of the data strobe disable and following a next edge of the data strobe signal;

the data strobe enabled circuit further configured to produce a gated inverse data strobe signal using the select input.

23. The data strobe enable circuit of claim 22 further comprising:

a circuit for selecting between a first mode of operation in which a data strobe signal is received and an inverted data strobe signal generated, and a second mode of operation in which a data strobe signal and an inverted data strobe signal are received.

Assignments (11)
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY'S NAME PREVIOUSLY RECORDED AT REEL: 057857 FRAME: 0193. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Aug 28, 2023
From: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
To: MOSAID TECHNOLOGIES INCORPORATED
Reel/Frame 064741/0939 →
CHANGE OF NAME Recorded Oct 19, 2021
From: CONVERSANT INTELLECTUAL PROPERTY INC.
To: MOSAID TECHNOLOGIES INCORPORATED
Reel/Frame 057857/0193 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2020
From: CPPIB CREDIT INVESTMENTS INC.
To: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
Reel/Frame 054310/0421 →
RELEASE OF U.S. PATENT AGREEMENT (FOR NON-U.S. GRANTORS) Recorded Oct 12, 2018
From: ROYAL BANK OF CANADA, AS LENDER
To: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
Reel/Frame 047645/0424 →
AMENDED AND RESTATED U.S. PATENT SECURITY AGREEMENT (FOR NON-U.S. GRANTORS) Recorded Aug 22, 2018
From: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
To: CPPIB CREDIT INVESTMENTS, INC.
Reel/Frame 046900/0136 →
U.S. PATENT SECURITY AGREEMENT (FOR NON-U.S. GRANTORS) Recorded Sep 9, 2014
From: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
To: CPPIB CREDIT INVESTMENTS INC., AS LENDER; ROYAL BANK OF CANADA, AS LENDER
Reel/Frame 033706/0367 →
CHANGE OF ADDRESS Recorded Sep 3, 2014
From: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
To: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
Reel/Frame 033678/0096 →
RELEASE OF SECURITY INTEREST Recorded Aug 7, 2014
From: ROYAL BANK OF CANADA
To: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.; CONVERSANT IP N.B. 868 INC.; CONVERSANT IP N.B. 276 INC.
Reel/Frame 033484/0344 →
CHANGE OF NAME Recorded Mar 13, 2014
From: MOSAID TECHNOLOGIES INCORPORATED
To: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
Reel/Frame 032439/0638 →
U.S. INTELLECTUAL PROPERTY SECURITY AGREEMENT (FOR NON-U.S. GRANTORS) - SHORT FORM Recorded Jan 10, 2012
From: 658276 N.B. LTD.; 658868 N.B. INC.; MOSAID TECHNOLOGIES INCORPORATED
To: ROYAL BANK OF CANADA
Reel/Frame 027512/0196 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2008
From: GILLINGHAM, PETER, MR.
To: MOSAID TECHNOLOGIES INCORPORATED
Reel/Frame 021255/0135 →