Close

Does this project spark your interest?

Become a member to follow this project and don't miss any updates

Arduino-Compatible FPGA Shield

Spartan 6 FPGA Shield includes SPI Configuration Flash, Breakout Headers, SRAM, programmable from Arduino or SPI Programmer

Similar projects worth following

This project was created on 01/21/2014 and last updated 2 months ago.

Description

Motivated by an interest in teaching folks how to use FPGAs and espouse the virtues of FPGA-coolness (& like many, frustrated a bit by a number of limitations of the Arduino incl. IO, peripherals, etc) I’ve endeavored to create the first (that I know of) FPGA-based Arduino shield.


This board - which I'm documenting here as I go along - includes heaps of additional IO, memory resources, etc. and is SPI programmable via SPI flash (including programming from the Arduino Due)...And is just an all-round cool way to introduce programmable device technology (beyond simple logic) to the uninitiated.

Likewise, it will have more than enough grunt for the old-pro to hack together some totally awesome, totally re-configurable systems.  

Details

Intending to keep this as compact as possible I'm looking at BGA packages for SRAM and std package for the SPI Flash.  The several that I've chosen will enable me to keep costs below $30 for the whole board (target = $25) and still have head room to do some really impressive stuff with it.  Likewise, this makes a sizeable "prototype area" available to fill with either additional connectors or PTH pads.

Programming of the SPI flash from Arduino is done via the ICSP header which carries thru to the "daughter" card.  Likewise, I've included a second chipselect (GPIO) to enable the ICSP to connect to the FPGA via SPI (were you to use an SPI slave core in the FPGA to drive FPGA functions...more on this in my next project ;)

Flash is meant to be large enough to be used by an FPGA processor in case someone wanted to use one, and also hold multiple images of the FPGA configuration if someone intends to make this harder to "brick".

Power is still undefined but relatively trivial.  Power supply will offer a few different rails and LEDs and line drivers will be used to provide some visual feedback of programming state and activity.

Git project -- https://github.com/sfgit/FPGA_Arduino_Shield.git

Components
  • 1 × XC6SLX9-2TQG144C Xilinx Spartan 6 LX9 FPGA - Device Playground
  • 1 × S25FL216K0PMFI041 Spansion 16K flash - to hold FPGA configuration
  • 1 × SN74CBTLV3257DBQR SPI Multiplexer - manages access to flash from multiple SPI sources
  • 1 × KC5032A20.0000CM0E00 Kyocera 20MHz CMOS Oscillator - FPGA clock source
  • 1 × IS61WV12816DBLL-10BLI ISSI SRAM - 128Kx16 Asynchronous

