Updated:
I don't know what the different on my old board vs new board. The new board seems to work little better.
Nios C code:
volatile unsigned long w, r;
unsigned int i;
for (i=5; i<20; i++)
{
IOWR_32DIRECT(SDRAM_BASE, i*4, i);
printf("Write: %x\n", i);
usleep(1000);
r = IORD_32DIRECT(SDRAM_BASE, i*4);
printf(" Read: %x\n\n", r);
}
// ******************
New board output:
nios2-terminal: connected to hardware target using JTAG UART on cable
nios2-terminal: "USB-Blaster [USB-0]", device 1, instance 0
nios2-terminal: (Use the IDE stop button or Ctrl-C to terminate)
Write: 5
Read: 5
Write: 6
Read: 6
Write: 7
Read: 7
Write: 8
Read: 8
Write: 9
Read: 9
Write: a
Read: a
Write: b
Read: b
Write: c
Read: c
Write: d
Read: d
Write: e
Read: e
Write: f
Read: f
Write: 10
Read: 10
Write: 11
Read: 11
Write: 12
Read: 12
Write: 13
Read: 13
Old board output:
nios2-terminal: connected to hardware target using JTAG UART on cable
nios2-terminal: "USB-Blaster [USB-0]", device 1, instance 0
nios2-terminal: (Use the IDE stop button or Ctrl-C to terminate)
Write: 5
Read: 0
Write: 6
Read: 0
Write: 7
Read: 0
Write: 8
Read: 0
Write: 9
Read: 0
Write: a
Read: 0
Write: b
Read: 0
Write: c
Read: 0
Write: d
Read: 0
Write: e
Read: 0
Write: f
Read: 0
Write: 10
Read: 0
Write: 11
Read: 0
Write: 12
Read: 0
Write: 13
Read: 0
~Sean