Although modern FPGAs contain internal memories, the amount of memory available is always orders of magnitude below what is possible with dedicated memory chips. So it is not surprising that many FPGA designers attach some type of memory to their FPGA. In particular, SDRAMs are very popular memories due to their high speed and low cost. Unfortunately, they are not as easy to control as static memories, so an SDRAM controller is often used.
For our controller, we target what is probably the simplest SDRAM available: the Micron MT48LC1M16A1 16Mb legacy SDRAM. Our test systems are a Xylo-E, Xylo-EM and Xylo-LM (Xilinx or Altera FPGAs with 16Mb to 256Mb SDRAMs).
We divided the topic in three parts. First an introduction to memories used with FPGAs. Then we show how to make a 16Mb SDRAM controller. Finally advanced DDR SDRAMs are introduced.