FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
5988 Discussions

Mobile DDR read and write fails on some addresses

Honored Contributor II



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. 


0 Kudos
0 Replies