Let me just out and say it: I love this little board. Will you? Here’s the key question: Are you excited to learn a whole new skill, one that will open up entire new avenues in how you build circuits, but that will also demand that you start fresh learning an entirely new programming language with no relationship to the Kernighan-derived languages you’ve used for every programming project since forever? If you’ve got the time and the excitement, this little board is a fantastic gateway into the world of FPGAs.
FPGA’s are chips that have all the building blocks that make other logic chips. But each time the chip powers up, these “logic blocks” are disconnected. The first thing the chip does on waking is to read how it should be wired together internally. So an FPGA can become a microcontroller, or a graphics processor, or a chip for recording what your motor encoders say about where your robot has gone, or any or all of these. It depends on the instructions you’ve left for how the chip should build itself on wake-up, and how many logic blocks your FPGA has available to build with. FPGAs are one reason we no longer see banks of logic chips on boards; one FPGA can replace many special-purpose chips. Just tell the FPGA what you need it to be.
To do that, you’ll need to learn a whole new programming language, built on a whole different way of thinking. There are a few choices, but most require you to register with one of the four companies that make FPGAs, wait for your registration to be approved, then download that company’s software package.
And this is where the TinyFPGA really starts to shine: Luke Valenty, its creator, has put together a tutorial to get you started using all open source tools. And they’re pretty darn good. I have less tolerance than many for working through the inevitable wrinkles that come with putting together a toolchain from a gaggle of different open source projects. Having now gone through the steps for getting a computer set up to program the TinyFPGA on different machines with different operating systems, I’ve found the process to be comparatively painless. Not yet so smooth as setting up the Arduino programming environment, but leagues better than I’ve come to expect for hardware this new to the hobby community.
After a smidge of time setting up that environment, you’ll clone the first project, one that blinks morse code on the board’s built-in LED, and set it running. Looking through the code you’ll get your first introduction into the alien world of coding in Verilog, a language for putting together logic modules, and setting each module up to do its work at the same time as the others, not one instruction then the next.
For most makers, this will be a wholly new undertaking. You’ll want to set aside concentrated time and attention for a first handful of projects to start using FPGAs in your designs. This TinyFPGA BX is a fantastic, bite-sized gateway into that world.