throbber
(12) United States Patent
`Jeddelloh
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 6,629,222 B1
`*Sep. 30, 2003
`
`USOO6629222B1
`
`(54) APPARATUS FOR SYNCHRONIZING
`STROBE AND DATA SIGNALS RECEIVED
`FROMARAM
`
`(75)
`
`(73)
`
`(*)
`
`(21)
`(22)
`(51)
`(52)
`
`(58)
`
`(56)
`
`Inventor: Joseph M. Jeddeloh, Minneapolis, MN
`(US)
`Assignee: Micron Technology Inc., Boise, ID
`(US)
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`This patent is Subject to a terminal dis
`claimer.
`
`Notice:
`
`Appl. No.: 09/352,719
`Filed:
`Jul. 13, 1999
`Int. Cl." .......................... G06F 12/00; G06F 13/00
`U.S. Cl. ....................... 711/167; 711/104; 713/401;
`365/193; 365/194
`Field of Search ................................. 711/104, 167;
`710/52-53, 240, 58-59; 365/193-194, 233,
`189.05; 713/400-401
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4/1995 Sun et al. ................... 365/194
`5,406,518 A
`5,475,690 A * 12/1995 Burns et al. ................ 370/519
`5,615,358 A * 3/1997 Vogley ....................... 713/5O1
`5,644,387 A * 7/1997 Oda et al...
`... 356/5.01
`5,790,869 A * 8/1998 Melo et al.
`... 710/240
`5,864,568 A * 1/1999 Nemazie ....
`371/40.14
`5.948,114 A * 9/1999 Klinger .....
`... 714/733
`6,016,282 A * 1/2000 Keeth .....
`... 365/233
`6,029,250 A
`2/2000 Keeth ......................... 413/400
`
`8/2002 Gustavson et al. ......... 711/105
`
`6,442,644 B1
`* cited by examiner
`Primary Examiner Reginald G. Bragdon
`ASSistant Examiner Pierre M. Vital
`(74) Attorney, Agent, or Firm-Park, Vaughan & Fleming
`LLP
`ABSTRACT
`(57)
`One embodiment of the present invention provides an appa
`ratus that Synchronizes a data Signal and a data Strobe Signal
`received from a random access memory. This apparatus
`includes a mechanism that initiates a read operation to the
`random access memory by Sending a target address for the
`read operation to the random acceSS memory. The apparatus
`also includes an input driver that receives the data Signal
`containing data retrieved from the target address from the
`random access memory. Coupled to the input driver is a
`register that Stores the data Signal. A first programmable
`delay circuit is coupled to an enable input of the input driver
`in order to synchronize the driving of the input driver with
`the data Signal received from the random acceSS memory. A
`Second programmable delay circuit is coupled between the
`data Strobe Signal and a clock input of the register. This
`Second programmable delay circuit is configured to delay
`the data Strobe Signal So as to Synchronize the data Strobe
`Signal with the data Signal received from the random access
`memory. One embodiment of the present invention includes
`an initialization mechanism that determines the first delay
`value and the Second delay value by performing test read
`operations using a plurality of different combinations of
`different first delay values and different second delay values.
`In a variation on this embodiment, this initialization mecha
`nism includes code executed during a System boot process
`that determines the first delay value and the Second delay
`value.
`
`18 Claims, 6 Drawing Sheets
`
`EXECUTENAIZATION
`CCEDURING 3Od
`procSSTO PRORM
`Strad OERATIONS
`USING IFFERENT FIRST
`An SECONOELAY
`WALUES
`52
`
`PASS DATA SIGNAL
`THROUGHINPUTRWER
`INTO REGISTER
`512
`
`ASSINURWER
`EmABLESIGNATHROUGH
`FRSTDLAY CRCUIT
`54
`
`
`
`
`
`PROGRAM FRSELAY
`CIRCUIT WITH FRSDAY
`WALUE
`504
`
`RCVEDATASTROB
`SIGNAFROM RAM
`55
`
`PrOGRASCONAY
`CRCUIT WITH SECOND
`EAYWALUE
`508
`
`ASSAA SRXESGNAL
`HROUGH SECON DELAY
`CRCU
`518
`
`USAASTROESIGNA
`TO ACHAA SIGNAL
`NTO REGISTR
`520
`
`
`
`NTAEREAD OPERAON
`to TARGEADRESS
`58
`
`RECEIWE DAASIGNA
`FROM RACONANNG
`DATARetreWROM
`ARGEARESS
`510
`
`Petitioner Lenovo (United States) Inc. - Ex. 1005
`
`1 of 12
`
`

