FPGAs are ubiquitous in "traditional" engineering, but still have only a small stake in DIY culture. Here are a couple of projects that are changing that.
Like most engineers, I was first introduced to FPGAs (Field-Programmable Gate Arrays) in college. By that time I was already experienced with programming, logic and circuit design, but even with those subjects under my belt, I found FPGAs wildly confusing. For a long time after taking that FPGA course, I was convinced that I could have developed a better course than my professor, and blamed most of my initial confusion on that. I felt that way right up until I tried to do exactly what my professor did: teach FPGAs.
On the surface, it seems like someone with lots of microcontroller experience would have no problem migrating to the world of programmable logic, but that is simply not the case. Even the most experienced programmer and developer will have problems understanding the concept behind things like "non-procedural programming." Just the concept of a circuit being "written" in a language like VHDL rather than built is enough to confuse the average DIYer.
This post was written in 2013 and developing with FPGAs has come a long way since then. For those looking to get introduced to programmable logic with FPGAs we recommend trying out the Alchitry Au. To make getting started easier, the Alchitry Au board has full Lucid support, a built in library of useful components to use in your project, a A Getting Started Guide and a debugger! See the bottom of this post for SparkFun's FPGA product offerings.
As an engineer at SparkFun, it is my job to provide the "shortcuts" that a hobbyist or student might need to accomplish their goals in the electronic realm. So awhile ago, I set about trying to write a tutorial that would provide the base information and tools needed to get someone started using FPGAs. After ten pages of writing, I realized that teaching the concepts needed to understand and use an FPGA is a much bigger problem than I anticipated. In fact, it's such a large and complex problem that, after a couple of years, I still haven't found a complete way to introduce the uninitiated to the world of FPGAs.
Luckily the DIY world has lots of very talented people working on the very same problem. In particular, Jack Gassett, the creator of the Papilio, and Justin Rajewski, creator of the Mojo have done the some great work creating boards and material to ease the transition into the world of FPGAs. These companies have a great deal of supporting information and tutorials that make them a perfect choiLce if one has a bit of electronics experience and wants to start working with FPGAs. The Papilio has tutorials at the Papilio site, and the Mojo has tutorials at the Embedded Micro site.
This post is meant to shine light on a massive gap in the open source community. To this day (2013 at the time of this post) FPGAs are still very, very, difficult to learn and teach. There are people who want to learn logic and FPGAs that are turned off of the subject because the barrier to entry is still so high. It's the open source community's responsibility to lower that barrier to entry, but so far, it's still high enough to scare away even seasoned electronics enthusiasts.
So what's to be done? Personally, I don't really have a good answer. People like Jack Gassett and Justin Rajewski have bravely taken up the cause of bringing FPGAs to the masses, but there is still much to be done. It will still be a while (or never) until FPGAs are as friendly as, say, the Arduino, but with enough talented geeks attacking the problem, we can at least make programmable logic less scary.
So what do you think the next step is? What would make FPGAs easier to learn and use? If you're already a developer, what made your learning experience easier?
We've got you covered!