A single-cycle MIPS processor implementation in Verilog for Vivado.
Project Date: December 2021
-
MIPS_Processor.srcs/sources_1/new/- Verilog source filesMIPS.v- Top-level MIPS processor modulePC.v- Program CounterInstruction_Memory.v- Instruction memory moduleControl_Unit.v- Main control unitRegister_File.v- 32 general-purpose registersALU.v- Arithmetic Logic UnitALU_Control.v- ALU control logicData_Memory.v- Data memory moduleSign_Extend.v- Sign extension unitmux_2to1_5bit.v- 5-bit 2-to-1 multiplexermux_2to1_32bit.v- 32-bit 2-to-1 multiplexer
-
MIPS_Processor.srcs/constrs_1/new/- Constraint filesconstraints.xdc- Pin assignments and timing constraints
-
MIPS_Processor.srcs/sim_1/new/- Simulation filesMIPS_tb.v- Testbench for MIPS processor
- R-type: ADD, SUB, AND, OR, SLT
- I-type: ADDI, LW, SW, BEQ, BNE
- J-type: J (Jump)
- Single-cycle implementation
- 32-bit architecture
- Harvard architecture (separate instruction and data memory)
- Supports basic MIPS instruction set
- Open Vivado
- File -> Open Project
- Select
MIPS_Processor.xpr
- In Vivado, go to Flow Navigator
- Click "Run Simulation" -> "Run Behavioral Simulation"
- The testbench will execute the program in instruction memory
- Click "Run Synthesis" in Flow Navigator
- After synthesis completes, click "Run Implementation"
- Generate bitstream for FPGA programming
Board: Digilent Nexys A7-100T (formerly Nexys 4 DDR) FPGA: Artix-7 xc7a100tcsg324-1
- Clock (100MHz): E3
- Reset (CPU Reset button): C12