Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
14 years ago

Mobile DDR read and write fails on some addresses

Hello,

I'm using the Microtronix Multi-Port SDRAM controller for a 512 Mb mobile DDR on the Bemicro SDK board.

I come to a problem just trying some simple read and write without DMA on the mobile DDR. The memory starts at 0x00000000, ends 0x03ffffff. I get faulty results when trying this piece of code :

alt_printf("Writing to ram\n");
for (i=0;i<N;i++) {
    IOWR_32DIRECT(RAM_BASE, i*4, (unsigned long)(i));
}
alt_printf("Reading ram\n");
for (i=0;i<N;i++) {
    res_ram = IORD_32DIRECT(RAM_BASE, i*4);
    if ((i)!=res_ram) {
        alt_printf("%x = %x\n", i, res_ram);
    }
}

Below is the result output, there is a print done when the result doesn't match what is expected from the writes :

0 = f800
100 = 0
800 = 0
c00 = 800
d00 = c00
1000 = 800
1100 = 1000
1400 = 1000
1500 = 1400
1800 = 1000

and keeps growing. I'm quite sure the pins are assigned properly, could this be related to timing issues, or something else? The results are similar with or without bursts. However, from compilation to compilation, the failing addresses aren't the same (never in the 2 LSB) but address 0 always fails.

Thanks
No RepliesBe the first to reply