- Summary: This project, part of CMPEN331 at Penn State University, involved implementing a 32-bit operating pipelined CPU with forwarding. The CPU design was optimized to execute basic arithmetic and logical operations including ADDITION, SUBTRACTION, OR, AND, and XOR.
- Tools Used: The CPU was designed using Verilog, a hardware description language used for electronic system design. The implementation focused on efficient pipelining and included forwarding for enhanced performance.
-
Alu.v
: The Arithmetic Logic Unit (ALU) Verilog file, responsible for performing the arithmetic and logical operations. -
AluMux.v
: A multiplexer Verilog file associated with the ALU for selecting operands. -
ControlUnit.v
: The Verilog file for the Control Unit, which interprets instructions and generates control signals for the CPU operations. -
DataMemory.v
: This file contains the implementation of the data memory module in Verilog. -
DataPath.v
: The Data Path Verilog file, integrating various components like ALU, registers, and control unit for data processing. -
EXEMEMPipelineRegister.v
: A Verilog file for the execution-memory pipeline register, part of the CPU's pipelining mechanism. -
ForwardingMultiplexerA.v
andForwardingMultiplexerB.v
: Implement the forwarding multiplexers, crucial for handling data hazards in the pipeline. -
IDEXEPipelineRegister.v
: Implements the ID/EXE pipeline register, holding instruction and data between the Instruction Decode and Execution stages. -
IFIDPipelineRegister.v
: The IF/ID pipeline register file, storing data between the Instruction Fetch and Instruction Decode stages. -
ImmediateExtender.v
: A module for extending immediate values used in instructions. -
InstructionMemory.v
: Contains the implementation of instruction memory, storing the instructions to be executed. -
MEMWBPipelineRegister.v
: The MEM/WB pipeline register, used in the final stages of the pipeline. -
PcAdder.v
: A program counter adder module, responsible for calculating the next instruction address. -
ProgramCounter.v
: The module implementing the program counter, keeping track of the current instruction address. -
RegisterFile.v
: Implements the CPU's register file, storing and providing access to the processor's registers. -
RegrtMultiplexer.v
: A multiplexer module for the register target, used in determining the correct register for data write-back. -
WriteBackMultiplexer.v
: This Verilog file implements a multiplexer for the write-back stage, selecting the correct data to be written back to the register file. -
testbench.v
: The testbench Verilog file for simulating and testing the CPU design and its operations. -
Project Report.pdf
: The comprehensive project report detailing the CPU design, its architecture, the implementation process, and the outcomes. Includes schematics and waveform analyses demonstrating the CPU's functionality.
- Project Insights: The project successfully demonstrates the implementation of a pipelined CPU optimized for recall and speed. It highlights the challenges and intricacies involved in designing and simulating a CPU with basic operation capabilities in a pipelined architecture.
This project underscores the practical aspects of computer architecture and digital system design, emphasizing the role of pipelining and forwarding in enhancing CPU performance.