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

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
namesizedirection
Rd4 bitsin
Rn4 bitsin
Rm4 bitsin
Rd_val32 bitsin
Rn_val32 bitsout
Rm_val32 bitsout
new_pc32 bitsin
we1 bitin
clk1 bitin
r032 bitsout
r132 bitsout
r232 bitsout
r332 bitsout
r432 bitsout
r532 bitsout
r632 bitsout
r732 bitsout
r832 bitsout
r932 bitsout
r1032 bitsout
r1132 bitsout
r1232 bitsout
r1332 bitsout
r1432 bitsout
r1532 bitsout
  • Rn_val and Rm_val should always show the values stored in Rn and Rm respectively
  • Registers r0 and r15 should always display the values of the associated registers (primarily for debugging)
  • On the rising edge of clk, if we is 1, Rd_val should be written into register Rd
  • On the rising edge of clk, r15 should store the value on new_pc (you can assume that Rd 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