CSE 141L Lab # 3 - Design the "Dewey Decimal" architecture

Due May 16 during class.

This lab has two parts:

You should do the lab in groups of up to four people. Four-person groups are encouraged, both because there will be a lot of work, and because it's good to learn to work with others.

Part A

You will design the instruction set architecture (ISA) for an 10-bit (yes, TEN-bit) processor, meaning that the instructions operate on data that is 10 bits long. The instructions will also be 10-bits long. Ten is a strange number of bits to use, but it should make an interesting project.

Let's call a ten-bit object a "Tyte". The computer will have a memory of up to 1024 Tytes (though the implementation you make will probably have only 256 Tytes).

The numbers you need to work with are unsigned (ten-bit) integers. This means that the bit string 0000000000 represents the integer 0, the Tyte 0000000001 represents 1, and so on, up to the largest representable integer, 1111111111, which is the decimal number 1023.

The ISA should be "general purpose", but you will only need to implement the instructions needed for two programs that you will write (in Lab 4):

Your ISA should have a "pause" instruction that halts execution, but leaves the PC ready to execute the next instruction (after the users pushes a "restart" button that will be part of your implementation)

You need to hand in a concise but complete description of your ISA. This should include:

Part B

In Lab 4, you will build your processor in LogicWorks. The "official class technology" uses devices from the libraries listed here, and you should should use the following delays: Note: Although it is possible to build a Mux or Decode out of simpler gates and end up with a device with delay less than 3, please don't bother. It's not that important to get a fast circuit, and it will only make your job more difficult. (One of the problems with LogicWorks is there's a limit on how big the circuit can be!)

How to set the delay

Copy the gate to the circuit.
Select it (by clicking on it)
In the "Simulate" menu, choose "Simulation Params"
Set the number (or the two numbers for clocks).

Timing diagrams

You should set the timing reference lines to the rising edges of clock signal. This is done by going to the "Simulate" menu, choosing "Trigger Setup", and then in the box labelled "Signal Value Condition" put the name of your clock in the "Signal" box, and "1" in the "Value" box. Also check off the "Reference line" item in the "Action" box.

What to do for Lab 3

This exercise is to make sure you have the right timing methodology. Using the official class technology, make a circuit that consists of a D Flip Flop, with the Set and Reset inputs attached to "1"'s, a Clock Oscillator connected to the "C" input, and a binary switch attached to the "D" input. The negated output (Q-bar) should go to a chain of five inverters. (The purpose of this is to slow down LogicWorks' simulations.)

Hand in a copy of the circuit, and a timing chart that shows the three signals: the clock, the switch, and the other output (Q) of the Flip Flop. You should run the clock for about 15 high's and low's of the clock, and during the time the clock is running, you should (by hand) flip the binary switch randomly up and down. The timing chart should show that whatever value is on the "D" input of the Flip Flop when the clock rises is the value that "Q" becomes when the clock falls.