CS 202 - Problem Ten: Register file
Due: 04/07/2023
Goals
- Create a critical part of the ARM processor
Objective
For this problem, you will construct a register file for an ARM32 processor. It will contain 16 32-bit registers and will support the ISA we have discussed in class.
Requirements
- To make testing easier, please use register_file_starter.circ (right click to save it).
You may create as many subcircuits as you find necessary. However, your main circuit should be in the reg_file
subcircuit. If you need to rewire main
because you have moved pins in reg_file
around, that is fine, but DO NOT rearrange the pins in main
.
- The circuit will have the follow interface
name | size | direction |
---|---|---|
Rd | 4 bits | in |
Rn | 4 bits | in |
Rm | 4 bits | in |
Rd_val | 32 bits | in |
Rn_val | 32 bits | out |
Rm_val | 32 bits | out |
new_pc | 32 bits | in |
we | 1 bit | in |
clk | 1 bit | in |
r0 | 32 bits | out |
r1 | 32 bits | out |
r2 | 32 bits | out |
r3 | 32 bits | out |
r4 | 32 bits | out |
r5 | 32 bits | out |
r6 | 32 bits | out |
r7 | 32 bits | out |
r8 | 32 bits | out |
r9 | 32 bits | out |
r10 | 32 bits | out |
r11 | 32 bits | out |
r12 | 32 bits | out |
r13 | 32 bits | out |
r14 | 32 bits | out |
r15 | 32 bits | out |
Rn_val
andRm_val
should always show the values stored inRn
andRm
respectively- Registers
r0
andr15
should always display the values of the associated registers (primarily for debugging) - On the rising edge of
clk
, ifwe
is 1,Rd_val
should be written into registerRd
- On the rising edge of
clk
,r15
should store the value onnew_pc
(you can assume thatRd
will never be 1111) - You are restricted to the contents of the Wiring, Gates, Plexers, Arithmetic, and Memory libraries
Submission
Upload your .circ file to Canvas.
Last updated 04/05/2023