Close
0%
0%

Spartan Mini

A flexible, simple, yet powerful FPGA development board.

Similar projects worth following
As is the case with many things, the Spartan Mini was born out of a need I had when developing an FPGA project. I looked around at the development boards in the market, but I didn't see anything that met all of my requirements, so I decided to design one myself. There were many requirements for this board, which I will go into more detail about in the details section below, but my general requirements were as follows. I wanted a board I could hand solder fairly easily. This meant no bga. I wanted a board that was easy to program, containing both a JTAG port as well as USB. I wanted a board I could power with a wall wart and a barrel jack. The power needed to be switched. There needed to be plenty of GPIO, brought out to connectors that were preferably of a standardized format. I wanted some onboard RAM, preferrably SRAM or PSRAM for ease of use. Other than that I just wanted access to the bare metal of the FPGA, without a lot of fluff.

Continuing from the requirements stated in the description, here is a more in depth look at those requirements and how the Spartan Mini meets them:

1. A board that could be hand soldered fairly easily.

It seems like 90% or more of the FPGA's out there are in a BGA package. This made things difficult when considering this spec. I finally settled on the Spartan 6 FPGA because it came in a 144 pin TQFP package. The Spartan 6 is a well known and well supported FPGA among hackers and makers, making it a perfect candidate for the job.

2. A board that could be programmed easily with either JTAG or USB.

For the USB portion of this requirement, I decide to use the FT2232H chip by FTDI. This chip gave me both a USB to JTAG channel, as well as a USB to UART bridge that I could use later on to facilitate transferring data to the FPGA over the USB connection. I also wanted to include a full size 14 pin JTAG connector on board, to facilitate the use of a Xilinx Platform Cable USB programmer. This took a little more board space, but provides an easier interface to connect to the Xilinx programmer.

3. A board that could be powered with a wall wart and barrel jack.

This requirement was fairly simple to implement. The voltage requirements for the board fall between 3.7-6 volts dc. In addition to the barrel jack, the board provides jumpers to optionally be powered over USB, or a JST-PH connector and 3.7 volt lithium battery, as well as a voltage input pin.

4. The power needed to have a hard on/off switch.

Again, this requirement was not hard to implement. I just needed to select an adequate switch, capable of handling the current demands of the board.

5. No IO pin of the FPGA should be wasted. All pins should be brought out to standardized connectors on the edges of the board.

Many FPGA boards today seem like they waste a lot of IO on providing connectors on board that likely aren't needed by every project such as SD cards, VGA, HDMI, etc. Instead of using up the IO on peripherals that may be unneeded I opted to instead route all GPIO lines out to PMOD connectors. These connectors seem to be picking up in popularity and there are already tons of sensors/peripherals to choose from in the marketplace that can be plugged into the board if/when they're needed. In addition to the GPIO, I also wired GPIO pins to 8 user programmable LED's, 2 tactile buttons, and 1 slide switch. The addition of the 8 LED's aids greatly in debugging, but it also allows for precisely one byte of data to be represented in binary.

6. Access to onboard SRAM or PSRAM

