It’s been quite a while since my last post … this is largely due to two things …
1. My day job suddenly exploded (in a good way) … which means more of my spare time thinking about that rather than getting distracted.
2. I got distracted by FPGA’s 🙂
So in my quest for a more powerful embedded processor I stumbled upon the whole FPGA world, for anyone not familiar these are “Field Programmable Gate Arrays” … basically these are a big bucket of logic that you can program to perform specific functions in hardware, hence they can be very performant and do things you wouldn’t be able to acheive with low power embedded CPU’s.
I had looked at FPGA’s before, but they were expensive, difficult to use for the hobbyist (i.e. packages you couldn’t easily hand solder), and incredibly difficult to program.
Well it seems the world has changed…
There are now a range of FPGA’s that are pretty low cost (around £10 to £20) that have pretty good functionality, my SMD skills have improved so hand soldering is an option (although milling my own boards has gone out of the window … more on this later), and come with tools that make them reasonably straightforward to program. I show the Xilinx logo here since they seem to be the most prolific in the low cost and hobbyist space, however there are other offerings from people like Altera and Lattice that are definitely worth looking at also.
To make things even easier there are now a couple of Arduino-like boards around that you can use to experiment.
My favourite is the “Papilio One“, a very simple board consisting of the FPGA, some flash (for storing the “code”) and bits to interface via USB. It’s low cost, easy to use, and you can even run an Atmel CPU core inside it so that it simulates and Arduino, then you can build extra bits in “hardware” to do whizzy things.
My early experiments have centered around doing stuff with VGA, these devices are powerful enough to actually generate a VGA signal on the fly, you can then either create the image by pulling data from RAM (i.e. a bitmap or framebuffer) or you can create images using logic. I’ve built a small “wing” (expansion board for the Papilio One) to do 12-bit colour VGA, and I’ve designed another board to act as a 320×240 3.5″ LCD breakout board … just waiting for that to be deliverered, then I can start playing with LCD’s.
A great inspiration was the “Gameduino” which really shows what can be acheived.
Programming these things is interesting, especially if you’re used to working procedurally … absolutely everything happens in parallel, which is incredibly powerful, and sometimes quite challenging.
More to follow … I think this one will run … at least until I get distracted again 🙂