System and method for an asynchronous data buffer having buffer write and read pointers
First Claim
Patent Images
1. A method, comprising:
- storing read data in sequentially selected data locations of a buffer responsive to a first clock signal by providing a selection signal for sequentially selecting the data locations by shifting a first flag bit responsive to a rising edge of a strobe signal through a first set of series-coupled flip-flops having a last flip-flop coupled to a first flip-flop of the first set, and by shifting a second flag bit responsive to a falling edge of the strobe signal through a second set of series-coupled flip-flops having a last flip-flop coupled to a first flip-flop of the second set;
retrieving read data from sequentially selected data locations of the buffer responsive to a second clock signal;
determining a timing offset associated with coupling data between the first time domain and the second time domain; and
adjusting timing parameters responsive to the timing offset.
7 Assignments
0 Petitions
Accused Products
Abstract
A system and method for facilitating the adjustment of timing parameters between a memory controller operating in a first clock domain and a memory device operating in a second clock domain. A write pointer and a read pointer are monitored to provide a write-read pointer offset representing the timing between when read data is made available by the memory device and when the read data is retrieved by the memory controller. Based on the write-read pointer offset, adjustment to different timing parameters can be made.
330 Citations
17 Claims
-
1. A method, comprising:
-
storing read data in sequentially selected data locations of a buffer responsive to a first clock signal by providing a selection signal for sequentially selecting the data locations by shifting a first flag bit responsive to a rising edge of a strobe signal through a first set of series-coupled flip-flops having a last flip-flop coupled to a first flip-flop of the first set, and by shifting a second flag bit responsive to a falling edge of the strobe signal through a second set of series-coupled flip-flops having a last flip-flop coupled to a first flip-flop of the second set; retrieving read data from sequentially selected data locations of the buffer responsive to a second clock signal; determining a timing offset associated with coupling data between the first time domain and the second time domain; and adjusting timing parameters responsive to the timing offset.
-
-
2. A method, comprising:
-
determining a timing offset between storing read data in sequentially selected data locations of a buffer responsive to a first clock signal and retrieving read data from sequentially selected data locations of the buffer responsive to a second clock signal, the data stored in the buffer by providing a selection signal for sequentially selecting the data locations by shifting a first flag bit in response to a rising edge of a strobe signal through a first set of series-coupled flip-flops having a last flip-flop coupled to a first flip-flop of the first set, and by shifting a second flag bit in response to a falling edge of the strobe signal through a second set of series-coupled flip-flops having a last flip-flop coupled to a first flip-flop of the second set; and executing data transfer operations responsive to the timing offset.
-
-
3. An apparatus, comprising:
a synchronization module operable to couple data between a first time domain and a second time domain, the synchronization module comprising; a first pointer circuit, the first pointer circuit operable to generate a first pointer signal indicative of a data location in a buffer where data is to be stored in responsive to a first clock signal, the first pointer circuit having a first set of series-coupled flip-flops having an output of a last flip-flop coupled to an input of a first flip-flop, the first set of series-coupled flip-flops operable to shift a first flag through each flip-flop in response to a rising edge of the first clock signal, and further having a second set of series-coupled flip-flops having an output of a last flip-flop coupled to an input of a second flip-flop, the second set of series-coupled flip-flops operable to shift a second flag through each flip-flop in response to a rising edge of the second clock signal, output signals of the flip-flops of the first and second sets of series-coupled flip-flops representative of the first pointer signal; a second pointer circuit, the second pointer circuit operable to generate a second pointer signal indicative of a data location in the buffer where data is to be retrieved from responsive to a second clock signal; and a comparison circuit coupled to the first pointer circuit and the second pointer circuit, the comparison circuit operable to compare the first pointer signal and the second pointer signal to generate a pointer offset signal indicative of a pointer offset.
-
4. A memory hub, comprising:
-
a link interface; a memory device interface; a memory controller coupled to the link interface and the memory device interface; a synchronization module coupled to a memory device, the memory device interface and the memory controller, the memory device operating according to a first clock signal, the synchronization module operable to couple read data from the memory device to the memory controller, the memory controller operable to receive memory requests from the link interface responsive to a second clock signal, the synchronization module comprising; a first pointer circuit, the first pointer circuit operable to generate a first pointer signal indicative of a data location in a buffer where data is to be stored in responsive to the first clock signal; a second pointer circuit, the second pointer circuit operable to generate a second pointer signal indicative of a data location in the buffer where data is to be retrieved from responsive to the second clock signal; and a comparison circuit coupled to the first pointer circuit and the second pointer circuit, the comparison circuit operable to compare the first pointer signal and the second pointer signal to generate a pointer offset signal indicative of a pointer offset; a buffer coupled to the first pointer circuit, the buffer having a plurality of data locations; a selection circuit coupled to the buffer and the second pointer circuit, the selection circuit operable to selectively couple data stored in the plurality of data locations of the buffer to an output terminal of the selection circuit responsive to the second clock signal; and a data latch coupled to the output terminal of the selection circuit to latch the data selectively coupled thereto responsive to the first clock signal.
-
-
5. An apparatus, comprising:
-
a synchronization module operable to couple data between a first time domain and a second time domain, the synchronization module comprising; a data buffer configured to be coupled to a memory device and having a plurality of data locations at which read data are respectively stored; a write pointer circuit coupled to the data buffer and adapted to generate a write pointer signal to sequentially select one of the plurality of data locations of the data buffer for storing read data received from the memory device responsive to a strobe signal provided by the memory device; a read pointer circuit coupled to the data buffer and adapted to generate responsive to the core clock signal a read pointer signal to sequentially select one of the plurality of data locations of the buffer from which the read data stored therein, the read pointer including a plurality of flip-flops adapted to output a respective bit of a count value responsive to the core clock signal; and a write-read pointer compare circuit coupled to the write and read pointer circuits to compare the write and read pointer signals and adapted to generate a write-read pointer offset signal indicative of the comparison. - View Dependent Claims (6, 7, 8, 9, 10, 11)
-
-
12. A data synchronizing circuit for coupling data between a memory controller clocked in accordance with a core clock signal and a memory device clocked in accordance with a memory device clock signal, the data synchronizing circuit comprising:
-
a data buffer having a plurality of memory locations at which to store data and a selection signal node, the data buffer coupled to the memory device to store read data at a respective one of the plurality of data locations selected in accordance with a selection signal; a write pointer circuit coupled to the memory device to receive a data strobe signal and further coupled to the selection signal node of the data buffer to provide a selection signal to sequentially select a data location to which read data from the memory device is written in response to the data strobe signal; a multiplexer having a plurality of input terminals coupled to a respective one of the plurality of data locations of the data buffer and further having an output terminal to which the input terminals are selectively coupled to couple read data from the data buffer to the output terminal according to a multiplexer selection signal applied to a multiplexer selection node; a read pointer circuit having a clock node to which the core clock signal is applied and further having an output node coupled to the multiplexer selection node to provide the multiplexer selection signal to sequentially select the input terminals for coupling to the output terminal of the multiplexer responsive to the core clock signal; a data latch coupled to the output terminal of the multiplexer to latch the read data selectively coupled thereto responsive to the core clock signal; and a pointer comparison circuit coupled to the write and read pointer circuits to compare to which one of the data locations read data received from the memory device are currently stored and from which one of the data locations read data are currently coupled to the output terminal of the multiplexer and generate a write-read pointer offset signal indicative of the comparison. - View Dependent Claims (13, 14, 15, 16, 17)
-
Specification