`

`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 1 of 6
`
`US 6,629,222 B1
`
`
`
`
`
`
`
`
`
`PROCESSOR
`112
`
`PROCESSOR
`114
`
`PROCESSOR
`116
`
`
`
`
`
`PROCESSOR
`BUS
`108
`
`GRAPHICS
`UNIT
`(AGP)
`110
`O
`
`
`
`AGP
`128
`
`
`
`
`
`PROCESSOR
`Q- INTERFACE K
`126
`
`
`
`
`
`
`
`
`
`
`
`
`
`MEMO
`RY
`INTERFACE
`(WITH
`ROGRAM
`MABLE DELAY)
`122
`
`BUS
`INTERFACE
`130
`
`NORTH
`BRIDGE
`102
`
`INTERFACE
`105
`
`
`
`MEMORY
`104
`
`
`
`
`
`BUS
`106
`
`SOUTH
`BRIDGE
`118
`
`N. PERPHERAL
`BUS
`120
`
`FIG. 1
`
`2 of 12
`
`

`

`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 2 of 6
`
`US 6,629,222 B1
`
`AYOWSAW
`
`vOL
`
`
`
`AgOULsVLVd
`
`902
`
`viva
`
`c0e
`
`AAIS93Y
`
`LINDYID
`
`cle
`
`OLz
`
`SNIHOVWWSLSAS801
`
`ALVIS|sna
`
`490719
`
`v0Z
`
`SUaAlud2Zh|INd.LNO
`
`SJOVIYSLNIANOWS_|
`
`
`
`beeesazJLINSNVYL
`+9LINDYIO|
`80Ziv
`YOSS300Nd|OL
`
`Viva
`
`3 of 12
`
`3 of 12
`
`
`
`

`

`U.S. Patent
`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 3 of 6
`
`US 6,629,222 B1
`US 6,629,222 BI
`
`AgOULsS
`
`902
`
`vivd
`
`ZOZ
`c0c
`
`Viva cb?
`
`
`
`—=—=———_—_mmrmeeee
`
`Viva
`
`COZ
`
`WALSAS
`
`M9019
`
`07
`
`4 of 12
`
`4 of 12
`
`

`

`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 4 of 6
`
`US 6,629,222 B1
`
`
`
`007
`
`
`
`L?TTORJIO AVTEC
`
`OZZ
`
`>JO
`
`5 of 12
`
`

`

`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet S of 6
`
`US 6,629,222 B1
`
`START
`500
`
`EXECUTENTIALIZATION
`CODE DURING BOOT
`PROCESS O PERFORM
`TEST READ OPERATIONS
`USNGDIFFERENT FIRST
`AND SECOND DELAY
`VALUES
`502
`
`PROGRAM FRS DELAY
`CIRCUIT WITH FIRST DELAY
`VALUE
`504
`
`PROGRAM SECOND DELAY
`CIRCUIT WITH SECOND
`DELAY VALUE
`506
`
`NTATE READ OPERATION
`TO TARGET ADDRESS
`508
`
`
`
`RECEIVE DATA SIGNAL
`FROM RAM CONTAINING
`DATARETRIEVED FROM
`TARGET ADDRESS
`510
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`PASS DATA SIGNAL
`THROUGH INPUT DRIVER
`NTO REGISTER
`512
`
`PASSINPUT DRIVER
`ENABLE SIGNAL THROUGH
`FIRST DELAY CIRCUIT
`514
`
`RECEIVE DATASTROBE
`SIGNAL FROM RAM
`516
`
`PASS DATA SROBE SIGNAL
`THROUGH SECOND DELAY
`CIRCUIT
`518
`
`USE DATASTROBE SIGNAL
`TO LATCH DATA SIGNAL
`NTO REGISTER
`520
`
`522
`
`F.G. 5
`
`6 of 12
`
`

