Assignment 5: Register Files

Assigned: Wednesday, September 21

Due: Wednesday, September 28 by 10:30pm

Submitting your work: Please submit this assignment by email.

Overview

Groups

  • Kamal, Linda, and Sophie
  • Bea and Adam W.
  • Adam H. and Blake
  • Jacob and Hattie
  • Tanner and Charlie
  • Matt and Fengyuan
  • Hamza and Devin
  • Jerry and Eli
  • Giang and Theo
  • Ryan and Sara
  • Maddie and Ana

Collaboration

This assignment should be a learning experience for everyone on the team, so do not “divide and conquer.” You should use pair programming as you build circuits. Work submitted by your team must be your team’s work. You may discuss your design with other groups, but you may not share or show your circuit files for any of the exercises.

Getting Started

Please build your circuit in the starter file.

What to turn in

Please submit your work via email with the subject [CSC 211.01] Assignment 5. Only submit one time for each group. You should attach the file registers.circ containing your implementation for both problems.

Problem 1: A 4-bit register

In the subcircuit called 4-bit register, build a four-bit register from four D flip-flops. Use Logisim’s build-in D flip-flop components, which are available in the explorer pane’s “Memory” category. Your four bit register must have the following inputs and outputs:

output (4 bits)
The four bits currently stored in the register
data (4 bits)
The four bits that should be stored in the register
write_enable (1 bit)
When true, the value on the data input should be written to the register on a falling clock edge.
clock (1 bit)
The clock input

Writing to the register should be controlled by the clock signal with write_enable connected to the flip-flop’s “Enable” pin en (on the bottom of the flip-flop). The value from data should be stored on the falling clock edge, only when write_enable is high. Logisim defaults to rising-edge flip-flops, so you will need to change this in the flip-flop’s attribute panel.

Problem 2: A 4x4 register file

In the subcircuit 4x4 register, build a register file consisting of four 4-bit registers. The register file has the following inputs and outputs:

data (4 bits)
The values to store in the register specified by the write index
output (4 bits)
The values stored in the register specified by the read index
read (2 bits)
The index of the register to display on output
write (2 bits)
The index of the register that should be written when write_enable is set
write_enable (1 bit)
A control line to determine whether the value on data should be written to the register specified by the write index.
clock (1 bit)
The clock signal

Acknowledgements

This assignment, written in collaboration with Jerod Weinman, is derived from work by Janet Davis and is used under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.