Overview
The design preserves a simple single-cycle datapath for normal instructions while offloading multiplication and division to a synchronized multicycle unit. Dedicated start, busy, and done handshakes prevent the processor from advancing before a long arithmetic operation has completed.
Implementation
Modules include instruction and data memory, register file, ALU, control and immediate-generation logic, branch handling, multiplexers, program counter, and write-back selection. The multiplier uses Idle, Execution, and Completion states and supports MUL, MULH, MULHSU, MULHU, DIV, DIVU, REM, and REMU.