And now, for something completely different. Lest you think my interest in electronics begins and ends with blinkenlights, I’d like to introduce you to Elbert.
The Elbert V2 from Numato is an entry-level FPGA board. The best way to explain it for someone new to the game is that while you tell a CPU what to do, you tell an FPGA what to be. The FPGA is basically a blank slate of basic logic elements which can be wired together to create almost anything. Video cards, CPUs, digital signal processors, you name it. Your imagination — and the size of the FPGA you can afford — are the only limits.
I have been interested in FPGAs for quite some time, but until recently, the barrier to entry has been pretty high, and there hasn’t been much information available for the hobbyist. Several enterprising makers are committed to bringing FPGAs to the masses with projects like the Papilio and the Mojo which sell for around $75 and provide a lot of hobbyist-friendly projects and tutorials.
Unfortunately, neither of the above boards includes any peripherals beyond some basic buttons and LEDs. To add peripherals, you must buy an external add-on board that plugs into the FPGA board’s headers. Generally, these peripheral boards cost $40 or more, depending on the peripherals. This adds quite a bit to the price of entry, and was a little more than I wanted to pay for something I was still unsure if I would get into.
When I found the Elbert V2 FPGA board from Numato Lab for only $30, it seemed like a safe jumping off point. The board includes a number of built-in peripherals and connectors, including dip switches, push buttons, seven segment displays, VGA and audio output, and an SD card slot. The XC3S50A FPGA in the Elbert is tiny; probably one of the most basic chips you can buy. However, I would argue that’s a not a bad thing because you need to learn the basics before you take off on any really ambitious projects, and having a limited platform forces you to do that.
The low price plus built-in peripherals make Numato’s products an excellent value, and I have had a great experience so far with their tech support.
Once I got my Elbert, I started looking around for resources on the web that would teach me how to use it. I have documented the best resources I found on my wiki.
Once I had studied the resources I found, I started writing Verilog to operate the various peripherals. I started simply with buttons and LEDs, and from there progressed to the 7-segment display. I wrote some Verilog that reads the 8 dip switches on the Elbert, converts the value to decimal, and outputs the result on the 7 segment display. This was a considerably more complicated since it required implementing clocked logic.
Next I tackled the VGA output, and wrote some Verilog that displays munching squares and color bars. Although generating video sounds complicated, it’s really not much more difficult than the 7-segment display. I also wrote some simple logic to generate a tone on the audio output.
By far the most complicated peripheral on the Elbert is the SD card, which requires implementing an SPI interface, and then implementing a CPU so that you can write code to send the SD card commands and access a filesystem. Elbert has limited resources both in terms of memory and logic gates, which makes using doing this challenging.
Some say the best way to learn is to make mistakes, and I made a big one, by which I managed completely brick my Elbert by accidentally outputting a signal on the FPGA’s clock input. This interfered with the microcontroller that is used to program the FPGA and rendered the board effectively useless. Luckily I figured out a way to disable the FPGA long enough to allow the microcontroller to reprogram it by using a resistor to pull down the FPGA’s reset pin. I have explained the detailed procedure on my Wiki, in case anyone else has this problem.
Elbert’s Big Brother
Once you’ve exhausted the capabilities of the Elbert, Numato has the next step up the FPGA food chain waiting in the wings: the Mimas V2, which is only $50. The Spartan 6 FPGA in the Mimas has over 5X the available logic elements and 10X the built-in memory of the Elbert. It also comes with a 64MB external DRAM chip, which vastly expands its potential. It should be possible to recreate a lot of famous 8-bit and even 16-bit computers and video game consoles on this board.
Honestly since the Mimas is only $20 more than the Elbert, it might make sense to go ahead and buy it to begin with since it’s a much more capable board.