This requirement is simply for the ease of use of SRAM over DRAM. The downside to SRAM is of course the price, which is why I settled on PSRAM instead. Essentially PSRAM provides an interface to the outside world that looks like SRAM, while internally it is made up of DRAM. As such, it is much cheaper than SRAM, but way less work to interface with than DRAM. This particular board provides 8Mb of PSRAM, which is adequate for my needs.

    AN_129_FTDI_Hi_Speed_USB_To_JTAG_Example.pdf

    App note to setup FT2232H to use JTAG.

    Adobe Portable Document Format - 486.52 kB - 10/06/2017 at 04:50

    Preview

    AN_124_User_Guide_For_FT_PROG.pdf

    FT Prog is a program created by FTDI to aid in setting up the FT2232H chip.

    Adobe Portable Document Format - 1.07 MB - 10/06/2017 at 04:42

    Preview

    Digilent-Pmod_ Interface_Specification.pdf

    PMOD Interface Specifications from Digilent. This was used when placing the PMOD connectors around the board.

    Adobe Portable Document Format - 131.03 kB - 05/01/2017 at 01:21

    Preview

    ug381- spartan 6 select io resources.pdf

    Adobe Portable Document Format - 3.11 MB - 04/25/2017 at 12:52

    Preview

    SpartanMiniSchematic.pdf

    Adobe Portable Document Format - 332.03 kB - 04/25/2017 at 12:51

    Preview

    View all 11 files

    • Spartan Mini handheld NES!

      Jon Thomasson03/06/2018 at 18:06 0 comments

      I recently finished prototyping a handheld NES console that utilizes the Spartan Mini board. I used the perfboard shield bolted to a larger perfboard to wire everything up. If you're interested in following this new project, there's a new project page here

    • More NES fun.

      Jon Thomasson11/11/2017 at 13:40 0 comments

      I've slowly built up the NES prototype. I've since added a TFT screen, audio out via a PAM8302A Adafruit amplifier board, and an NES controller on a breadboard.

    • NES success!

      Jon Thomasson10/25/2017 at 15:12 0 comments

      Doing some more testing on the board to make sure all systems are a go. This meant porting Brian Bennett's NES core over to the Spartan Mini :). 

    • proto board shield

      Jon Thomasson10/13/2017 at 00:18 0 comments

      I had a chance to put together a little proto shield I created for the Spartan Mini. It's fairly versatile in that it can take both soldered in through hole components, as well as a breadboard for rapid prototyping. 

    • All wired up!

      Jon Thomasson10/11/2017 at 02:24 0 comments

      I received my pcbs earlier last week and had a chance to solder everything together today and do an initial test. Looks like everything works so far! I hope to add more logs about the build and test procedures. But for now, here's a pic of the finished board: 

    • Protoboard Shield

      Jon Thomasson05/26/2017 at 14:30 0 comments

      Using the newly created templates, I made a simple proto/perfboard shield for the Spartan Mini. It provides a 34 x 17 array of .1" separated pads to prototype circuits on. Next I'm waiting for the seed funding from the first round of the Hackaday Prize to come in to start ordering the boards and BOM for the Spartan Mini.

    • new files

      Jon Thomasson04/25/2017 at 12:57 0 comments

      I uploaded a new schematic file as well as several other Spartan 6 related documents. These resources proved to be a great aid in designing the Spartan Mini board. FPGA's in general often have many documents describing configuration and requirements. These are just a few of the ones I found helpful for the Spartan 6. Enjoy!

    • seed funding

      Jon Thomasson04/24/2017 at 23:20 0 comments

      Hello Hackers,

      If you like where this project is going, please help me gain some funding to purchase boards and components by liking this project. I get $1 for every like, and that money will go directly into purchasing what I need in order to create a finished board.

      Thank you!

      Jon Thomasson

    • added a second expansion template

      Jon Thomasson04/24/2017 at 23:14 0 comments

      I added a second expansion template, this one provides access to the power pins as well as the gpio. This would be used when the daughter board was providing power to the fpga board by some means. The template can be found here and can be installed in the same way as the previous template.

      The finished expansion board template will look like:

    • Added Kicad expansion template

      Jon Thomasson04/24/2017 at 02:04 0 comments

      To facilitate the easy creation of shields, I created a Kicad template project with the board outline and gpio connectors in place. The project can be found here. To use it all you need to do is copy the spartanmini-shield folder into the template directory of your Kicad install. After that you can create a new template project in Kicad by going to File > New Project > New Project from Template. In the dialog box that appears select the folder that you want to contain the project and click the Select Folder button. Next you should see a screen similar to this:

      Select the Spartan Mini icon from the list of templates. You should see a brief description of the board as well as an image of what the board looks like. Click OK. The template file will then be copied over to the containing folder that you specified. From there you can just open up the project and modify it to suit your needs. Here is what the blank board will look like:

    View all 11 project logs

    Enjoy this project?

    Share

    Discussions

    Abdullah Alamoodi wrote 09/29/2022 at 14:22 point

    Nice work Jon, do you have readings for the power consumption? (particularly FPGA + PSRAM)

      Are you sure? yes | no

    Daniel Sandoval wrote 06/16/2017 at 18:12 point

    The VCORE pins in FT2232HL are not connected to voltage or I'm wrong?

    greetings!

      Are you sure? yes | no

    Jon Thomasson wrote 06/16/2017 at 18:31 point

    VCORE should be hooked up to VREGOUT pin 49 of the FT2232. I rechecked my nets just in case, but it looks like they're all wired correctly hopefully. 

      Are you sure? yes | no

    Daniel Sandoval wrote 06/16/2017 at 18:40 point

    sorry my bad
    thanks!

      Are you sure? yes | no

    Antti Lukats wrote 05/08/2017 at 06:38 point

    why you use a FPGA that was abononed in 2013 ? The tool support was declared dead in 2013, all new projects should use 7 series.

      Are you sure? yes | no

    davedarko wrote 05/08/2017 at 07:13 point

    Seems like a convenience legacy product, a mod of existing hardware that is still used for something, although discontinued (as we all know happens, like Windows XP support for companies)

      Are you sure? yes | no

    K.C. Lee wrote 05/08/2017 at 15:42 point

    As stated in details:

    >1. A board that could be hand soldered fairly easily.

    >It seems like 90% or more of the FPGA's out there are in a BGA package. This made things difficult when considering this spec.

    BGA raises the cost for individuals that want to make their own boards - tighter PCB tolerances for breakout, more layers, stencils/solder paste/hot air.  i.e. mucho dineros and requires a bit more equipment.  X-ray inspection?

      Are you sure? yes | no

    Antti Lukats wrote 05/09/2017 at 06:22 point

    wrong, FPGA is much easier to solder than TQFP at home in kitchen oven even. NO xray needed just flux and heat.

      Are you sure? yes | no

    K.C. Lee wrote 05/09/2017 at 09:22 point

    Not like I haven't done 0.35mm WSCSB on HASL that way and my share of fine pitch parts here.  :P  A lot of shaking can happen before you slide the grill back and close the door on a $20 toaster oven.  Flux doesn't stick as well as solder paste.

      Are you sure? yes | no

    Jon Thomasson wrote 05/08/2017 at 22:16 point

    Thanks for your comment. In this iteration I'm going for something in a non BGA package so I can hand solder it easily. This being my first FPGA development board design, I wanted to go with an FPGA that wouldn't break the bank and one that I was already familiar with. But for future projects I'll definitely consider using a 7 series. BTW, I really like your FPGA projects! Those are very impressive. I may give the Soft Propeller a try someday.

      Are you sure? yes | no

    Roeland Kindt wrote 05/17/2017 at 12:57 point

    The price point of the 7 series is a lot higher... XC7Z010 is like 57 usd?

      Are you sure? yes | no

    Antti Lukats wrote 05/17/2017 at 14:58 point

    7010 is Zynq, prices start below 15USD ;) Artix prices can go lower even, Spartan-7 for sure can go lower. So this is no argument. Spartan-6 is dead many years already, not supported by the Xilinx tools since 2013. Only by non-maintained and abondoned legacy ISE..

      Are you sure? yes | no

    Roeland Kindt wrote 04/30/2017 at 17:38 point

      Are you sure? yes | no

    Jon Thomasson wrote 04/30/2017 at 19:38 point

    Yes, I discovered that project actually over the weekend. I was contemplating renaming my project since the name is so close. It looks like a nice board!

      Are you sure? yes | no

    Roeland Kindt wrote 04/30/2017 at 22:40 point

    Seeing they never supplied all of their wing boards, and havent supported their custom IDE for a long time.. i would try and reach out to their users.. 

      Are you sure? yes | no

    Mohsen Abbasi wrote 04/26/2017 at 15:15 point

    I am thinking about making a board too, but you will need a software for the USB programming, right?
    How will you do that?

      Are you sure? yes | no

    Jon Thomasson wrote 04/27/2017 at 03:16 point

    That's a good question. There's a couple ready made command line tools that support the ft2232 ftdi and Spartan 6 fpga. There may be more, but these are the ones I know of: xc3sprog, and fpgaprog. I haven't been able to test them out yet, but they should fit the bill for what I need. Once I get a prototype board built I'm planning on writing up a little log post about how to program it over USB.

      Are you sure? yes | no

    Mohsen Abbasi wrote 04/27/2017 at 11:46 point

    I will check that. The point is, I want to make a board with Microsemi FPGA's, because they are really better and cheaper than Xilinxs, and also the Software is much better and has no limitation line Xilinxs, where free users have limitation in the software, which reduce the posibilities. I was working in a Space Tech. company and they decided to stop working with Xilinx completely. As I did that and worked with Microsemi, I could understand why. Oh they are sooo goood.

    And here is now my problem. I must check if these tools can also support these FPGA's

      Are you sure? yes | no

    Similar Projects

    Does this project spark your interest?

    Become a member to follow this project and never miss any updates