[John] wanted a project to help him learn more about FPGAs. So he started with his wooden clock — made with an Arduino — and ported it over to a Lattice FPGA using Icestorm. What’s nice is that he takes you through the steps he used to simulate the design using the Falsted simulator and then realizing it in the FPGA. Since he’s just starting out, it is a good bet he ran into the same rough edges you will (or did) and sometimes that can really help get you over the hump. You can see a video below, and the code for the project is on GitHub.
For example, after mocking up a circuit design in Falstad he realized he could make one large counter instead of several modules, and he contrasts that to a more modular approach. He also ran into a feature that was simple for the Arduino but difficult for the FPGA. He got it working, but it took some optimization effort to make everything fit in the relatively small FPGA he was using.
The original motivation for [John] was seeing how [Mattvenn] created a custom peripheral for the RISC-V CPU. In that case, you have a whole CPU at your disposal, but we agree that it was wise not to start with that as a first project.
We also liked the approach of thinking about the logic first and then moving on to the Verilog. Granted, if you have a lot of experience it is customary to skip that step and just visualize your desired logic in Verilog, but that comes with experience.
We’ve written a lot about the Icestorm project in the past, including our own getting started tutorials. But sometimes having a choice of examples and starter projects can make things easier.