We all know the significance of FPGAs in the industrial realm. They allow for the rapid development, testing, prototyping, and deploying of digital circuits and systems. They are the devices that make digital design happen. That being said, it's important to note that they can also be complicated, intimidating, confusing, and frustrating to a beginner.
So why on earth would an amateur electronics hobbyist ever decide to implement such a formidable piece of hardware into a design? Or left alone, attempt to build a new processor core or migrate an existing controller core when one could simply buy the actual hardware for a few dollars? It might seem ludicrous (and a poor design decision) to spend so much time fighting with programmable logic when one could have an equally suitable, cheap microcontroller with just a few clicks on a Website ordering page.
Despite all of these downsides, however, FPGAs are becoming more and more prevalent in the DIY world. There are two reasons for this. The first reason is somewhat obvious: amateur designers like to operate within the development environment that is comfortable to them, but sometimes the hardware compatible with that development environment isn't powerful enough to get the job done.
In my last post, SoundPuddle: Using and FPGA to Achieve DSP in the Arduino Domain, I described such a project. The designers wanted to release their project using Arduino-compatible code but needed ten SPI buses and the bandwidth to accomplish some sophisticated digital signal processing (DSP). Their solution was to use an FPGA.
In fact, this sort of FPGA-based project is becoming increasingly common. FPGAs can be used to drive displays or to control hundreds or thousands of LEDs with soft processors when an off-the-shelf microcontroller simply won't cut it.
A classic example is where Mike Field has Conway's Game of Life running in full high-definition (HD) with a 60Hz update on a Spartan 6 FPGA on his Papilio Plus FPGA Development board, as shown in the following video.
The bottom line is that FPGAs are becoming more common in the hobbyist world based on the merits of customization and speed. Having said this, there's a more exciting (and important) reason that FPGAs are becoming increasingly utilized in DIY projects -- this is because DIY projects are usually open-source. With an increase in the number of open-source projects comes an increase in the size of the community supporting those projects. In the case of FPGAs, this allows for a huge increase in the speed of every aspect of the design-prototype-test cycle associated with programmable logic development.
Thanks for the kind words. While the circuit design is maybe more related to the Avnet LX9 Microboard, the spirit of the board is definitely Papilio. This board would not exist if it wasn't for all your hard work on Papilio One.
Regarding inexpensive FPGA board with HDMI, today with all the available tools for DIY electronics anyone can make his own FPGA board taylored to his needs. Here is a DIY FPGA board with HDMI output:
Same form factor as Papillio One, Spartan6 in 324 BGA package (LX9 - LX45), FTDI 2232 high-speed USB wired for JTAG and serial, async fifo or sync fifo mode (>20 mbytes/sec transfer rate), 64 Mbytes LPDDR memory @ 200 MHz (on the bottom of the board), full HDMI output interface (incl I2C level translators), audio out, uSD card with SPI or native 4-bit SDIO interface, full-speed USB host with phy, quad-i/o spi flash memory.
Hi Hamster (interesting nomb-de-plume), many thanks for sharing your experience and incite on the DIY course front, some things we will take into consideration at FPGA Towers when putting together a suitable course introducing beginners to the wonderful world of programmable logic.
Once we are ready we will post something on our website, it will probably need a new page / section to focus on and service the DIY audience.
Earthquakes are not causing us problems at present over here in blighty, whereas the torrential rain-storms are something else.....
Jack - This is very impressive. We need this capability in our telepresence robot. I'm doubly excited to see it done with an FPGA. I've seen similar functionality programmed on a PC or other larger system, but this fits with what we're trying to do with the robot and offloads a lot of load from the MCU we might also have.
Using a Papilio FPGA Development Board, the team built an AVR8-based soft-controller, running on the Papilio, that could handle the kind of data processing and buffering required for the project, while still being able to write code in the Arduino domain.
When learning any hardware for the first time, one always runs into peculiarities that are so foreign and frustrating that they discourage the learner (especially the self-taught learner) from progressing further.