Here I am, enjoying nature in a lost forest
Contact: muguruzainigo@gmail.com
Now that the COVID-19 has forced us to stay at home, I am profiting this time to discover a field that I am interested since long time: FPGAs and the new open-source tools for design and flash them.
For those who are not familiar, there is an open-source project called SymbiFlow that provides all the tools for synthesizing Verilog files into bitstream that can be flashed into some FPGAs. This is possible thanks to the reverse engineering that the people involved has done for some Lattice and Xilinx part numbers.
SimbyFlow is divided into different pieces: FPGA documentation, synthesize tool (yosys), place and route tool (nextpnr) and FPGA specific bitstream generator (Project IceStorm, Project X and Project Trellis). All this initiative was started, some years ago, by Claire Wolf who put its time into IceStorm project. The project “aims at reverse engineering and documenting the bitstream format of Lattice iCE40 FPGAs and providing simple tools for analyzing and creating bitstream files”, quoting its webpage.
Nowadays, we can flash bitstreams generated by open tools for Lattice iCE40 and ECP5 family, and for Xilinx 7 Series.
There has been also a blossom of open-hardware boards that contains this particular FPGAs. The main goal of those boards is to teach and tinker using open tools.
As an embedded engineer, I would love to use these tools and make some projects at home. As I am not normally satisfied with simulators (sorry I am a hardware guy ¯\_( ͡❛ - ͡❛)_/¯
), I have started searching for a development board that is affordable and would allow me to plug sensors and actuators.
I have not mentioned it before, but I am also interested in the open-source softcores that are available out there, like the new RISC-V based ones. So I wouldn’t mind to implement different softcores and test them into my future FPGA dev board. As there are many tools, cores, projects on going, sometimes is difficult to track them and to see how you can mix them into your personal projects.
The idea is to select a cheap development board that would allow me to make some small projects. Apart from the price, I consider essential the support or the tutorials that the designers have made, so the learning curve gets softer. A third point to consider is the chance of using sensors and actuators. As I am interested in robotics, I find appealing to attach different piece of hardware to development boards.
I am going to describe some of them and state the pros and cons of each one.
IceBreaker is a nice development board that contains an iCE40UP5K Lattice FPGA. This part number is part of the Ultra Plus family and it contains some hard cores, such as 8 DSPs, I2C or SPI controllers. It contains 5280 logic cells and 1024 Kbit of RAM. In addition, the board is equipped with 128 Mbit of Flash memory (to store the bitstreams you create) and a FTDI 2232 chip for managing the USB communications and connect it to your computer. Regarding IOs, it has PMOD connectors and RGB LED connector, that is routed to the FPGA. You can get some PMOD board they have create to try some demos.
This board does not have external RAM, so it could be a downside if you plan to synthesize a softcore and run, for instance, a big application on it.
Personally, from the pictures I have seen, I like the board size and shape. It costs around 65€.
TinyFPGA Bx is a super small board containing a iCE40LP8K Lattice FPGA. This FPGA contains 7680 logic cells and 128 Kbits of internal RAM. It is really minimalist, contaning the FPGA itself, an USB controller and a memory that stores the bootloader. This bootloader enables to load new designs through the USB port. It exposes 24 IOs and 3v3 pin for feeding stuff you want to connect. It is designed for plugging it into a motherboard. The cost of the board is around 38$.
I tend to prefer boards where more pins are exposed.
The Radiona ULX3S is currently in crowdsupply campaign and will be available in June, starting from 99$. This board, is more oriented to computing and media. You can select among three different type of Lattice LFE5U part number: with 12K, 44K or 84K LUTs, more than the previous boards. It also contains 3744 Kbits of internal RAM memory and 32 MB of external RAM. This means you will be able to run heavier applications on the synthesize softcore.
This board looks much more like a SBC, and it contains many additional ICs and interfaces attached to the FPGA: 32 Mbit Flash memory, video and audio output, ADC, antenna or user LEDs. It also exposes many IOs.
Just you to know, you can see some super cool demos in the crowdsupply video or in its webpage, for instance, arcade simulators or logic sniffer.
The scope of this board and my aim is different, so I think is not the best of the candidates. If want to go deeper in softcores, I think this is the appropriate board to own.
This is the last board I have considered. The Alhambra II board is the type of board I am more used to it. It looks much more to a SBC, where many GPIOs and ports are exposed. The board contains a iCE40HX4k, that only contains 352o LUTs and 80 Kbits of internal RAM. For flashing the board, it relies on the FTDI 2232H chip.
What I like the most of this board is that, even though it does not have a lot LUTs comparing to the other boards, it is designed for makers. It contains Arduino compatible pins, and ADC chip, 3v3 and 5v source pins, and the best, a lot of tutorials! You can learn FPGA and Verilog basics or how to interface with real hardware.
Due to this, I have bought one Alhambra II board today! So now is time to get some additional stuff to attach to it! Let’s see what I am able to do with this piece of hardware. I hope that in short I can upload another blog entry showing the things I have achieved.