Files
imple b008b37d49 Add phase-by-phase tutorial notes
Add a Tutorial tree that mirrors the roadmap from Phase 0 through Linux bring-up.
Each phase and subphase gets a short learning note with consistent sections for
context, goals, new concepts, mental model, learning tasks, pitfalls, tooling,
testing, and references.

The tutorial material is intentionally explanatory rather than implementation
code. It gives a systems-oriented learner enough FPGA, SystemVerilog, RISC-V,
firmware, and Linux bring-up context to approach each roadmap phase without
turning the notes into copy-paste RTL.
2026-04-28 12:11:23 +02:00

1.8 KiB

Phase 1 - ALU + M Unit

Context

This phase builds the arithmetic core of the CPU. The ALU handles simple single-cycle operations; the M unit handles multiplication and division with an explicit handshake.

Goals

  • Build and verify a combinational RV32I ALU.
  • Build and verify a multi-cycle RV32M unit.
  • Learn simulation-first hardware development before system integration.

New Concepts

  • ALU: arithmetic logic unit; performs integer arithmetic, comparisons, shifts, and logic.
  • DSP slice: FPGA hard block optimized for multiplication and arithmetic.
  • Multi-cycle unit: block that takes several clocks to produce a result.
  • Handshake: protocol using signals such as start, busy, done, valid, or ready.

How To Think About It

The ALU is pure combinational decision logic. The M unit is a small protocol machine. Do not force division into the ALU just because it is mathematically an arithmetic operation.

Learning Tasks

  • Understand signed versus unsigned interpretation of the same 32 bits.
  • Work through RISC-V division edge cases by hand.
  • Draw the M-unit state machine before writing RTL.

Pitfalls

  • Implementing a combinational divider and then fighting timing forever.
  • Treating signed comparisons as unsigned or vice versa.
  • Dropping done or accepting a new start at the wrong time.

Tooling And Testing

  • Start with small deterministic test vectors, then add randomized checks.
  • Use waveform inspection to confirm handshake timing, not only final results.
  • Synthesize early to see whether multiply infers DSP resources.

References