CSE 378 Project 2 Update

SMOK 1.0.1

A new SMOK will be released by this afternoon, at the latest. Hopefully by classtime. John has been working incredibly hard to add lots of great UI features. These include (not an exhaustive list):
  1. Limited undo/redo (of connections).
  2. Confirmed deletions
  3. Hierarchical representation. You can build much more complex models now, because you can hide complexity inside of containerized components, such as Control.
  4. File input/output of subcomponents.
  5. Lots of groovy new components, including:
    • Comparator: ever wanted to know if a value was equal to some fixed constant? It's easy now.
    • Control: for encapsulating your ALU control and Datapath control.
    • Passerelle Input/Output: use these inside of a control module for providing connection points to the outside world.

Sloop Components

We've added a total of 5 Sloop components. They are basically pretty similar to standard components, but there are differences:
  1. SloopMemory: allows you to pick an Atari ROM to load into memory.
  2. SloopALU: like other ALUs, but with a few extra inputs & outputs. The functions are: ADD=2, SUB=3, AND=4, OR=5, XOR=6, SLL=7, SRL=8, ROL=9, ROR=10, CMP=11. Mostly these will come straight from your instructions, so you don't need to get too cozy with them.
  3. SloopRegisterFile: like other RegisterFiles except that it can read three values per cycle (register 1, register 2, and the status register) and it can write two values per cycle (the status register (always) and a register number of your chosing (depending on the write control line). Maintaining the status register within the RegisterFile greatly simplifies the datapath design.
  4. SloopMemoryInterface: Includes handling of the status register. It also has a "Byte" control line, that allows you to read a byte or a word (a 6502 word was two bytes!).
  5. SloopIF: Again, we've simplified your job by hiding the PC inside of the instruction fetch unit. To change the PC (eg. during a jump) you need to assert the SetPC (sometimes called "flush") control line and provide the new PC to write... Otherwise, everything is taken care of by magic.

Getting Started

This is a hard assignment. Get started early. Figuring out the control is the hardest part of this assignment. If you do it right, life will be good. We have provided a means to assist your debugging chores. Essentially, we run our own simulation beneath the covers in sync with your simulation. This allows us to check on the progress of your simulation. If it appears that your simulation is doing something wrong, we'll halt it and give you a message. The trace window should help you figure out which instruction you didn't handle correctly. Once you can single step through the first few dozen instructions, you can let it fly by hitting Go. We'll still stop you if something goes wrong. To make things run faster, reduce the Trace level (in the properties dialog).

Teams

You may work in teams of up to two people on this assignment. Each team makes only one turnin, and receives the same grade.


dugan@cs.washington.edu