So I'm testing out the board from this post, things are going smoothly apart from the SDRAM component...

Anyway, Seeed did the assembly of the hard-to-solder parts of the board, and did a pretty good job overall...

Code: Select all
on tile[SERVER_TILE] : out port sdram_en = XS1_PORT_1A;
on tile[SERVER_TILE] : out buffered port:32 sdram_dq_ah = XS1_PORT_16A;
on tile[SERVER_TILE] : out buffered port:32 sdram_cas = XS1_PORT_1L;
on tile[SERVER_TILE] : out buffered port:32 sdram_ras = XS1_PORT_1M;
on tile[SERVER_TILE] : out buffered port:8 sdram_we = XS1_PORT_1N;
on tile[SERVER_TILE] : out port sdram_clk = XS1_PORT_1O;
on tile[SERVER_TILE] : clock sdram_cb = XS1_CLKBLK_2;
Code: Select all
start_clock(cb);
// begin added code
// Hold UDQM,LDQM high during the next 200 uSecs. These are
// driven by NOR connected to WE and CAS lines, so drive those low.
partout_timed(we, 1, 0, t);
partout_timed(cas, 1, 0, t);
// end added code
//Wait 200us for clock to stabilise
T :> time;
T when timerafter(time + 200 * TIMER_TICKS_PER_US) :> time;
So there are several possibilities that I can see:
- The SDRAM chip is blown. Connecting it up the wrong way around was fatal and the game is over.
- Something went wrong elsewhere when the SDRAM was powered, maybe on the XMOS, again game over.
- The SDRAM is not compatible with lib_sdram.
- The signal integrity of the board is so bad, that it won't even run at 25MHz.
So (eventually :) questions:
- Has anyone used one of these SDRAMs before ? I have to rotate the SDRAMs on the remaining 4 boards anyway, and the IS45S16160G-7TLA1 is pin-compatible and currently available at mouser. If it's going to solve all the problems, it'd be worth it to just swap out the chips when I do the rotation.
- Have these changes (from the above-linked thread, by infiniteimprobability) been folded into the latest lib_sdram ?
- Is there anything else I could try ? :)
Simon