Project logs
  • Uploaded new files to Github

    2 months ago • 0 comments

    Made a few minor cosmetic tweaks, did some stuff on the PCB to try and make the next pass easier to add more IO (something that's been asked for) and really dialed in the output generators and outputs directory. Overall a nice cleanup prior to the latest round of fab. Boards are in the pipeline for mfg and will be 'in stock' very soon again! Check out the github repo. Also planning on changing the licensing to MIT so should make it much easier for folks interested in using this in their own products. Much of this can now be reused for my iCE40 design which is underway and after a 12-hour flight from SZ, I have only a little left to finish to make a second FPGA board, this time using the lattice parts. Altera to follow.

  • Uploaded first how-to video...Walkthru

    9 months ago • 0 comments

    Just uploaded my first video on actually using the board. There are a few others to follow. The video is found on Youtube:

    This describes the various interfaces, the use of the resources, the jumper settings, power supply, etc.

    I have also uploaded the first "Blinking LEDs" example for use with the Xilinx software, available on Github.

  • More FPGA Boards Back & Working!

    10 months ago • 1 comment

    Whew! Last round of mods were huge because as you come to find out quickly, anytime you add a level translator to a board - much less two & much less 10 channels each - you end up having to reroute most of the PCB layout. And as though that wasn't enough, I decided to make a bunch of other small updates and signaling fixes / improvements such that board (a) is now meaningfully different from board (b). <Shudders>

    Still, today the box of boards came back - first time populated by someone other than me - and they look and (more importantly work) awesome. The board shop this time took their sweet time but the wait was worth the cost (almost 10:1 versus US companies for the same quote).

    A few more small tests and it's away they go to the store to be sold! :)

View all 35 project logs

Build instructions
  • 1

    Step 6 - Wire up JTAG connections for JTAG programming.

  • 2

    Step 1 - Don't panic.

  • 3

    Step 3 - Build major footprints:  Costing the available board area requires building the major footprints and placing them on the PCB.  Built early footprints and placed to determine what additional space is avail.  Files in git.

See all instructions

Discussions

ben biles wrote a month ago point

hi, I was'nt clear if the level shifters can translate 3.3v and 5v from either arduino Uno and arduino Due ? I'm not sure if my project will need to use the UNO or DUE yet. how much power (ma) does the fpga draw ? or is that down to how much of the FPGA you program and what its doing? lastly, are there female headers on the borad to add another shield? in one video it looked like male headers on top? I have a USBhost shield I want to run with your FPGA shield, do you think they will work together? I'm new to fpga but hope to do some RF things, perhaps code a PLL and try to recieve radio etc.. 

Are you sure? yes | no

antti.lukats wrote a month ago point

all modern FPGAs have max IO voltage tolerance of 3.3V (without level shifters). Level shifter OTOH are major PITA. Really they are, bidirectional level shifters destroy signal quality and in worst case even oscillate!

Digital PLL can be "coded" yes but that not sufficient for real radio receiver.

Are you sure? yes | no

ben biles wrote a month ago point

ah, so is the fpga shield is arduino due compatible or not? I think DUE is 3.3v logic IO, I agree level shifters are a pain,  I just tried to use them between a a codec and arduino UNO  and it just would not work.. The logic voltage level was supposed to be 1.8v not 3.3v on the i2c and I used the correct i2c capable level translator.. Errrr frustrating... Deforming the slew rate or something probebly... I don't have an oscilloscope yet so hard to know.. Regarding fpga,  if not pll then perhaps I can do some decimation or premodulation techniques to reduce bandwidth for my digital audio 8fsk transmission.. I'm experimenting with a TI pll synthesizer / modulator chip but need to reduce bandwidth from ADC in as lowest possible latency possible.. Maybe I should be looking at DSP for this though.. Not sure yet..  Maybe fpga isn't the way to go for low latency wireless digital audio in sub 1ghz rf.. Mmm early days... 

Are you sure? yes | no

Sercan Aygün wrote a month ago point

Dear technolomaniac,
For my thesis, I have a deep interest to use Arduino compatible FPGA shield as you illustrate. I have a card UDOO which has Arduino Due itself as an extra speciality. But I wonder if this FPGA shield is fully compatible with Arduino Due or not. As I can see you use Due but maybe you should share the details. If you could help me, I would be very glad.

Best Regards.

Are you sure? yes | no

lionwang wrote a month ago point
banana pi support forum : http://www.banana-pi.org

Are you sure? yes | no

midnitesnake ☯ wrote 3 months ago point

Is Lucid (https://www.sparkfun.com/news/1837) compatible with this board?

Are you sure? yes | no

Serge.V wrote 3 months ago point

Wow, marvelous project! I believe it should be possible to program MIPSfpga into it and use it as a customized microcontroller board. http://linuxgizmos.com/imagination-to-release-open-mips-design-to-academia

Are you sure? yes | no

Mid-Ohio Area Robotics wrote 4 months ago point

This is a great project! I can see a lot of people being interested in buying something like this (us included!)

Are you sure? yes | no

technolomaniac wrote 2 months ago point

So there are boards in the pipeline as I write this!  More on the way.  Just got a bunch ordered and made a few small updates on the the design (avail in the repo).  

Are you sure? yes | no

flora.tao wrote 5 months ago point

Nice project!  This is flora from Seeedstudio , an hardware innovation platform based in China. We are very interested in your FPGA and wondering if we could feature your FPGA boards on our official website. If you are also interested in the market we strong with please get back to me : flora.tao@seeed.cc

Are you sure? yes | no

counter.culture wrote 5 months ago point

Goto his github...he has open sourced it and "freed" it through GPL.  Read signal7's comments below about breaking out all the pins before starting your production - you should amend the design a bit.

Are you sure? yes | no

technolomaniac wrote 5 months ago point

Wait!  I have a new version!  :)  I will upload to github soon but the version that is on there is now out of date.  The new version has a few things that have been modified to work much better.  It too will be open sourced!

Are you sure? yes | no

counter.culture wrote 5 months ago point

very good

Are you sure? yes | no

technolomaniac wrote 5 months ago point

Hi flora!  Happy to have your help.  You can private message me and I will share with you the details of the project.

Are you sure? yes | no

Nicolas Siret wrote 5 months ago point

Great project Technolomaniac! Will you have more boards for sell in the coming weeks/months? We have developed a new language & an IDE to make easy and quick the design and verification of hardware (www.synflow.com) and I would like to propose this board to our users. 

Are you sure? yes | no

technolomaniac wrote 2 months ago point

Boards in the pipeline now!  Sorry for the delay but there are a bunch going thru the system as we speak!

Are you sure? yes | no

Stephan Mühlstrasser wrote 7 months ago point

I found this board because I'm interested in an FPGA board that can be combined with an Arduino. I'm searching for a platform for implementing an emulator of a floppy disk controller and the floppy drives themselves for an old 6502-based BASIC computer (Ohio Scientific Challenger 1P).

I have zero experience so far with FPGAs. Would it be feasible to implement such an emulator with this FPGA board?

Are you sure? yes | no

ajcrm125 wrote 7 months ago point

Question... does the Arduino program the SPI Config Flash which in-turn, programs the FPGA? Or does the Arduino program the FPGA directly?

Thanks!

Are you sure? yes | no

technolomaniac wrote 2 months ago point

Arduino can program the SPI flash then controls the boot sequence on the FPGA to cause it to load its config from flash.  This'll make the whole thing programmable from the arduino so long as it has a bit file.

Are you sure? yes | no

midnitesnake wrote 8 months ago point

Is it possible for you to post a quick beginners tutorial on programming the device. I bought this board to practise and learn FPGA programming; so I am new in this area. I've been having a hard time working out Xilinx s/w. I found the ISE version you need is 13.6 as opposed to the later Vivaldo versions; following another online example I've generated some blink-led code. But can't progress any further - I'm now stuck on the Impact design?

I think FPGA beginners (like me) need a simple walkthrough from loading code, compiling, and programming the device. Thanks in advance.

Are you sure? yes | no

signal7 wrote 8 months ago point

So - one problem I see here is that not all of the IOs are brought out to a connector. All of bank 3 is soldered to the board, but it looks as though there are no traces. While I certainly *could* deadbug solder to those pins with some wirewrap wire, I'd really rather not fill the swear jar in a single afternoon. The problem is I need 52 IO lines and there's 24 of them that seem to go nowhere.

Is it possible to do a board with all of the connections brought out to a header? I might take a stab at changing your board, but I'm really not sure I have the capability to solder all of the parts. Any BGAs are pretty much beyond my equipment capability at the moment. Otherwise it looks perfect.

Are you sure? yes | no

Daniel Wisehart wrote 8 months ago point

Nice board. I just ordered two.

Any thoughts on what will plug into the FPGA I/O pins? (besides flying headers.) It would be nice if this Arduino prototyping board would just plug in, but that is probably asking too much I am thinking: https://www.sparkfun.com/products/7914

I guess I can take your board file and create a two-layer board similar to the prototype board I linked to. Anyone else interested in buying something a plug-in prototyping board if I had several made?

Are you sure? yes | no

technolomaniac wrote 8 months ago point

I'd be keen and if you want some help in dreaming up plug-in boards, I'm game! :) I have a few in mind for when I get some time but time is pretty tight atm. [

Are you sure? yes | no

pd20012000 wrote 8 months ago point

I just received my board , and I'm not quite sure how to interface it with either my Due or Uno. Are the header pins supposed to be pointing upward or downwards?

Are you sure? yes | no

technolomaniac wrote 8 months ago point

So this batch I chose to populate the standard headers and provide Arduino headers if you wanted them, in the box. I tend to use the board stand-alone so it was a choice I made assembling the thru hole pins, which I had done myself. If you'd like to swap them out, you should have the additional headers or I can send you a version with the Arduino headers populated.

Are you sure? yes | no

counter.culture wrote 8 months ago point
I don't understand why the pins come out the top, if this is supposed to be a shield. Every picture of this board tells a different story.
0) The picture on the store page shows no pins or sockets, just "through hole" vias...
1) The project page picture shows a socket on top, and it apparently plugged "normally" into some kind of Ardunio.
2) The board I received had pins, instead of sockets, soldered in and pointing skyward. I asked politely "what the deuce?", and received no response from the project owner.

