User Manual
BCM1250/BCM1125/BCM1125H
10/21/02
B r o a d c o m C o r p o r a t i o n
Document
1250_1125-UM100CB-R
Section 6: DRAM Page
133
As an example, consider a memory system with parts soldered to the mainboard using CAS latency 2.5 parts.
The simple view would suggest [2, 1, 1] as the starting point. However referring to the figure, we note that with
this setting at 133MHz, the window has closed before the earliest point where we might expect DQS to return.
As a general rule, systems using CAS latency 2.5 should use either [2,0,2] or [2,1,2]. Which of these settings
is better depends on the memory system round trip delay, the DLL settings, and the setting for memory clock
drive strength.
Continuing the example, suppose we run the memory at CAS latency 2. In this case the expected setting,
[2,0,1], is generally the correct setting. But now suppose that for some reason the memory clock needs to be
run slow (below 95MHz). All of the windows in the figure will move right. And in the lightly loaded system the
DQS arrival will be relatively early. The width of the [2,0,1] window will continue to work for some time because
it can move for a reasonable distance until the opening point reaches the early DQS (which the DDR spec
would allow to be before the clock edge). At some frequency the first DQS will not be correctly used to strobe
the data and the data received later in the burst will overwrite the earlier (the memory controller reads into the
low numbered bits of the ZBbus first, so when this happens the data in the low memory address end of a cache
line will be UNPREDICTABLE and the data at the high address will have the value expected from the low
address). This is where the memory controller needs to be programmed with a smaller CAS latency (and
r2wIdle set to 1) to use the right shifted [1,1,2] window.
Most systems will likely want to use one of the following settings:
•
[n,0,1] for whole cycle CAS latencies and relatively short board delays.
•
[n,0,2] for whole cycle CAS latencies with moderately long board delays.
•
[n,1,2] for half-cycle CAS latencies. (Due to a performance bug systems with half-cycle CAS latencies
using BCM1250 pass 1 prototype parts should use [n,0,2] if possible).
There are three additional parameters r2wIdle, w2rIdle, and r2rIdle that address system timing concerns,
specifically bus conflicts caused by the time delay between signals driven by the controller and signals driven
by the SDRAMs.
The r2wIdle parameter sets the turnaround time from the memory driving the databus (on a read) to the
controller driving the databus (for a subsequent write). It is independent of whether the accesses are to the
same physical bank or different physical banks. Assuming a whole cycle CAS latency for the SDRAM, a setting
of 0 for the r2wIdle parameter nominally provides 0.75 cycles of non-overlap time for the DQ lines. But at the
controller, this non-overlap time is reduced by the clock delay from the controller to the SDRAM and the DQ
delay from the SDRAM to the controller. Further, if the SDRAM CAS latency is set to some half-cycle value,
the non-overlap time is reduced by another 0.5 cycle. So systems using SDRAMs with a half-cycle CAS latency
value almost certainly need to set the r2wIdle parameter to a 1, increasing the non-overlap time by one cycle.
Systems using whole-cycle CAS latency values may need to set this parameter to a 1 if the round-trip delays
between the controller and the SDRAMs are significant compared to the clock period.
The w2rIdle parameter sets the turnaround time for the controller driving the databus to the memory driving
the databus when physical banks are changed. It should always be set to 1.
The r2rIdle parameter sets the turnaround time between a read from one physical bank to a read from a
different physical bank.