The project involves designing, building, and testing a Turing Complete 16-bit RISC machine using System Verilog on an FPGA board. Key softwares used include Quartus and Questa/ModelSim.
- RISC Processor Design: Implements a simple RISC processor architecture.
- SystemVerilog Implementation: Written in SystemVerilog hardware description language.
- Simulation and Testing: Includes testbenches for thorough verification of the processor via Questa/ModelSim.
- FPGA Deployment: Configured to run on an FPGA development board (DE1-Soc).
The processor can execute a variety of ARM instructions. The following diagram illustrates the ARM instruction encodings that the machine can run:
- FPGA Board: DE1-SoC development board
- Processor Design: Custom RISC processor implemented in SystemVerilog
- Memory: On-chip memory for instruction and data storage
Utilizing modularization, the processor is designed in SystemVerilog and includes several modules for different components of the processor. The main design files are:
RISC_top.sv
: Top-level module for the RISC processorcpu.sv
: Central Processing Unit moduledatapath.sv
: Datapath modulealu.sv
: Arithmetic Logic Unit moduleinstruction_decoder.sv
: Instruction Decoder modulefinite_state_machine.sv
: Finite State Machine moduleregfile.sv
: Register File moduleshifter.sv
: Shifter module
cpu_tb.sv
: Testbench for the CPUdatapath_tb.sv
: Testbench for the datapathRISC_top_tb.sv
: Testbench for the top-level moduleRISC_check.sv
: Verification module
- A video demonstration of the RISC processor in action voiced by my partner Afeef can be found linked here: https://youtu.be/biTuX5kdb8c
- Enhance the processor design to support more complex instructions.
- Implement pipelining for improved performance.
- Expand the testbench coverage to include more edge cases and scenarios.