CPSC220: Introduction to Computer Architecture (Fall 2014)

Assignment #7

Due by the start of class on Monday, November 10

Reading and Tools

Register Files

In this assignment, you will build a 32-bit, 32-register file. Ideally, I'd love to have everyone construct this from the logic gates up, constructing low-level components and composing them into higher-level components. However, Logisim has some practical limits on how many gates it can simulate at once, and a full-size register file is too bg for it to handle (it starts to fail in bizarre and very frustrating ways).

We'll get close, though, and in the end, you will have a complete simulation. You will make two files here: register_32.circ and regfile_32.circ. The former will be an implementation of a 32-bit register, from the gate level up. The latter will be a 32-register file, though you'll have to use Logisim's built-in "register" component for this part.

The register (register_32.circ):

You'll construct this by building five components:

  1. Implement an S-R latch in Logisim.

  2. Use your S-R latch to implement a D-latch, as described on pp. C50–54

  3. Use your D-latch to build a rising edge D flip-flop (a "D-flop").

  4. Use your D-flop to build an 8-bit register.

  5. Use your 8-bit register to build a full, 32-bit register.

The register file (regfile_32.circ)

  1. Construct a file of 32 registers. Again, you cannot use your own register circuit for this. While that would be extremely cool, the resulting implementation would have over 10000 gates, and this is too much for Logisim to handle. Instead, use the built-in register component: 32-bit, rising edge (note that there is an extra input on the bottom right labeled "clear", which you may ignore).

Turn in:

To hand in your files: