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.
- Pushbuttons
- (Two-state) switches
- LEDs
- Seven-segment display
- Keypad (the book uses 16 keys so 4x4 minimum size is preferred)
- Serial (usually provided via the USB connection used for uploading FPGA configuration)
- VGA out, either directly or via an HDMI encoder
- PS/2 keyboard input, or a USB HID-to-PS/2 translator
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.
- Digilent Nexys A7-50T (Xilinx Artix 7)
- Digilent Basys 3 (Xilinx Artix 7)
- Papilio One (Xilinx Spartan 3)
- Papilio Pro (Xilinx Spartan 6)
- DE0-Nano (Intel Cyclone IV)
- Arrow DECA (Intel MAX 10)