There’s a new open source ESP32 + FPGA Board! I recently received a ICE-V Wireless ESP32-C3 + ICE40 FPGA board.

Full disclosure: @QwertyEmbedded reached out via Twitter with a no-strings-attached offer:

Someone mentioned that you might be interested in getting a early proto of the ICE-V wireless board

I practically fell out of my chair! Of course I’m interested!! I knew about the board. I was doing my best not to start yet another project, but I find open source FPGA boards, in particular those with an Espressif ESP32, even more appealing!

Now, admittedly I feel a little bit of split loyalty, as I’m also a volunteer member of the Radiona team that has the awesome ULX3S board, also sometimes in stock at Mouser. With the chip shortage, well - we all know that story. Stay tuned for the ULX4M FPGA board coming soon that plugs into the Raspberry Pi CM4 / Compute Module.

The bottom line is that everyone wins with open source boards. Besides, the ICE-V Wireless is certainly not a direct competitor by any means. It just happens to have and FPGA and ESP32, similar to the ULX3S. But that’s where the similarity ends.

The ULX3S uses the ECP line of Lattice FPGA and has an incredible selection of on-board peripherals: uSD, GPDI/DVI video, FTDI FT231XS, and more.

The ICE-V Wireless uses the Lattice ICE40 FPGA. This is the same chip used by Piotr on his 1bitsquared iCEBreaker which also has an FTDI USB chip. The ICE-V board is priced only a little more, but has no USB controller.

No USB Controller?!?! How can that be? How to program the FPGA? Aha… clever solution here. The Espressif flavor here is the ESP32-C3. It has it’s own, built-in USB controller and JTAG adapter .

@beriberikix kindly pointed out:

It’s not an actual USB device. They just put enough transistors to implement JTAG and a basic serial port. They’re careful to call it a “USB Serial Controller” not a USB peripheral.

I’m not entirely sure what might be missing: if it acts like a serial terminal and can attach as a JTAG debugger, what else might be desired?

The ULX3S has the ESP32 behind the FPGA. This means that the FPGA needs to be configured as a pass-thru. to access the ESP32. There’s also a more recent blog that uses VisualGDB with the passthru.

In contrast, the ICE-V board has the FPGA sitting behind the ESP32. So ya: the ESP32 needs to be configured to pass thru data and control signals to program the FPGA. Clearly this is a completely different architecture.

To round out the existing open source FPGA boards, be sure to also check out the Greg Davill Orange Crab.

There’s also this Humble ICE FPGA with Raspberry Pi RP2040

Regarding the ESP32 toolchain for the ICE-V see ESP32-C3 Getting Started a nice install of the ESP32 toolchain is avilable from the UI in Visual GDB that allows all the features of Visual Studio for single-step debugging, etc: