Forum Discussion
Altera_Forum
Honored Contributor
21 years agoSDRAM does not retain data
I have a custom board with an altera EP1C12, a flash memory and a MT48LC4M32B2 SDRAM memory. Timings I set in SOPC builder are the default timings for this part. When I set the value 0x00000000 ...
Altera_Forum
Honored Contributor
21 years agoSlacker, I'm not using a data cache (I'm using Nios II/e) so I don't need to use uncached memory.
I tried using IORD/WR instructions and the result is the same:#include <io.h># include <stdio.h># include "system.h"
int main()
{
long i,j,k;
long test,last;
long values;
long times;
for(i=0;i<32;i++)
{
values=0;
times=0;
}
for(i=0;i<10;i++)
printf("Hello From Nios\n\n");
// sdram=0x00000000;
IOWR_32DIRECT(SDRAM_BASE, 3578, 0x00000000);
last=0;
i=0;
j=0;
while(1)
{
//test=sdram;
test=IORD_32DIRECT(SDRAM_BASE, 3578);
if(test!=last)
{
times=i;
values=test;
last=test;
j++;
}
if (test==0xffffffff)
{
for(k=0;k<32;k++)
printf("\nTime:%8ld us Value: %8x",times,values);
break;
}
usleep(i);
i+=1; //INCREMENT x us
}
return 0;
} ...I noticed that using a delay increment of 1us at a time (see line "i+=1; //INCREMENT x us") , the problem appears earlier than when I use an increment of 100us: 1us output: Time: 175 us Value: 8 Time: 180 us Value: 400008 Time: 184 us Value: 40000c Time: 187 us Value: c0000c Time: 189 us Value: c4000c Time: 190 us Value: 40c4000c Time: 191 us Value: 44c4200c Time: 194 us Value: 44d4202c Time: 195 us Value: 44d4203c Time: 196 us Value: 44f5203c Time: 199 us Value: 54f7203c Time: 202 us Value: 54f7223c Time: 203 us Value: 74f7223c Time: 204 us Value: 7cf7223c Time: 205 us Value: 7cf72a7c Time: 206 us Value: 7cf7aa7d Time: 209 us Value: 7cf7ea7d Time: 210 us Value: 7df7ea7d Time: 215 us Value: 7df7ee7d Time: 219 us Value: fdf7ee7d Time: 228 us Value: fdf7eefd Time: 242 us Value: fdf7eeff Time: 253 us Value: fdf7efff Time: 254 us Value: fdffffff Time: 255 us Value: ffffffff Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 100us output: Time: 2500 us Value: 8 Time: 2600 us Value: 40000c Time: 2700 us Value: 44f4203c Time: 2800 us Value: 7cf7227d Time: 2900 us Value: 7df7ea7d Time: 3000 us Value: fdf7ee7d Time: 3100 us Value: fdf7eefd Time: 3300 us Value: fdf7efff Time: 3400 us Value: ffffffff Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 Time: 0 us Value: 0 It doesn't seem an overwriting problem. Another thing: I'm running the program on onchip memory, since if I set the reset address at the beginning of the SDRAM, I can't get debug to the first line of the code.