Intel 81342 Developer's Manual page 669

Table of Contents

Advertisement

D D R S D R A M M e m o r y C o n t r o l l e r — I n t e l
7 . 8 . 3 6 . 1 . 1 D L L R C V R E N A l g o r i t h m
#define MCU_DLLRCVER
#define MCU_SDCR0
int compute_dllrcver(void)
{
int dllrcver_value, dqs_value, treg, fine, coarse;
int inverted_dqs_value, direction_value;
unsigned int sdcr0_val;
*MCU_DLLRCVER &= ~(1<<18); /* Clear bit 18 to clear Result bit */
dllrcver_value = 0x50;
dqs_value = sample_dqs(dllrcver_value); /* Take first sample of DQS with
/* Set direction and compare value to find next edge */
inverted_dqs_value = (dqs_value == 0) ? 1 : 0;
direction_value = (dqs_value == 0) ? +1 : -1;
do {
dllrcver_value += direction_value;
dqs_value = sample_dqs(dllrcver_value);
if (dqs_value <= 0 || dqs_value >= 255)
} while (dqs_value != inverted_dqs_value);
/* Verify if the DQS edge found above is the second DQS edge, and
adjust DLLRCVER Value if it was indeed the second edge */
if (dllrcver_value >= 0x30 && sample_dqs(dllrcver_value - 0x30))
D e c e m b e r 2 0 0 7
O r d e r N u m b e r : 3 1 5 0 3 7 - 0 0 2 U S
®
8 1 3 4 1 a n d 8 1 3 4 2
((volatile unsigned int *) 0xffd82030)
((volatile unsigned int *) 0xffd81804)
/* Set Initial Value of DLLRCVER Delay using a
return -1;
// something went wrong
dllrcver_value -= 0x40; // Shift back to first edge
recommended initial value */
current DLLRCVER Delay */
/* look for rising edge */
I n t e l
®
8 1 3 4 1 a n d 8 1 3 4 2 I / O P r o c e s s o r s
D e v e l o p e r ' s M a n u a l
6 6 9

Advertisement

Table of Contents
loading

This manual is also suitable for:

81341

Table of Contents