This section describes the VREF calibration algorithm. The algorithm is the same for Read DQ VREF and Write DQ VREF calibration.
VREF calibration starts at a default VREF and the
horizontal window at the default VREF is recorded as
Vref_max_h
. Next, VREF is incremented by a pre-defined
step size. After each step size increments, the horizontal window size will be
calculated and compared with the previous detected windows. If the current horizontal
window is bigger than all the other windows, the current VREF is recorded as
Vref_max_h
, and its horizontal window is recorded as
W_max_r
.
VREF increments by step size continues until the horizontal
window at a VREF goes down to N × W_max_r
; 0 < N < 1.
The VREF value where the horizontal window is less than N ×
W_max_r
is recorded as Vref_min_h
.
In some cases, two Vref_min_h
points can be found before
(Vref_lb
) and after (Vref_ub
) finding the
Vref_max_h
. The final VREF point will be set to
(Vref_ub
– Vref_lb
) / 2.
In other cases, Vref_lb
cannot be detected while
increasing the VREF. In such cases, VREF will be reverted back to
the default value and decremented by the step size until it finds the
Vref_lb
point. While decrementing, there can be cases where the
horizontal window starts increasing and a new Vref_max_h
point can be
found with a bigger horizontal window than W_max_r
. In this case, the
final VREF is set to the center of the new Vref_min_h
points.