Project 2: cpu2214
CPU
Due by midnight, Saturday 4/24
For this project, you will be building a small single- cycle CPU. Your CPU will be capable of running real programs (with conditionals, function calls, etc), outputting numbers, and even printing things to a screen and accepting keyboard input. You know, like a real computer!
Project overview
The cpu2214 architecture is a 16-bit architecture with some similarities to MIPS. It is a single-cycle Harvard architecture machine.
You can get partial credit for broken instructions, or for pieces of circuitry for an instruction that isn’t implemented. However, a terrible strategy is to “try to get a little of everything done.” I don’t know who keeps teaching you to do this but you should stop. It’s much better to understand 70% of the project well than to understand all of it poorly.
The cpu2214 ISA
Keep this open alongside these details:
Project Details
Click the link above for all the juicy implementation details.
Logisim Hints
Ways to use Logisim more effectively, letting you work quicker.
Test Programs
Assembled programs for you to load into your machine’s ROM to test it.
Submission details
Your CPU can look any way you like, BUT IT MUST HAVE THE FOLLOWING THINGS ON ONE SCREEN IN THE MAIN CIRCUIT:
The ONE clock component that will control the entire CPU
The Program ROM component
The Data RAM component
The output display digits The halt LED
The TTY and keyboard
Kinda like this:
But with, like, wires and tunnels and a whole CPU hooked up to them.
You will submit a Logisim circuit file named username_proj2.circ where username is your
Pitt username. For example, I would name mine jfb42_proj2.circ .
Submit here as usual.
Grading Rubric
The points break down as follows:
[10 points]: Submission and style
[5]: You submitted your project properly (follow the directions above).
[5]: Your circuit is split into components, and you’ve made it easy to grade.
This is the “grader is mad at you because your circuit is a mess” category.
You can lose points for e.g.
using few/no tunnels
putting everything on the main circuit
having a bunch of blue X wires or red error wires all over the place
You can help the grader by:
using short, but descriptive tunnel names
color-coding tunnels by similar purpose (e.g. blue for control signals, red for register values etc.) using the text tool to put “comments” in confusing places
[90 points]: The CPU
[40 points] for building the CPU components other than the control
[8] Display/Halt LED [10] Register File [5] ALU
[12] PC FSM
[5] TTY/Keyboard support circuitry
[50 points] for implementing the control for each instruction
[2] Halting ( hlt )
[4] Display ( put )
[6] Loading immediates ( li, lui )
Up to here is a 62
[6] Load/store ( ld, st )
[6] Basic ALU ( add, sub, and, or, not, shl, shr )
Up to here is a 74
[4] Immediate ALU ( adi, sbi, ani, ori, sli, sri )
[4] Simple jumps ( j , jr )
Up to here is an 82
[8] Conditional branches ( bltz, bgez, beqz, bnez )
[4] Jump and link ( jal )
Up to here is a 94
[4] TTY output ( out , oui ) [2] Keyboard input ( in )
© 2016-2021 Jarrett Billingsley
⬅