P10: Register file
Due
2026-04-08T23:59
2026-04-08T23:59
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_valandRm_valshould always show the values stored inRnandRmrespectively- Registers
r0andr15should always display the values of the associated registers (primarily for debugging) - On the rising edge of
clk, ifweis 1,Rd_valshould be written into registerRd - On the rising edge of
clk,r15should store the value onnew_pc(you can assume thatRdwill never be 1111) - You are restricted to the contents of the Wiring, Gates, Plexers, and Memory libraries
Submission
Upload your .circ file to Gradescope.