`

`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 6 of 6
`
`US 6,629,222 B1
`
`INTIALIZE FIRST AND
`SECOND DELAY VALUES
`6O2
`
`WRITE RANDOM VALUE
`TO TARGET ADDRESS
`604
`
`ATTEMPT TO READ
`FROM TARGET
`ADDRESS
`606
`
`
`
`NCREMENT SECOND
`DELAY VALUE
`608
`
`NITIALIZE SECOND
`DELAY VALUE
`609
`
`INCREMENT FIRST
`DELAY VALUE
`610
`
`SELECT FIRST AND
`SECOND DELAY VALUES
`612
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`CYCLE
`THROUGH
`ALL SECOND
`DELAY
`VALUES
`
`CYCLE
`THROUGH
`ALL SECOND
`DELAY
`VALUES
`
`F.G. 6
`
`7 of 12
`
`

`

`1
`APPARATUS FOR SYNCHRONIZING
`STROBE AND DATA SIGNALS RECEIVED
`FROMARAM
`
`RELATED APPLICATION
`The Subject matter of this application is related to the
`Subject matter in a co-pending non-provisional application
`by the same inventor as the instant application and filed on
`the same day as the instant application entitled, "Method for
`Synchronizing Strobe and Data Signals Received from a
`RAM,” having Ser. No. 09/352,718, and filing date Jul. 13,
`1999 now U.S. Pat. No. 6,453,402.
`
`BACKGROUND
`
`1. Field of the Invention
`The present invention relates to memory Systems for
`computers, and more particularly to the design of a memory
`interface that automatically adjusts the timing between read
`data and an associated Strobe Signal returning from a
`memory during a read operation. The present invention also
`adjusts timing between the read data and an input driver
`enable signal.
`2. Related Art
`AS processor Speeds continue to increase, memory SyS
`tems are under increasing pressure to provide data at faster
`rates. This has recently led to the development of new
`memory System designs. Memory latencies have been dra
`matically decreased by using page mode and extended data
`out (EDO) memory designs, which achieve a high burst rate
`and low latencies within a Single page of memory. Another
`recent innovation is to incorporate a Synchronous clocked
`interface into a memory chip, thereby allowing data from
`within the same page of memory to be clocked out of the
`memory chip in a continuous Stream. Such memory chips
`with clocked interfaces are known as Synchronous random
`access memories.
`Recently, standards such as SyncLink and DDR have been
`developed to govern the transfer of data between memory
`and processor using Such clocked interfaces.
`SyncLink, which will be known as IEEE Standard 1596.7,
`Specifies an architecture that Supports a 64M-bit memory
`with a data transfer rate of 1.6 gigabytes per Second.
`DDR is an acronym for Double Data Rate SDRAM;
`SDRAM is an acronym for Synchronous Dynamic Random
`Access Memory. During read operations, DDR memories
`return a bi-directional data strobe Signal (or data clock
`Signal) along with the data. The data is clocked into the
`processor (or memory controller) on both edges of the data
`strobe signal. This differs from conventional memory
`Systems, which rely on the System clock to latch the data
`received during a read operation.
`Designing an interface that receives a data Strobe Signal
`from a DDR memory during a read operation presents
`challenges because a certain amount of skew typically arises
`between the data Signal and the data Strobe Signal. If this
`skew is large enough, a data Strobe edge, which is used to
`latch the data Signal, can move from the center of the “data
`eye” of the data Signal into a transitional region or into
`another data eye. This may cause Spurious data to be latched
`during a read operation. Skew may additionally arise
`between the data Signal and an enable Signal for an input
`driver that is used to drive the data Signal from a memory bus
`into a latch in the processor (or in the memory controller).
`This type of skew may also cause Spurious data to be latched
`during read operations.
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 6,629,222 B1
`
`2
`What is needed is a System that adjusts the temporal
`alignment between a data Signal and an associated data
`Strobe Signal received from a memory during a read opera
`tion. Additionally, what is needed is a System that adjusts the
`temporal alignment between a data Signal received during a
`read operation and an associated input driver enable signal.
`SUMMARY
`One embodiment of the present invention provides an
`apparatus that Synchronizes a data Signal and a data Strobe
`Signal received from a random access memory. This appa
`ratus includes a mechanism that initiates a read operation to
`the random acceSS memory by Sending a target address for
`the read operation to the random access memory. The
`apparatus also includes an input driver that receives the data
`Signal containing data retrieved from the target address from
`the random access memory. Coupled to the input driver is a
`register that Stores the data Signal. A first programmable
`delay circuit is coupled to an enable input of the input driver
`in order to synchronize the driving of the input driver with
`the data Signal received from the random acceSS memory. A
`Second programmable delay circuit is coupled between the
`data Strobe Signal and a clock input of the register. This
`Second programmable delay circuit is configured to delay
`the data Strobe Signal So as to Synchronize the data Strobe
`Signal with the data Signal received from the random access
`memory.
`One embodiment of the present invention includes a
`mechanism to program the first programmable delay circuit
`with a first delay value, and a mechanism to program the
`Second programmable delay circuit with a Second delay
`value.
`One embodiment of the present invention includes an
`initialization mechanism that determines the first delay value
`and the second delay value by performing test read opera
`tions using a plurality of different combinations of different
`first delay values and different Second delay values. In a
`variation on this embodiment, this initialization mechanism
`includes code executed during a System boot process that
`determines the first delay value and the Second delay value.
`In one embodiment of the present invention, the first
`programmable delay circuit includes a coarse delay adjust
`ment mechanism and a fine delay adjustment mechanism.
`One embodiment of the present invention includes a
`circuit that de-asserts the enable Signal a fixed amount of
`time after the enable signal is asserted.
`One embodiment of the present invention includes a
`circuit that de-asserts the enable signal a programmable
`amount of time after the enable Signal is asserted.
`In one embodiment of the present invention, the random
`acceSS memory is comprised of a plurality of memory
`modules, wherein a different first delay value and a different
`Second delay value are associated with each memory mod
`ule. This embodiment further includes a mechanism that
`examines the target address to determine which memory
`module the target address is directed to in order to determine
`an associated first delay value and an associated Second
`delay value for the memory module.
`One embodiment of the present invention includes a
`re-calibration mechanism that periodically measures devia
`tions in propagation delay through the first programmable
`delay circuit and/or the Second programmable delay circuit
`relative to a System clock, and adjusts the first program
`mable delay circuit and/or the Second programmable delay
`circuit, if necessary, to compensate for measured deviations.
`BRIEF DESCRIPTION OF THE FIGURES
`FIG. 1 illustrates a computer System in accordance with
`an embodiment of the present invention.
`
`8 of 12
`
`

`

