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):
- Limited undo/redo (of connections).
- Confirmed deletions
- Hierarchical representation. You can build much more complex
models now, because you can hide complexity inside of containerized
components, such as Control.
- File input/output of subcomponents.
- 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:
- SloopMemory: allows you to pick an Atari ROM to load into memory.
- 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.
- 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.
- 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!).
- 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