Saturn - Another Attempt To Make Open Source Spartan 6 FPGA Board with DDR SDRAM


Some readers may remember, we attempted to design a Spartan 6 based FPGA development board with DDR SDRAM almost a year ago. The board worked to the most part except that some obvious mistakes made it impossible to get the DDR up running. We did another attempt this year to design a new board with similar Spartan 6 FPGA and LPDDR. Of course adhering to the same primary principles, 100% open source and 100% KiCad design. I can tell you with great happiness that we have succeeded to make the design working and make it available for sale at our online store. This design is completely open source and designed using KiCad and other open source tools. We have used the following open source tools for designing this board. Use the links at the end of this post to download all source files.

  • KiCad
  • wxWidgets
  • wxDevC++
  • LibreOffice

This board features the following major components.

  1. Xilinx Spartan 6 LX series FPGA, CSG324 package
  2. 512Mbit 166MHz LPDDR attached to Bank 3 of FPGA
  3. FTDI FT2232H USB two channel USB device. One channel is dedicated for flash programming and the other channel is connected to FPGA IOs to facilitate data transfer to/from FPGA.
  4. 16Mbit SPI flash memory for non-volatile configuration storage
  5. 100 MHz stable CMOS oscillator
  6. Necessary voltage regulators for single rail operation
  7. Up to 158 IOs available for user defined purpose and are accessible through easy to use expansion connectors

Schematics and layout are designed completely using KiCad. This is a six layer board with no blind or buried vias. The stack up goes as below

  1. TOP
  2. GROUND
  3. SIGNAL1
  4. SIGNAL2
  5. POWER
  6. BOTTOM

The Data, Address and Control signal groups for DDR are length matched. 26 FPGA differential IO pairs are length matched as well. Length matching is done using freerouting tool.

The flash configuration GUI is developed using wxDevC++. Communication with flash is achieved through on board FTDI FT2232H. One of the channels is configured to use MPSSE mode and communicate with the flash over SPI bus. Complete source code of the configuration tool is available for download from numato.cc SVN repository.

Resources

Schematics and Board Files

Configuration Tool Sources

Documentation

Want to learn more about KiCad? Visit our Youtube channel

Assembled and tested boards are avilable for purchase at our webstore

Read about our previous attempt

DDR Memory with Spartan 6 FPGA for beginners

Like what we do? like us on Facebook!

Great Work!

Hi and compliments for your great work you have done with kicad...
I've seen you have used microstrip tracks in the pcb ... have you used some tool to calculate it and integrate in the kicad board?
thank you
Maurice

Congratulations

on getting this done. Doing such a complex board for the first time requires some runs, because there are always some hidden mistakes (had this myself recently - just swapped two wires :(

I also like that you did stick with KiCAD for that project, I guess the videos you did were also an outcome of this project? (I really like them, they are quite helpful)

Re:Congratulations

Thanks Hli. We did stick to KiCad from beginning to end. We were able to make it work with zero mistakes this time. To achieve production quality with first batch of boards with was not easy. Our engineers painstakingly reviewed each and every net and track multiple times to make sure that we won't end up with a bunch of boards that can not be used for production. The boards themselves are expensive, ~500$ per batch of 10 prototypes. So we went ahead with fabricating production quantity. It is fair to say was a gamble, but paid off well smiley.