# FPGA & RISC-V Tutorials

Tutorials to get you started and improve your design skills. See also **Recommended FPGA sites**.

## FPGA Graphics

Learn graphics at the hardware level and improve your FPGA design skills.

- Beginning FPGA Graphics - video signals and basic graphics
- Racing the Beam - simple demo effects with minimal logic
- FPGA Pong - recreate the classic arcade on an FPGA
- Display Signals - revisit display signals and meet colour palettes
- Hardware Sprites - fast, colourful graphics for games
- Framebuffers - bitmap graphics featuring Michelangelo’s David
- Lines and Triangles - drawing lines and triangles
- 2D Shapes - filled shapes and simple pictures
- Animated Shapes - animation and double-buffering

## RISC-V Assembler

New for 2024! Get comfortable with RISC-V assembler.

- Arithmetic
- Logical
- Shift
- Load and Store
- Branch and Set
- Jump and Function
- Multiply and Divide
- Assembler Cheat Sheet

## Hello FPGA

An introduction to FPGA development and Verilog with the Digilent Arty or Nexys Video boards.

- Part 1: Hello Arty 1 & Hello Nexys 1
- Part 2: Hello Arty 2 & Hello Nexys 2
- Part 3: Hello Arty 3

## Maths and Algorithms

Learn about numbers and put maths to work in Verilog algorithms.

- Numbers in Verilog - introduction to numbers in Verilog
- Vectors and Arrays - working with Verilog vectors and arrays
- Multiplication with DSPs - efficient FPGA multiplication
- Fixed-Point Numbers - precision without complexity
- Division in Verilog - divided we stand

## FPGA How To

Handy recipes for solving FPGA problems. See the Tools page for FPGA dev and testing tools.

### Hardware & Devices

- SPRAM on iCE40 FPGA - use SPRAM with Yosys and compare it with Block RAM
- Memory Types - understand FPGA memory types, including BRAM, HBM, SRAM, and DRAM
- Initialize Memory in Verilog - use $readmemh and $readmemb to initialize RAM or ROM
- Video Timings: VGA, SVGA, 720p, 1080p - work with standard monitors and TVs

### Maths

See the new **Maths Tutorials** for topics including vectors, fixed-point numbers, division, and DSPs.

- Sine & Cosine - lookup sine and cosine from ROM
- Square Root - calculate square roots for integers and fixed-point