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.