This project is a Verilog implementation of an ARM single-cycle processor, based on the architecture described in Harris & Harris's Digital Design and Computer Architecture. It was developed as part of the EE446 course at Middle East Technical University (METU).
This processor implements a single-cycle ARM datapath and supports the following instruction set:
- Arithmetic & Logic:
ADD,SUB,AND,ORR,CMP
- Data Movement:
MOV(register),MOV(immediate)
- Memory Access:
STR,LDR
- Control Flow:
B,BL,BX
Additional instructions beyond the base design:
CMP(compare without storing result)BX(branch and exchange)BL(branch with link — used for subroutines)
Key modules implemented in Verilog include:
Datapath.v– Main datapath with ALU, register file, and memory interfaceALU.v– Arithmetic Logic UnitController.v– Generates control signals based on opcodeRegister_file.v– 16-register bank with read/write supportMemory.v– Data memoryInstruction_memory.v- Instruction memoryMux*.v– Multiplexers (2-to-1, 4-to-1, etc.)shifter.v– Logical shift left/right unitMSSD.v– seven segment display module for nexys a7 fpga board.
The processor was tested using Cocotb testbenches and synthesized for functionality on FPGA (Nexys A7 board).
- Functional simulation with ModelSim / Icarus Verilog
- Inputs: switches and buttons
- Outputs: seven-segment displays for observing results