`US 6,629,222 B1
`
`15
`
`25
`
`35
`
`40
`
`3
`FIG. 2 illustrates a memory interface in accordance with
`an embodiment of the present invention.
`FIG. 3 illustrates a circuit for receiving data from a
`memory during a read operation in accordance with an
`embodiment of the present invention.
`FIG. 4 illustrates a programmable delay circuit in accor
`dance with an embodiment of the present invention.
`FIG. 5 is a flow chart illustrating the process of using
`delay circuitry to Synchronize various signals during a read
`operation in accordance with an embodiment of the present
`invention.
`FIG. 6 is a flow chart illustrating the process of running
`tests to determine delay values in accordance with an
`embodiment of the present invention.
`DETAILED DESCRIPTION
`The following description is presented to enable any
`perSon Skilled in the art to make and use the invention, and
`is provided in the context of a particular application and its
`requirements. Various modifications to the disclosed
`embodiments will be readily apparent to those skilled in the
`art, and the general principles defined herein may be applied
`to other embodiments and applications without departing
`from the Spirit and Scope of the present invention. Thus, the
`present invention is not intended to be limited to the embodi
`ments shown, but is to be accorded the widest Scope
`consistent with the principles and features disclosed herein.
`Computer System
`FIG. 1 illustrates a computer System in accordance with
`an embodiment of the present invention. The computer
`system illustrated in FIG. 1 includes processors 112, 114 and
`116, which are coupled to processor bus 108. Processors
`112, 114 and 116 may include, any type of general or Special
`purpose processors, including, but not limited to
`microprocessors, mainframe computers, digital Signal
`processors, graphics processors and device controllers. Pro
`cessor bus 108 may include any type of communication
`channel for coupling a processor to other devices in the
`computer System. These other devices may include periph
`eral devices, memory devices and even other processors.
`North bridge 102 couples processor bus 108 to memory
`104, graphics unit 110 and bus 106. As illustrated in FIG. 1,
`north bridge 102 contains: processor interface 126 for com
`municating with processor bus 108; accelerated graphics
`port (AGP) 128 for communicating with graphics unit 110;
`memory interface 122 for communicating with memory 104;
`and bus interface 130 for communicating with bus 106.
`Interfaces 126, 128, 122 and 130 are coupled together
`through Switch 124, which can be any type of Switching
`circuitry that is able to Selectively couple together to inter
`faces 126, 128, 122 and 130.
`Memory 104 may be any type of memory with a clocked
`interface that returns data along with a Strobe Signal for
`latching the data during read operations. This may include
`memory implementing the DDR interface Standard. In one
`embodiment, memory 104 includes a plurality of memory
`modules, each of which includes a plurality of memory
`chips. As illustrated in FIG. 1, memory 104 includes inter
`face 105, which interacts with memory interface 122 in
`north bridge 102 to send data to and receive data from north
`bridge 102. Note that memory interface 122 includes pro
`grammable circuitry for aligning memory reference signals
`in accordance with an aspect of the present invention.
`Graphics unit 110 can include any special-purpose cir
`cuitry for performing graphics operations. This allows
`graphics computations to be off-loaded from processors 112,
`114 and 116.
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`Bus 106 couples north bridge 102 to South bridge 118.
`Bus 106 may include any type of communication channel
`for coupling north bridge 102 to other devices in a computer
`System, including peripheral devices and memory devices.
`In one embodiment of the present invention, bus 106 is a PCI
`bus.
`South bridge 118 includes circuitry for coupling together
`components of the computer System. For example, South
`bridge 118 couples bus 106 to peripheral bus 120.
`Peripheral bus 120 may include any type of communica
`tion channel for coupling South bridge 118 to other devices
`in a computer System, including peripheral devices and
`memory devices. In one embodiment of the present
`invention, peripheral bus 120 is an ISA bus.
`Peripheral bus 120 is coupled to ROM 140, which con
`tains BIOS code 142. In one embodiment of the present
`invention, BIOS code 142 includes code for aligning data
`Strobe and data Signals received at memory interface 122
`from memory 104.
`The system illustrated in FIG. 1 operates as follows. A
`processor, Such as processor 112, performs a read operation.
`This read operation is relayed across processor bus 108 into
`memory interface 122 within north bridge 102. Memory
`interface 122 sends a read request to interface 105 within
`memory 104. Interface 105 returns the read data and an
`asSociated data Strobe Signal to memory interface 122. This
`data Strobe Signal is used to clock the data into memory
`interface 122. Next, the read operation is completed by
`transferring data acroSS processor buS 108 to processor 112.
`Memory Controller
`FIG. 2 illustrates the internal structure of memory inter
`face 122 from FIG. 1 in accordance with an embodiment of
`the present invention. In this embodiment, memory interface
`122 contains a number of components, including State
`machine 210, transmit circuit 208, receive circuit 212, input
`drivers 214 and output drivers 216. On the right-hand side
`of FIG. 2, memory interface 122 receives data signal 202
`and data strobe signal 206 from memory 104 (from FIG. 1).
`On the left-hand side, memory interface 122 is coupled to
`data signal 202 and system clock 204.
`Within memory interface 122 there is a transmit path to
`transmit data to memory 104 during a write operation, and
`a receive path to receive data from memory 104 during a
`read operation.
`During a write operation, data Signal 202 originates from
`processor bus 108 and passes through transmit circuit 208
`and output drivers 216, which drive data signal 202 out to
`memory 104. Transmit circuit 208 includes a register for
`Storing data Signal 202, while data Signal 202 is driven out
`to memory 104.
`During a read operation, data Signal 202 and data Strobe
`signal 206 from memory 104 passes through input drivers
`214 into receive circuit 212. Receive circuit 212 includes
`circuitry to transfer data Signal 202 from the clock domain
`of data strobe signal 206 into the clock domain of system
`clock 204. From receive circuit 212, data signal 202 is
`directed onto processor bus 108.
`Note that data strobe signal 206 is used to clock data
`signal 202 into receive circuit 212.
`Also note that State machine 210 generates enable Signal
`220, which is used to enable input drivers 214. In order to
`achieve high performance, enable Signal 220 must be pre
`cisely aligned with data Signal 202. This can pose a problem
`because enable signal 220 is generated by State machine 210,
`
`9 of 12
`
`

`

