Based upon the type of projects you do what FPGA would you combine with your Ard


We are currently looking to develop a board which merges an Arduino Leonardo with an FPGA development board based upon a Spartan-6 device from Xilinx. The footprint for the FPGA accommodates four possible device sizes - 9k, 16k, 25k and 45k logic cells - all of which support the additional 100 I/Os we are looking to provide.

I was wondering, based upon the type of projects you are using the Arduino for, which size of device you would think would be the best for your applications?

I look forward to hearing your thoughts.


I can't answer exactly but recently I designed a board with a Lattice MachX02-2000, that's 2000 LUTs and I figured that was enough.

With that chip you can do a UART for example with 600 LUTs I think.

But I have to say I'm not that up to speed with FPGAs these days, and the MachX02-2000 has the same pinout as the 7000 so I had an out if I ran out of logic.


It depends what you expect the user to do with the FPGA. If it is just to learn about them, a small number of LUTs would be enough, and the cost would be proportionate to the Arduino. However, for a full-blown FPGA implementation the cost could be too high for individuals to accept. Also consider the cost of any required software, and any programming devices, cables etc. which are needed.

You might be interested in my Arduino shield using a MACHXO2-1200. It's now on and can be found here or look for Trifdev. It's self-contained and needs only a simple USB cable to program it. The software is a free download from Lattice, and I will be providing tutorials to help the beginner. To give new users an easy start, the shield comes pre-loaded with an I/O expander, which can be modified to include other functions which the user may need.

I've seen FPGAs mentioned, and am still struggling to understand what they are. Reading your kickstarter page to try and get a better understanding, Roy.

I'm curious: how fast is the process of an Arduino requesting info and then receiving it from the FPGA?
What are the advantages in using an FPGA vs another Arduino chip/board flashed with the same functionality as the FPGA?

how fast is the process of an Arduino requesting info and then receiving it from the FPGA?

That largely depends on how you do it.

The X02 series has built-in SPI and I2C hardware, I don't know what speed they are rated at but in the case of the SPI port I think "bloody fast" is a reasonable guess.

But if you want really bloody fast then in the case of the SAM (on the Due) you could memory-map the X02 and talk to it at external memory speeds which is probably about 20-30M bytes per second, twice that if you use 16-bit data.

What you do with that data is another question, VGA interface with dual-ported screen RAM anyone?

Apart from all that you can add pretty much any hardware you like for example add a UART and talk to the FPGA using serial. Or maybe just a few 74xx595 shift registers and use shiftOut() to send data.

What are the advantages in using an FPGA vs another Arduino chip/board flashed with the same functionality as the FPGA?

The FPGA is hardware, therefore is an order of magnitude faster than a second processor.

And if all that's not enough you can actually put an 8 or 32-bit processor inside the FPGA as well as other hardware.

These XO2 chips are very interesting, as indeed are all the FPGA/CPLD devices but I like the look of the XO2s.

I think all that's right, please correct me if not Roy.

EDIT: Roy, I backed your project the other day, hopefully it will get over the line.


So you could set up a bus (erk moving into unchartered territory, captain) that is 16 bits wide, to "talk" to the FPGA? The Due is an ARM thingamajig isn't it?

Yes and yes.

You could treat the FPGA as "memory", either a set of registers or I think you could directly access the internal RAM of the chip.

The Due uses a SAM3X8E, that's an ARM3 processor. The processor on the Arduino Mega could also be used to access an FPGA using external memory but it wouldn't be as fast.


I read an oldish book many years ago that described the process and architecture of parallel memory. I never saw it commercialised, and I don't have any need for such capability at the present time, but intuition tells me you could implement it with an FPGA.

Really appreciate the time you've taken to help me understand. Thanks.

to answer the question above:

what is an FPGA.

Simply, its a lot of registers and gates in a package, with an interconnection matrix.
you connect up the gates and registers, and IO pins, to perform the 'function' you want.

which can be just about anything.

bigger devices have hard placed macros like DSP blocks, ram areas, high speed serial IO, Ethernet MAC's.

u program the fpga in a few different ways, normally in a high level language like Verilog or ( the oproper language ) VHDL. yes I'm biased.....

two big companies Alter and the inventor of the FPGA Xilinx.
both have free tools available to you.

You would very quickly get to the point that the Processor is the peripheral of the FPGA,

As I have not programmed extensively in assembler, and the project where I used it occurred a couple of decades ago, the words "registers" and "gates" appear as blank boxes in the mental imagery being formed as I read your words.

DSP blocks further exacerbate the loss of clarity in the image.

They certainly sound interesting and useful, however. I'll keep an eye out for examples of their use that are practical, understandable and provide rationale for their use.

Just curious what the difference in the specs is between

2112 LUTS, 279 I/O, 3.3V, -6 SPEED, IND, HALOGEN-FREE / "GREEN"


2112 LUTS, 80 I/O, 1.2V, -1 SPEED, COM, HALOGEN-FREE / "GREEN"

Specifically: what's -6 speed vs -1 speed. Clearly one is faster than the other, but what does it mean?
And COM vs IND?

Does 484-ball fpBGA (23x23 mm) mean there are 484 contact points to be soldered to a breadboard?

Does 484-ball fpBGA (23x23 mm) mean there are 484 contact points to be soldered to a breadboard?

No, it means that it's impossible to use without a serious PCB :slight_smile: You would need about 6 layers to get all those pins to the outside world.

The largest user-friendly package with these chips is a TQFP 144, but you still can't breadboard that directly, you'd need a breakout board (but they are plentiful and cheap)

I can't remember the speed grades off hand, and have no idea what COM and IND means, I'll look them up.


I would have looked them up myself, I was on the website, but there were no obvious links that said "What we mean" or similar.

No I think it's a matter of trawling through the data sheet.


Of course, IND = Industrial, COM = commercial, that refers to the temp range the chip is rated for

EDIT: They have a lot of speed grades and they mean a lot of things, but basically -1 is 104MHz clock speed and -6 is 388MHz. Other grades in between of course.


100 MHz sounds kinda quick? Thank you for the info.

There's a thread (Smallest arduino, 24 PWM pins + IIC - Project Guidance - Arduino Forum) where someone wants the smallest Atmel with 24PWM pins. Apparently there's no such beast. So I did a search on FPGA PWM, and found this video. The video is cool because it explains PWM really well, gives a nice visual explanation for sound and A->D conversion thereof (I am so visually oriented) and also shows you the FPGA code, which essentially made my brain explode. The guy explaining it does a very good job.


as said above , com and ind is the temprature range over which the chip is garunteed to meets its data sheet.

FPGA's dont have a MHz speed as such.
basicaly the higher the - number, the lower the internal propagation delays , qed the faster it Can go, depending how you program it.

And I'm afraid the registers and such like I refer to above are hardware registers,
the FPGA is full of single bit registers and multi inpout gatest that can be configured to do just about anything that you could want a chip to do.

Big FPGA's as highlighted above, can have thousands of pins,
the current monsters I'm using have 1923 pins on them, and cost USD 20 K each.

but FPGA's started as small 16 pin chips, and you can still get 22 pin FPGA's. though they are called CPLD's for historic reasons.

this might be of interest to some one,,400,1028&Prod=ZEDBOARD

an FPGA with two ARM Cortex A9 on chip, and 'full' development tools.