I did some rough estimates of resource-utilisation in the FPGA. I did
this by looking at the ratio of utilisation on the Nexys2 (Spartan-3E
FPGA) after place-and-route for the basic FPGALink reference design[1]
versus the existing (PSRAM-based) umdkv2 VHDL, and extrapolating using
a similar ratio from the FPGALink reference design running on an LX9
FPGA. This gives a resource utilisation figure of a little over 11%
for the LX9.
The synthesis report for the existing umdkv2 VHDL on an LX9 FPGA
(place-and-route obviously fails because there's not enough I/O to
drive a PSRAM instead of an SDRAM) gives another data point, at 8%. In
general the synthesis resource utilisation estimate will be wildly
optimistic, but there you go.
So assuming the SDRAM controller is not orders of magnitude more
complex than the existing PSRAM controller, we're looking at resource
utilisation of between 10% and 15% for the current feature-set on an
LX9 FPGA. We could probably get away with using the cheaper-but-pin-
compatible LX4 FPGA, but for these prototypes I suggest keeping the
LX9 because it's not THAT much more expensive and gives us the freedom
to add more cool stuff when we can think of it.
This suggests that we will almost certainly have enough space in the
FPGA for what we need to do. So we could potentially just go ahead
with designing the schematic and layout, and send off for components
and PCBs on the assumption that we'll be able to get the SDRAM
controller written and to some extent tested while we wait. It's
obviously a riskier course of action, because there's a higher
probability of getting something wrong, but if all goes well we end up
with working boards much earlier.
To this end I have been trying to assign the pins from the FPGA in
preparation for the schematic work. I have done it with a rough
topography in mind, such that the PCB layout will require very few
vias, hopefully giving us a fairly solid ground-plane on the back of
the board:
https://github.com/makestuff/umdkv2/blob/master/SIGNALS.txt
I added the /CART_IN line as requested by Rafael, but I can't find any
reference to /M3 anywhere. There's one spare pin left on the FPGA for
this. Rafael - can you send us some links to info about /M3 please?
Chris
[1]
https://github.com/makestuff/libfpgalink/blob/master/vhdl/TopLevel.vhdl