Project F

News: August 2021

Published · Updated

Project F news is your monthly bowl of FPGA goodness with tasty tips and links from other developers mixed in. August saw my first circle drawn, new graphics designs for iCEBreaker, improved build instructions, and the first draft of a new post covering animated graphics and double buffering.

For more frequent updates on new blog posts and FPGA designs, follow @WillFlux@mastodon.social and @WillGreen (GitHub). You can also find me on 1BitSquared Discord.

Read the September 2021 news or see the news archive.

Animated Shapes

The final part of the FPGA Graphics series made a draft appearance this month: Animated Shapes.

We’ve already seen animation with Hardware Sprites, but double buffering gives us maximum creative freedom with fast, tear-free animation. Doubling our memory requirement is painful, but having the freedom to draw smoothly without tearing is liberating. I am still working on the iCEBreaker version with SPRAM and will add some more demos in September.

If you create your own design with the framebuffer, let me know, and I’ll share it on the blog.

Bounce Single Buffer

New iCEBreaker Designs

iCEBreaker is now supported by 320x180 16-colour designs from Lines and Triangles and 2D Shapes. A framebuffer requires one of the four SPRAM blocks, giving you accelerated 2D drawing while leaving plenty of memory for software.

Before you dismiss 320x180 as too low-res, consider the Amiga demo Eon by TBL is 320x180, Doom is 320x200, and Neo Turf Masters is 304x224 (and my word is it pretty).

You can see the iCEBreaker rendering concentric circles at 320x180 in the photo below.

Concentric Circles

This month, I added a circle drawing module: it requires no multiplication and easily meets 25 MHz timing on iCE40UP. It will be joined by a filled version soon. Read more in 2D Shapes and find the design in the Verilog library on GitHub: draw_circle.sv.

I looked into implementing ellipses in hardware, but they’re significantly more logic intensive, with multiplication and 48-bit vectors required (assuming 16-bit coordinates). You can always squash and rotate a circle instead.

Concentric Circles

Improved Build Instructions

One of the big barriers to new FPGA developers is building and learning from other projects. Too often, you get a heap of modules, makefiles, and scripts with no explanation of what’s what.

I want to lead by example, so I’ve improved build instructions in the Project F git repo. For example, check out the latest version of the Hardware Sprites README.

FPGA and RISC-V links that caught my eye:

For more great links, try Recommended FPGA Sites.

And Finally: Tech That Didn’t Take Off

All from the Twitter account of Dana Sibera.

Read the September 2021 news or see the news archive.

Sponsor Project F
If you like what I do, consider sponsoring me on GitHub.
I use contributions to spend more time creating open-source FPGA designs and tutorials.