Close

Why not an FPGA?

A project log for breadWare

A jumperless breadboard

Kevin Santo CappuccioKevin Santo Cappuccio 06/22/2021 at 02:300 Comments

I've received this question a lot, so instead of answering it in random comment threads I'll just do it here. I'm referring to research I did a year ago and didn't bother to look anything up for this to get any hard numbers. Take the things I say here with a grain of salt, because to be honest I'm not particularly learned in the ways of the FPGA. But I did learn enough to know that I don't need to learn any more about them for this project (one day I will have a project that actually needs one and isn't just crammed in for no reason, and I'm looking forward to it)

I considered something like this early on, but it turns out FPGAs won't work well for this particular use case. But on a super high level, breadWare is sort of an FPAA (Field Programmable Analog Array) built out of a bunch of discrete chips to make it work the way I had originally imagined they would. 

Here are some fun facts about FPGAs (that weren't so fun when I learned them because it meant the design was going to be waayy more complicated):

-Although we think of them as routing signals through a bunch of logic gates, how they actually work is by sending the signals through LookUp Tables, so it basically simulates a logic gate by just reading places in memory that you've programmed with a bitstream. The LUTs are connected by a crossbar switch internally, but they know exactly how it's going to be used so they can simplify out a lot of the things that would make it "general-purpose." From what I understand, the input signals always go through a large set of LUTs (which is fine in a purely digital world, because they can just map 1 to 1 and 0 to 0 ) before they can go through the crossbar switch. So it's more like a Star Trek teleporter where it just scans and reassembles you on the other side.

-Nowadays it's really rare to find FPGAs with inputs that are even 5V tolerant, most are only like 2.8V tolerant, so you'd either need to be super careful with the connections or have 60 separate level shifters.

-You need analog signals to make even the simplest of digital circuits work, for example a 555 timer needs to read the voltage on a capacitor to generate a clock signal.

-I got really excited when I heard about FPAAs, but turns out they're basically unobtanium for less than $100 per chip, and they're usually only a few analog blocks thrown into a regular FPGA. Apparently JPL made a chip in-house for spacecraft, but I can't imagine a regular person could buy one.

So now I have a microcontroller and a digital potentiometer do those extra things, and the ATmega4809 I'm using does have a built-in hardware logic gate they call a "Configurable Custom Logic" cell, as well as a ton of other fun things to mess around with.

But yeah, an FPGA version could probably do some awesome things that this one can't.

Discussions