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.
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.
The Mojo V3
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.
Papilio Pro LX9
Both of these boards have a great deal of supporting information and tutorials that make them a perfect choice 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.
Now, I don’t want you to think that this post is meant to be an advertisement for these two boards. They’re great devices, but this post is meant to shine light on a massive gap in the open source community. To this day 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?