Buckets:
| Name | Size | Uploaded | Xet hash |
|---|---|---|---|
| .git | 818 items | ||
| CA 1 | 2 items | ||
| CA 2 | 19 items | ||
| CA 3 | 42 items | ||
| CA 4 | 53 items | ||
| EXTRA | 449 items | ||
| .DS_Store | 6.15 kB xet | dfc99bb3 | |
| .gitignore | 9 Bytes xet | b52590c2 | |
| LICENSE | 1.07 kB xet | d784e870 | |
| README.md | 7.06 kB xet | 88c65989 |
Computer Architecture Projects
This repository contains four Verilog-based projects completed as part of the Computer Architecture course at the University of Tehran. These projects gradually build up the complexity of processor design, starting from a simple arithmetic unit (divider) and advancing to multi-cycle and pipelined RISC5 processor designs.
Project Structure
CA 1: Divider Implementation
In this project, a binary divider is implemented using Verilog to perform division on two 10-bit binary numbers.
Key Concepts:
- Binary Division: The project implements the classic algorithm for division in binary, where a dividend is divided by a divisor, producing a quotient.
- Overflow Handling: Careful consideration is given to prevent overflow errors, which occur when the result exceeds the number of bits allocated.
- Division by Zero: A specific mechanism is designed to handle the division by zero, setting a flag or returning a predefined error code.
- Synchronous Design: The division logic is implemented synchronously, where the operations are governed by a clock signal, ensuring consistent timing.
Learning Outcomes:
- Understanding the basics of binary arithmetic and how division differs from addition and multiplication.
- Exploring edge cases such as overflow and division by zero that need to be handled in hardware logic.
- Learning how to use control signals in Verilog for managing different stages of a division process.
CA 2: Single-Cycle RISC5 Processor
In this project, you will design a single-cycle RISC5 processor that executes each instruction within a single clock cycle. A single-cycle processor completes an entire instruction, from fetch to write-back, in one cycle.
Key Concepts:
Single-Cycle Architecture: The processor fetches, decodes, executes, accesses memory, and writes back results in a single clock cycle, requiring each instruction to complete in one go.
Instruction Set Architecture (ISA): The processor supports the RISC5 instruction set, which includes:
- R-Type (register-register operations like
add,sub,and,or) - I-Type (immediate operations like
addi,lw) - S-Type (store operations like
sw) - B-Type (branch operations like
beq,bne) - U-Type (upper immediate operations like
lui) - J-Type (jump operations like
jal)
- R-Type (register-register operations like
Datapath Design: The single-cycle processor has a datapath that connects various functional units (ALU, register file, memory), ensuring each unit operates within one clock cycle.
Control Unit: A control unit is designed to generate appropriate control signals that direct the operations of the processor for each instruction.
Learning Outcomes:
- Understanding how to implement control signals for a simple instruction set.
- Learning the limitations of single-cycle processors, such as the need for all instructions to take the same amount of time, which can lead to inefficient clock speeds for complex operations.
- Gaining practical knowledge of datapath design for processors.
CA 3: Multi-Cycle RISC5 Processor
This project builds upon the single-cycle design by implementing a multi-cycle RISC5 processor. In a multi-cycle processor, instructions are broken down into multiple steps, each taking one or more clock cycles, allowing for more efficient resource use and shorter cycle times.
Key Concepts:
- Multi-Cycle Architecture: Unlike the single-cycle design, where each instruction must complete in one clock cycle, the multi-cycle processor allows each instruction to be broken down into several stages, such as instruction fetch, decode, execution, memory access, and write-back, each taking a cycle or more.
- Cycle Efficiency: By spreading an instruction over multiple cycles, the critical path (the longest delay in the datapath) is shortened, allowing the clock to run faster, improving overall efficiency.
- Resource Sharing: Multi-cycle processors reuse hardware resources like the ALU or memory over several cycles, which reduces hardware complexity.
Learning Outcomes:
- Gaining a deep understanding of control sequencing in a multi-cycle processor, as different stages need to be carefully orchestrated over time.
- Learning about resource efficiency in hardware design, as resources are shared across different stages rather than being duplicated for each cycle.
- Implementing state machines to manage the transitions between stages of instruction execution.
CA 4: Pipelined RISC5 Processor
In this project, the processor is extended to include pipelining, a technique used in most modern processors to improve instruction throughput by overlapping the execution of multiple instructions.
Key Concepts:
- Pipelining: This concept allows the processor to start executing a new instruction before the previous one has finished, by dividing the processor into stages (fetch, decode, execute, memory access, write-back) and passing instructions through these stages in parallel.
- Hazards: Pipelining introduces hazards such as:
- Data Hazards: Occur when instructions depend on the results of previous instructions still in the pipeline. Solutions include data forwarding and stalling.
- Control Hazards: Occur when the pipeline makes decisions based on branch instructions. Solutions include branch prediction and delayed branching.
- Instruction Throughput: The benefit of pipelining is that the instruction throughput increases, meaning that the processor can complete more instructions per unit of time.
Learning Outcomes:
- Understanding how to implement pipelining in a processor design, dividing instructions into distinct stages that operate in parallel.
- Learning how to manage pipeline hazards (data hazards, control hazards) through techniques such as stalling, forwarding, and branch prediction.
- Gaining insights into how modern CPUs leverage pipelining to maximize instruction throughput and overall performance.
How to Run
- Clone the repository to your local machine.
- Navigate to the appropriate project directory (CA1, CA2, CA3, or CA4).
- Compile and simulate the Verilog code using your preferred Verilog simulator (e.g., ModelSim, Verilator).
- Follow the specific instructions in each project folder for running the test cases and observing the outputs.
Directory Structure
- CA 1/: Contains Verilog code and documentation for the binary divider.
- CA 2/: Contains Verilog code and documentation for the single-cycle RISC5 processor.
- CA 3/: Contains Verilog code and documentation for the multi-cycle RISC5 processor.
- CA 4/: Contains Verilog code and documentation for the pipelined RISC5 processor.
- EXTRA/: Additional resources and reports.
License
This project is licensed under the MIT License - see the LICENSE file for details.
- Total size
- 6.69 GB
- Files
- 45,738
- Last updated
- Sep 12
- Pre-warmed CDN
- US EU US EU