Introduction

This is a top-level index page, covering my first foray into FPGA programming. All of the experiments use the IceStorm toolchain running on a Mac to program iCE40 FPGAs from Lattice.

The articles exist both to clarify things in my own mind now, and because I think my future self might find explicit instructions for making an LED blinky useful. Who knows, maybe other people will too!

I should say that although the verilog presented here appears to work, these are my first verilog programs, and so are doubtless far from model code.

One article covers the toolchain1, which covers both installing and invoking things

Others cover different development boards: the IceStick2 and HX8K Breakout3 boards from Lattice; a HX1K4 board from Olimex.

Were I starting afresh now, I’d stick to the HX8K board from Lattice. It boasts a significantly more capable FPGA, can be programmed more quickly, and sits nicely on the desk.

Verilog Resources

This is just a random sample of interesting articles which seemed good to me, but I put large error-bars on that judgement.

Introductory articles

Specific designs

Philosophical articles

Wishbone Bus

The Wishbone Bus19 is a standard for connecting different parts of design to each other.

It seems common at OpenCores.

Gisselquist have loads of good articles about it, including:

Clifford Wolf’s PicoRV RISC-V CPU24 has a Wishbone version.