Problem 1: CPU.circ
Build a 4-bit single cycle CPU that can implement the given instructions.
Instruction Format
Our CPU will be using fixed length instructions. Our CPU will also have two types of instruction formats: R-type and I-type. In R-type instructions both operands come from registers. In I-type instructions, the first operand comes from a register and the second will be contained within the instruction.
R-Type
Name |
Bits |
Description |
OpCode |
15 12 |
Determines what operation should be performed |
C |
11 8 |
The destination register. The C in RegC = RegA OP RegB |
A |
7 4 |
The first source register. The A in RegC = RegA OP RegB |
B |
3 0 |
The second source register. The B in RegC = RegA OP RegB |
I-Type
Name |
Bits |
Description |
OpCode |
15 12 |
Determines what operation should be performed |
C |
11 8 |
The destination register. The C in RegC = RegA OP Imm |
A |
7 4 |
The first source register. The A in RegC = RegA OP Imm |
Immediate |
3 0 |
The second source register. The Imm in RegC = RegA OP Imm |
Instructions
Operation |
Encoding (The value in the OpCodeField) |
Description |
STOP |
0000 |
The CPU ceases execution |
NOP |
0001 |
Do nothing |
LOAD |
0010 |
RegC = Immediate |
MOVE |
0011 |
RegC = RegA |
ANDR |
0100 |
RegC = RegA AND RegB |
ANDI |
0101 |
RegC = RegA AND Immediate |
ORR |
0110 |
RegC = RegA OR RegB |
ORI |
0111 |
RegC = RegA OR Immediate |
XORR |
1000 |
RegC = RegA XOR RegB |
XORI |
1001 |
RegC = RegA XOR Immediate |
NOT |
1010 |
RegC = NOT RegA |
NEGATE |
1011 |
RegC = -RegA |
ADDR |
1100 |
RegC = RegA + RegB |
ADDI |
1101 |
RegC = RegA +Immediate |
SUBR |
1110 |
RegC = RegA RegB |
SUBI |
1111 |
RegC = RegA Immediate |
Inputs
Pin |
Size (in bits) |
Explanation |
Instruction |
16 |
The instruction located at Instruction_Address |
ClkIn |
1 |
The Clock. Connect this to the clock ports of your registers/flip-flops. Do nothing else with this. |
Outputs
Pin |
Size (in bits) |
Explanation |
Instruction_Address_Out |
5 |
The address of the instruction you want to execute |
Reg0-15 |
4 |
The values in the register file. This has already been connected for you |
CPU Components
Your CPU should have
- A Program Counter (PC)
- This stores and keeps track of what instruction you are on
- Instruction Decoder
- This is a bunch of combinational logic that sets the control signals inside of your CPU
- Register File
- A bunch of registers as well as ways to specify which ones you want. This has already been created for you.
- The only outputs of the register file that you are allowed to use are A_Out and B_Out. The rest are for testing purposes and should not be used. Using them will result in a 50% penalty in your grade.
Only logged in customers who have purchased this product may leave a review.
Reviews
There are no reviews yet.