`US 6,629,222 B1
`
`S
`which is governed by System clock 204, while data Signal
`202 is clocked by data strobe signal 206. For alignment
`purposes, enable Signal 206 passes through delay circuit
`218, which can be adjusted to compensate for skew between
`enable signal 220 and data signal 202. Delay circuit 218 is
`described in more detail below with reference to FIG. 4.
`Note that in the embodiment illustrated in FIG. 1, memory
`interface 122 resides on north bridge 102. In another
`embodiment, memory interface 122 resides within a proces
`Sor. Also note that although input driverS 214 and output
`drivers 216 appear as Separate devices in FIG. 1, they may
`actually be combined into unified bi-directional I/O drivers
`(buffers).
`
`15
`
`6
`408. The outputs of coarse delay. elements 402,404, 406 and
`408 feed into MUX 410. MUX 410 Selects between the
`outputs of coarse delay elements 402, 404, 406 and 408 to
`generate an output that feeds into a chain of fine delay
`elements 412, 414, 416 and 418. The outputs of fine delay
`elements 412, 414, 416 and 418 feed into MUX 420. MUX
`420 selects between the outputs of fine delay elements 412,
`414, 416 and 418 to generate an output for delay circuit 400.
`Programmable delay register 422 controls MUX 410 and
`MUX 420. More specifically, coarse delay component 424
`of programmable delay register 422 controls MUX 410,
`while fine delay component 426 controls MUX 420. Thus,
`delay circuit 400 has a coarse adjustment through MUX 410
`and a fine adjustment through MUX 420. Note that pro
`grammable delay register 422 is memory mapped So that it
`can be loaded by a processor.
`In another embodiment of the present invention, delay
`circuit 400 includes only a single MUX 410 and only
`Supports only a single coarse delay adjustment. In this
`embodiment, the output of MUX 410 becomes the output of
`delay circuit 400.
`Synchronizing Signals. During a Read Operation
`FIG. 5 is a flow chart illustrating the process of using
`delay circuitry to Synchronize various signals during a read
`operation in accordance with an embodiment of the present
`invention. The system first determines delay values to be
`loaded into delay circuits 218, 314 and 316 (step 502). This
`can be accomplished during a System boot process by
`executing BIOS code 142 that performs test read operations
`using different delay values as is discussed below with
`reference to FIG. 6. Once the optimal delay values are
`determined, the delay values are programmed into first delay
`circuit 218 (step 504) and a second delay circuit 314 (step
`506).
`Next, the System initiates a read operation to a target
`address in memory 104 (step 508). In response to the read
`operation, memory 104 returns data Signal 202 containing a
`data value retrieved from the target address (step 510). This
`data Signal 202 is passed through input driverS 214 into a
`register comprised of D-FFS 306, 308, 310 and 312 (step
`512). Input drivers 214 are enabled by enable signal 220 that
`passes from State machine 210, through first delay circuit
`218, and into an enable input of input drivers 214 (step 514).
`Note that state machine 210 de-asserts enable signal 220 a
`fixed amount of time later, and this de-asserted Signal is
`similarly be delayed by first delay circuit 218.
`Alternatively, in another embodiment of the present
`invention, enable Signal 220 is de-asserted by a Separate
`signal from state machine 210 that feeds through a third
`delay circuit (not shown) before being ANDed with enable
`signal 220. This allows the system to separately control the
`delay until de-assertion of enable signal 220.
`Note that by controlling the timing of assertion and
`de-assertion of enable Signal 220, the System can control
`pre-charge time for the register that receives data Signal 202.
`While data signal 202 is being received from memory
`104, data strobe signal 206 is received from memory 104
`(step 516). Data strobe signal 206 passes through second
`delay circuit 314 (step 518), and is then used to latch data
`signal 202 into D-FFs 306, 308, 310 and 312 (step 520).
`In one embodiment of the present invention, the System
`periodically measuring deviations in propagation delay
`through the first delay circuit 218 and/or through the second
`delay circuit 314 relative to system clock 204. If necessary,
`the first programmable delay circuit 218 and/or the second
`
`25
`
`Receive Circuit
`FIG. 3 illustrates the internal structure of receive circuit
`212 in accordance with an embodiment of the present
`invention. Receive circuit 212 receives data signal 202 and
`data strobe signal 206 from input drivers 214 in FIG.1. Data
`signal 202, which is 64 bits wide, feeds into four different
`D-flip-flips (D-FFs) 306, 308, 310 and 312. Data strobe
`signal 206 feeds into clock inputs of D-FFS 306, 308, 310
`and 312, and is used to latch data signal 202 into each of
`D-FFs 306,308,310 and 312. More specifically, data strobe
`Signal 206 passes through delay circuit 314 into clock inputs
`of D-FFS 306 and 310. Data strobe signal 206 also passes
`through inverter 318 and delay circuit 316 into clock inputs
`of D-FFS 308 and 312. Hence, D-FFs 306 and 310 are
`clocked on the rising edge of data Strobe Signal 206, while
`D-FFS 308 and 312 are clocked on the falling edge of data
`strobe signal 206. Note that delay circuits 314 and 316 can
`be programmed to precisely Synchronize data Strobe Signal
`206 with data signal 202.
`The outputs of D-FFS 306,308,310 and 312 pass through
`MUX 304 into 128-bit wide D-FF 302. MUX 304 is a
`two-to-one multiplexer that selects between either D-FFs
`306 and 308, or D-FFS 310 and 312. The select line for MUX
`304 (not shown) is generated by state machine 210. MUX
`304 allows receive circuit 212 to ping-pong between receiv
`40
`ing data in D-FFS 306 and 308, and receiving data in D-FFs
`310 and 312.
`D-FF302 is 128-bits wide and is clocked by system clock
`204. Once data signal 202 is clocked into D-FF 302, data
`signal 202 is in the clock domain of system clock 204.
`In another embodiment of the present invention, memory
`104 includes a plurality of different memory modules, and
`the System maintains a different Set of delay values for each
`memory module. This allows the System to control skew at
`the memory module level, which can be quite useful because
`skew can vary between different memory modules.
`Delay Circuit
`FIG. 4 illustrates programmable delay circuit 400 in
`accordance with an embodiment of the present invention.
`Programmable delay circuit 400 represents the internal
`structure of delay circuit 218 from FIG. 2, or delay circuits
`314 and 316 from FIG. 3. In one application, programmable
`delay circuit 400 receives an enable signal 220 and produces
`a delayed output that feeds into an enable input of input
`drivers 214 to enable driving of input drivers 214. In another
`application, programmable delay circuit 400 receives data
`Strobe Signal 206 and produces a delayed output that feeds
`into a clock input of a D-flip-flop in order to latch a data
`Signal into the D-flip-flop.
`The input into programmable delay circuit 400 passes
`through a chain of coarse delay elements 402, 404, 406 and
`
`35
`
`45
`
`50
`
`55
`
`60
`
`65
`
`10 of 12
`
`

`

`7
`programmable delay circuit 314 are adjusted to compensate
`for measured deviations.
`
`Determining Delay Values
`FIG. 6 is a flow chart illustrating the process of running
`tests to determine delay values in accordance with an
`embodiment of the present invention. The system first
`initializes the first delay value and the Second delay value to
`their lowest possible values (step 602). Next, the system
`writes a random value to a target address in memory 104
`(step 604). The system next attempts to read the random
`value from the target address (step 606) and keeps a record
`of whether the read operation was Successful. In the inner
`loop in FIG. 6, the System increments the Second delay value
`(step 608) to cycle through all second delay values. In the
`outer loop, the System increments the first delay value (Step
`610) to cycle through all first delay values. After cycling
`through all inner and Outer loops, the System has tested all
`possible combinations of delay values. Next, the System
`Selects a first delay value in the middle of a valid range of
`first delay values, and Similarly Selects a Second delay value
`from the middle of a valid range of Second delay values (Step
`612).
`The foregoing descriptions of embodiments of the inven
`tion have been presented for purposes of illustration and
`description only. They are not intended to be exhaustive or
`to limit the invention to the forms disclosed. Accordingly,
`many modifications and variations will be apparent to prac
`titioners skilled in the art. Additionally, the above disclosure
`is not intended to limit the invention. The scope of the
`invention is defined by the appended claims.
`What is claimed is:
`1. An apparatus that Synchronizes a data Signal and a data
`Strobe Signal received from a random access memory,
`wherein the random acceSS memory is configured to adhere
`to the double data rate (DDR) memory interface standard,
`the data Strobe Signal being Sent by the random acceSS
`memory in order to latch the data Signal, wherein the
`apparatus resides within a processor, the apparatus compris
`ing:
`a mechanism that initiates a read operation to the random
`acceSS memory including Sending a target address for
`the read operation to the random access memory;
`an input driver that receives the data Signal from the
`random access memory, the data Signal containing data
`retrieved from the target address,
`a register comprised of a first Set of flip-flops and a Second
`Set of flip-flops coupled to the input driver that Stores
`the data Signal, the register including a clock input for
`latching the data Signal into the register, wherein the
`first Set and the Second Set are used alternately in
`ping-pong fashion to improve throughput;
`an enable input on the input driver for enabling the input
`driver to drive the data Signal into the register;
`a first programmable delay circuit coupled to the enable
`input to delay an enable signal from the System clock
`feeding into the enable input So as to Synchronize the
`driving of the input driver with the data Signal received
`from the random access memory; and
`a Second programmable delay circuit coupled between the
`data Strobe Signal and the clock input of the register, the
`Second programmable delay circuit being configured to
`delay the data Strobe Signal from the memory So as to
`Synchronize the data Strobe Signal with the data Signal
`received from the random access memory.
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 6,629,222 B1
`
`8
`2. The apparatus of claim 1, further comprising:
`a mechanism to program the first programmable delay
`circuit with a first delay value; and
`a mechanism to program the Second programmable delay
`circuit with a Second delay value.
`3. The apparatus of claim 2, further comprising an ini
`tialization mechanism that determines the first delay value
`and the Second delay value by performing test read opera
`tions using a plurality of different combinations of different
`first delay values and different Second delay values.
`4. The apparatus of claim 3, wherein the initialization
`mechanism includes code executed during a System boot
`process that determines the first delay value and the Second
`delay value.
`5. The apparatus of claim 1, wherein the first program
`mable delay circuit includes a coarse delay adjustment
`mechanism and a fine delay adjustment mechanism.
`6. The apparatus of claim 1, wherein the Second program
`mable delay circuit includes a coarse delay adjustment
`mechanism and a fine delay adjustment mechanism.
`7. The apparatus of claim 1, further comprising a circuit
`that de-asserts the enable Signal a fixed amount of time after
`the enable Signal is asserted.
`8. The apparatus of claim 1, further comprising a circuit
`that de-asserts the enable Signal a programmable amount of
`time after the enable signal is asserted.
`9. The apparatus of claim 1, wherein the random access
`memory is comprised of a plurality of memory modules, and
`wherein a different first delay value and a different second
`delay value are

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket