Lab 4: Fetch Unit Components¶
In this lab, you have two new components to build.
Program Counter Register¶
In this component, no processing goes on. There is a single input signal, and a
single output signal. When the tick
method os caled, you simply copy the
input signal to the output signal pin and you are done.
Instruction Memory¶
This unit is a bit more complicated.
First, the component has a single input pin named PCin
. It has three output
pins labeled PCout, ``opcode
, and opcode2
First, you need to set up an array of uint16_t
data items. The size of this
array should be provided as a second parameter to a new constructor for this
component. That constructor needs to allocate the memory block when an object
is created, using the C++ new operator. You do not need to initialize this
array, but we will need to provide a load method>
Add a new method to the class named load
. This method should receive a string
parameter with the file name for the data file to load into memory. When called, this method should open up
the named file and read the data items, one value per line (text). Copy the data
into the allocated memory array as needed.
The memory unit tick
method is pretty simple. When this method is called,
read the PCin
signal on the input pin, and use that value to index into your
data array. Note that you will need to do this twice, once for the data at the
indicated index, and once more for the next data item. Place these two values
on the two output pins. Pass the input pin PC``value on the outgoing ``PCout
pin as well.
Testing¶
As usual, you should add tests for these new components. Once we have all of this in place, we can begin assembling out machine. That wll be your next lab!