Retrocomputing with Clash

Hardware considerations

Both the text and the code snippets in Retrocomputing with Clash: Haskell for FPGA Hardware Design is agnostic of the reader's choice of FPGA platform and development board. This page collects the peripherals that are used throughout the book; the idea is to use this as a kind of "shopping list" when deciding between development boards.

My personal choice has been Digilent's Nexys A7-50T (based on a Xilinx 7-series FPGA) which has all these peripherals built-in on the board with the one exception of a 4⨯4 keypad. Note however that this FPGA is overkill for what we do in the book, and cheaper options (such as the Basys 3) should work just as well. The A7-50T is just what I have personal experience with.

For the keypad, I've used this PMOD module that can be plugged into any development board with a PMOD connector without requiring any soldering.

All of the online code samples ship with Shake rules for building for the A7-50T. Based on peripheral availability and user contributions, some of the repositories also contains build rules for some other development boards listed below. Note that the Shake rules depend on the proprietary toolchain of the given FPGA vendor which must be installed separately.