FPGAs (Field Programmable Gate Arrays) are powerful devices which can be used for nearly everything, from simple decoding up to fully integrated designs. Nowadays they are all over the place in products because they are cheaper than ASICs in smaller quantities but can be “programmed” in a similar way.
Even in the hobbyists world they are becoming more and more common. A big milestone was the development of the iCE-FPGAs by SiliconBlue, which was aquired by Lattice Semiconductors a few years later. Especially the iCE40-FPGAs are all over the place, because the toolchain for generating the “Bitstream” got open sourced, which makes these FPGAs the first ones with an open source toolchain.
Because I have some projekts in my pipeline which require some FPGAs, I decided to mess around with these. After a bit of searching for development boards, I stumbled across the website of Russell Merrick. His Go-Board looked like a nice fit, but I wanted something with a bit more options on-board. So I asked him for permission to make my own board based on his and surely I got it and modified it to fit my needs. Using his tutorials I even could test things fairly quick and learn the language “VHDL”. So here is the picture of my own FPGA Dev-Board:
I came up with the following features:
- Programmable via USB (e.g. with iCE Cube by Lattice)
- Serial port available on USB
- 8 push button inputs
- 8 LED outputs
- 26 IOs on pin headers (8 of these in PMOD-compatible pinout)
- 10 5V-compatible inputs
- VGA output (RGB with 3bit resolution each)
- I2C with LM75, ADS7828 (8-channel 12bit ADC) with LM35 on Channel 1
- 3 7-Segment displays
The only problem now was mastering VHDL.
It is completely different to other languages like C# or Java. Instead of executing line by line, the whole code is generating a circuit so that everything is executed at once. That way you really need to rethink about writing your code since it is not run on a processor, but translated into real hardware. Quite a challenge, but you’ll get used to it.
For various reasons I will not make tutorials about VHDL here. I use two books for learning the language as well as started with the tutorials on Russells website www.nandland.com. But I’ll link to my own testing-repository here where you can download the schematics for my board as well as the necessary files for the compiler (located in the Firmwares-folder).