- 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.vandForwardingMultiplexerB.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.