What am I missing here? Is it rework time, or return to store time?
That xess.com XuLA2-LX25 is looking more attractive right about now.

Are you sure? yes | no

technolomaniac wrote 8 months ago point

You should have an extra set of headers included in the box if you want to use it with Arduino. The vertical headers were populated this go-round but I think I'll change that for future batches. If you want a version with the headers reversed, I can shoot you one. PM me and I'll be happy to swap them out.

Are you sure? yes | no

antti.lukats wrote 9 months ago point
Too bad Xilinx only support S6 family in their legacy tools and not with Vivado.

Are you sure? yes | no

Chris Arena wrote 9 months ago point
Some of the photos are upside down.

Are you sure? yes | no

Chris Arena wrote 10 months ago point
Great project!
I would still like to get one. Is someone selling them for you?
Thanks!

Are you sure? yes | no

technolomaniac wrote 10 months ago point
You can get them on Hackaday Store. New rev is 5V0 tolerant and has std barrel for power connector. http://store.hackaday.com/products/arduino-compatible-fpga-shield

Are you sure? yes | no

mac_ha wrote 10 months ago point
Great, how could I order one, is it still within your targeted $30 price?!

Are you sure? yes | no

technolomaniac wrote 10 months ago point

Are you sure? yes | no

Thomas wrote 10 months ago point
Great Project, although I would have prefered some Altera FPGA, I dont like the Xilinx Software :/

Anyway, thumbs up!

Are you sure? yes | no

technolomaniac wrote 10 months ago point
Thanks mate! I'll do a cyclone version very soon. :)

Are you sure? yes | no

Similar projects